<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/55ae3c40fdd4100ff1fc00d43b7ad6cc79adfe38">https://github.com/macports/macports-base/commit/55ae3c40fdd4100ff1fc00d43b7ad6cc79adfe38</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 55ae3c40fdd4100ff1fc00d43b7ad6cc79adfe38
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Thu Nov 10 22:10:07 2016 +0100
<span style='display:block; white-space:pre;color:#404040;'> ReleaseProcess: rewrap, layout fixes
</span>---
portmgr/ReleaseProcess | 211 ++++++++++++++++++++++++++++---------------------
1 file changed, 122 insertions(+), 89 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/portmgr/ReleaseProcess b/portmgr/ReleaseProcess
</span><span style='display:block; white-space:pre;color:#808080;'>index 968d155..b9618a0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/portmgr/ReleaseProcess
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/portmgr/ReleaseProcess
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,53 +29,61 @@ The following steps to a release are documented in more detail below:
</span>
=== Create a Release Branch ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-For each major release (i.e. 1.9.x, 2.0.x, etc.) an appropriate branch is created with
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-a consistent name. To do this, two things are required:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For each major release (i.e. 1.9.x, 2.0.x, etc.) an appropriate branch is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+created with a consistent name. To do this, two things are required:
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Choose the git revision from which to create the branch, most likely based off master.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Choose the git revision from which to create the branch, most likely based
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ off master.
</span> * Create the branch (e.g. release-2.0) with git. The following commands assume
the remote "origin" points to macports/macports-base on GitHub.
git branch release-2.0 origin/master
git push origin release-2.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-The actual release, alpha or beta releases, release candidates, and any point releases will all
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-live on this branch. Releases of any kind will need to be tagged appropriately and point to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-commits on this branch.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The actual release, alpha or beta releases, release candidates, and any point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+releases will all live on this branch. Releases of any kind will need to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+tagged appropriately and point to commits on this branch.
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Only this base repository, not the ports tree kept in another repository, will be branched for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-a given release.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only this base repository, not the ports tree kept in another repository, will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+be branched for a given release.
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Once master is to be used for development of the next major version, increase its version information to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-indicate it's moved past the release version by setting the patch-level version to 99, e.g. 2.0.99 in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-config/macports_version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once master is to be used for development of the next major version, increase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+its version information to indicate it's moved past the release version by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+setting the patch-level version to 99, e.g. 2.0.99 in config/macports_version.
</span>
=== Prepare the code for Release ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-In preparation for a release, several things should be completed within the code:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Update the file ChangeLog in both trunk and the release branch to reflect the appropriate changes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Update the file config/macports_version with the target release number. The content of this file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is recorded as the MacPorts version at MacPorts build time, as displayed by the port command, and it's
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- also used by the selfupdate procedure to determine whether a newer version of code is available.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- It should be different between trunk and the release branch, the former greater to differentiate it from
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- the latter.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Preserve config/mp_version and config/dp_version at the 1.800 or 1.710 fixed values, respectively,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if selfupdate backwards compatibility with old MacPorts installations is still desired.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In preparation for a release, several things should be completed within the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+code:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Update the file ChangeLog in both trunk and the release branch to reflect the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ appropriate changes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Update the file config/macports_version with the target release number. The
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ content of this file is recorded as the MacPorts version at MacPorts build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ time, as displayed by the port command, and it's also used by the selfupdate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ procedure to determine whether a newer version of code is available. It
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ should be different between trunk and the release branch, the former greater
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to differentiate it from the latter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Preserve config/mp_version and config/dp_version at the 1.800 or 1.710 fixed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ values, respectively, if selfupdate backwards compatibility with old MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ installations is still desired.
</span> (see https://trac.macports.org/changeset/43571/trunk/base or ce8a77c)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Update the autoconf 'configure' script through the provided base/autogen.sh script once the version number
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- in mp_version has been changed, since the former reads the latter.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Make sure that these and any other changes or bug fixes are made on and/or merged between the release branch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- and trunk as needed. For instance, if you've made changes to ChangeLog only on the release branch,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- those changes should be merged back into trunk as well.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Update the autoconf 'configure' script through the provided base/autogen.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ script once the version number in mp_version has been changed, since the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ former reads the latter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Make sure that these and any other changes or bug fixes are made on and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ merged between the release branch and trunk as needed. For instance, if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ you've made changes to ChangeLog only on the release branch, those changes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ should be merged back into trunk as well.
</span>
=== Tag the Release ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Once the release is ready, it must be tagged so that the release components may be fetched in the future,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-to ensure replicability. Generally, a release candidate is first tagged and built. When and if it is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-approved as the actual release, an additional tag is created that names the same sources.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once the release is ready, it must be tagged so that the release components may
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+be fetched in the future, to ensure replicability. Generally, a release
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+candidate is first tagged and built. When and if it is approved as the actual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+release, an additional tag is created that names the same sources.
</span>
Tagging conventions:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -84,16 +92,18 @@ Tagging conventions:
</span> * v2.0.0 (tagged release 2.0.0)
* v2.0.1 (2.0.1 release)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-We first create an annotated tag pointing to the release branch to make up the final release. Annotated
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-tags preserve who made the tag and when. Additionally the tag should be signed with GPG by using the `-s`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-flag in order to allow later verification of the signature.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+We first create an annotated tag pointing to the release branch to make up the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+final release. Annotated tags preserve who made the tag and when. Additionally
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the tag should be signed with GPG by using the `-s` flag in order to allow later
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+verification of the signature.
</span>
git tag -a -s v2.0.0 release-2.0
git push origin v2.0.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Although only base repository is branched and tagged for a given major release, we also create a separate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-tag in the ports tree at the time the final release tag is created for a major release (x.y.0). This
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-intends to provide a set of ports intended to work with that release.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Although only base repository is branched and tagged for a given major release,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+we also create a separate tag in the ports tree at the time the final release
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+tag is created for a major release (x.y.0). This intends to provide a set of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ports intended to work with that release.
</span>
git clone macports/macports-ports macports-ports
cd macports-ports
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -103,36 +113,40 @@ intends to provide a set of ports intended to work with that release.
</span>
=== Create & Post Release Tarballs ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-The release tarballs are .tar.bz2 and .tar.gz archives of the base repository. They are named with the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-following naming convention:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The release tarballs are .tar.bz2 and .tar.gz archives of the base repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+They are named with the following naming convention:
</span>
MacPorts-2.0.0.tar.{bz2,gz} (base repository, corresponding to tag v2.0.0)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-The following commands issued to the top level Makefile will generate all the tarballs and checksums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following commands issued to the top level Makefile will generate all the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+tarballs and checksums:
</span>
make DISTVER=2.0.0 distfromgit
<span style='display:block; white-space:pre;background:#ffe0e0;'>-The release should be signed with a detached GPG signature in order to allow cryptographic verification:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The release should be signed with a detached GPG signature in order to allow
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cryptographic verification:
</span>
for ext in bz2 gz; do
gpg --sign --detach-sig --armor MacPorts-2.0.0.tar.${ext}
done
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Additionally, a file with checksums is created, that contains md5, sha1, rmd160, and sha256 checksums
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-for each of the files:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additionally, a file with checksums is created, that contains md5, sha1, rmd160,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+and sha256 checksums for each of the files:
</span>
for type in -md5 -rmd160 -sha1 -sha256; do
openssl dgst ${type} MacPorts-2.0.0.tar.{gz,bz2} >> MacPorts-2.0.0.chk.txt
done
<span style='display:block; white-space:pre;background:#ffe0e0;'>-These tarballs and the checksums are uploaded to the https://distfiles.macports.org/MacPorts/ directory.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-At present, this must be done with the help of the infrastructure team.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These tarballs and the checksums are uploaded to the https://distfiles.macports.org/MacPorts/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+directory. At present, this must be done with the help of the infrastructure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+team.
</span>
=== Create Release Packages and Disk Image(s) ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-The dmg is a Mac OS X disk image that contains a standalone installer, configured in the usual way, named
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-in a consistent fashion and incorporating the OS version for which it was built.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The dmg is a Mac OS X disk image that contains a standalone installer,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configured in the usual way, named in a consistent fashion and incorporating the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OS version for which it was built.
</span>
For 10.6 and newer, we now build flat packages, so an enclosing dmg is not necessary.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -140,64 +154,72 @@ For 10.6 and newer, we now build flat packages, so an enclosing dmg is not neces
</span> MacPorts-2.0.0-10.6-SnowLeopard.pkg
MacPorts-2.0.0-10.7-Lion.pkg
<span style='display:block; white-space:pre;background:#ffe0e0;'>-To create a pkg or dmg, use the MacPorts port. The Portfile will need to be updated to incorporate the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proper release version and checksums, and the release tarballs will need to be already uploaded to the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-downloads section of the site (wherefrom the sources are fetched by the MacPorts port to build the pkg
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-for the release). Make sure the ports tree you're using to build the pkgs is fully up to date.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To create a pkg or dmg, use the MacPorts port. The Portfile will need to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+updated to incorporate the proper release version and checksums, and the release
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+tarballs will need to be already uploaded to the downloads section of the site
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(wherefrom the sources are fetched by the MacPorts port to build the pkg for the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+release). Make sure the ports tree you're using to build the pkgs is fully up to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+date.
</span>
sudo port -d pkg MacPorts
sudo port -d dmg MacPorts
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Name each pkg/dmg appropriately, and then sign the pkgs with a Developer ID (make sure to use the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Installer certificate, not the Application one):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Name each pkg/dmg appropriately, and then sign the pkgs with a Developer ID
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(make sure to use the Installer certificate, not the Application one):
</span>
cd work
mv MacPorts-2.0.0.pkg unsigned/MacPorts-2.0.0-10.7-Lion.pkg
productsign --sign "Developer ID Installer: John Doe" unsigned/MacPorts-2.0.0-10.7-Lion.pkg MacPorts-2.0.0-10.7-Lion.pkg
<span style='display:block; white-space:pre;background:#ffe0e0;'>-After signing, generate checksums, which will need to be added to the existing checksums
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-file in the downloads directory:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+After signing, generate checksums, which will need to be added to the existing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums file in the downloads directory:
</span>
for type in -md5 -sha1 -ripemd160 -sha256; do
openssl dgst $type MacPorts-2.0.0-*.{pkg,dmg} >> MacPorts-2.0.0.chk.txt
done
<span style='display:block; white-space:pre;background:#ffe0e0;'>-These new products, along with the new checksums, also have to be posted to the appropriate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-directory of the MacPorts distfiles server. Developers are required to validate the generated installer as
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-thoroughly as possible through extensive testing, which is mainly why this step of the release process
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-is not automated through a Makefile target or similar. A good way of validating the installer is to first
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-create the destroot of the port and examine it for:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Linking: libraries and binaries should not be linked against anything that's not present by default
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- on a vanilla Mac OS X installation + developer tools, excluding even the MacPorts installation prefix;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- this can be accomplished through the use of otool's -L flag. Currently the libraries and binaries in need
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- of linking validation are:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These new products, along with the new checksums, also have to be posted to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+appropriate directory of the MacPorts distfiles server. Developers are required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to validate the generated installer as thoroughly as possible through extensive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+testing, which is mainly why this step of the release process is not automated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+through a Makefile target or similar. A good way of validating the installer is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to first create the destroot of the port and examine it for:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Linking: libraries and binaries should not be linked against anything that's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ not present by default on a vanilla Mac OS X installation + developer tools,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ excluding even the MacPorts installation prefix; this can be accomplished
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ through the use of otool's -L flag. Currently the libraries and binaries in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ need of linking validation are:
</span> ${destroot}/opt/local/bin/daemondo
${destroot}/opt/local/share/macports/Tcl/darwintrace1.0/darwintrace.dylib
${destroot}/opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib
${destroot}/opt/local/share/macports/Tcl/pextlib1.0/Pextlib.dylib
${destroot}/opt/local/share/macports/Tcl/registry2.0/registry.dylib
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Universal building: All the files that need linking confirmation in the step above also need to be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- confirmed to be universal (i386/ppc on 10.5 and earlier, i386/x86_64 on 10.6 and later). A way to do this
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is with the file(1) command:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Universal building: All the files that need linking confirmation in the step
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ above also need to be confirmed to be universal (i386/ppc on 10.5 and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ earlier, i386/x86_64 on 10.6 and later). A way to do this is with the file(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ command:
</span> file ${destroot}/opt/local/bin/daemondo:
${destroot}/opt/local/bin/daemondo: Mach-O universal binary with 2 architectures
${destroot}/opt/local/bin/daemondo (for architecture ppc): Mach-O executable ppc
${destroot}/opt/local/bin/daemondo (for architecture i386): Mach-O executable i386
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * tclsh shell invoked by our scripts: all scripts installed in ${destroot}/opt/local/bin (that is port,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- portindex and portmirror) should invoke the tclsh shell through a call like:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * tclsh shell invoked by our scripts: all scripts installed in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}/opt/local/bin (that is port, portindex and portmirror) should
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ invoke the tclsh shell through a call like:
</span> #!/bin/sh
#\
exec /usr/bin/tclsh "$0" "$@"
thus ensuring that the default Mac OS X bundled Tcl is used in our scripts.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * macports1.0 Tcl package: The macports1.0 Tcl package should be sourced off its location in /opt/local/libexec/macports/lib/macports1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * macports1.0 Tcl package: The macports1.0 Tcl package should be sourced off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ its location in /opt/local/libexec/macports/lib/macports1.0
</span> in every single one of our scripts in ${destroot}/opt/local/bin.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Miscellaneous: anything else that might seem out of the ordinary for a fully default-configured MacPorts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Miscellaneous: anything else that might seem out of the ordinary for a fully
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default-configured MacPorts installation.
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Once the above requirements have been positively asserted, the one remaining test is to make sure that the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-dmg mounts in the Finder when double-clicked, and that the pkg contained therein properly starts up Installer.app
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-when it's double-clicked.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once the above requirements have been positively asserted, the one remaining
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test is to make sure that the dmg mounts in the Finder when double-clicked, and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+that the pkg contained therein properly starts up Installer.app when it's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+double-clicked.
</span>
== Create Release on GitHub ==
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -209,33 +231,44 @@ on GitHub and attach all tarballs and installers to it.
</span>
=== Make the Release Available through Self-Update ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-In order to make the release version available through selfupdate, the config/RELEASE_URL file in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-base repository needs to be updated with the tag of the release to distribute. This file is read by the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-cron job that makes the code available via rsync. See jobs/mprsyncup in the macports-infra repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In order to make the release version available through selfupdate, the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+config/RELEASE_URL file in the base repository needs to be updated with the tag
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+of the release to distribute. This file is read by the cron job that makes the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+code available via rsync. See jobs/mprsyncup in the macports-infra repository.
</span>
=== Notify the Public of the Release ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Once the release has been posted, notification of the release should be sent/posted to the following places:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once the release has been posted, notification of the release should be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sent/posted to the following places:
</span>
* The macports-announce@, macports-users@ and macports-dev@ mailing lists.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * The MacPorts website, by adapting the $macports_version_major and $macports_version_latest variables as
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- appropriate in the includes/common.inc file in the macports-www repository.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * [https://macports.github.io/news/] The website's news section, see macports.github.io repository
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- (submitter: portmgr@)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The MacPorts website, by adapting the $macports_version_major and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $macports_version_latest variables as appropriate in the includes/common.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file in the macports-www repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The website's news section at https://macports.github.io/news/,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ see the macports.github.io repository
</span> * The &macports-version; entity in xml/installing.xml in the guide repository.
External websites:
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * [http://sourceforge.net/projects/macports/ sourceforge] (submitted: portmgr@)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * [https://www.macupdate.com/app/mac/21309/macports MacUpdate] (submitter: ???)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * [http://twitter.com/macports twitter] (submitter: raimue@)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * [https://plus.google.com/communities/110287630398071712872 Google+ Community] (submitter: raimue@)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * [http://sourceforge.net/projects/macports/ sourceforge]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (submitter: portmgr@)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * [https://www.macupdate.com/app/mac/21309/macports MacUpdate]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (submitter: ???)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * [http://twitter.com/macports twitter]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (submitter: raimue@)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * [https://plus.google.com/communities/110287630398071712872 Google+ Community]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (submitter: raimue@)
</span> * (Where else?)
=== Use of new features in Portfiles ===
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Using new features introduced by a release should be delayed for 14 days. This
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-should allow users to upgrade their installations to the new release. This
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-delay matches the warning about outdated ports tree sources.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Using new features introduced by a release should be delayed for 14 days until
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+being deployed in the ports tree. This should allow users to upgrade their
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+installations to the new release. This delay matches the warning about outdated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ports tree sources.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# vim:set fenc=utf-8 ft=text tw=80 et:
</span></pre><pre style='margin:0'>
</pre>