[23644] branches/release_1_4/base
source_changes at macosforge.org
source_changes at macosforge.org
Thu Apr 5 21:25:21 PDT 2007
Revision: 23644
http://trac.macosforge.org/projects/macports/changeset/23644
Author: jmpp at macports.org
Date: 2007-04-05 21:25:21 -0700 (Thu, 05 Apr 2007)
Log Message:
-----------
Merging r23643 into the release_1_4 branch: release protcol updates.
Modified Paths:
--------------
branches/release_1_4/base/Makefile.in
branches/release_1_4/base/ReleaseProcess
Modified: branches/release_1_4/base/Makefile.in
===================================================================
--- branches/release_1_4/base/Makefile.in 2007-04-06 04:19:38 UTC (rev 23643)
+++ branches/release_1_4/base/Makefile.in 2007-04-06 04:25:21 UTC (rev 23644)
@@ -56,18 +56,19 @@
rm -f Makefile Mk/dports.autoconf.mk
_gettag:
- cd ${DISTDIR}; svn co ${SVNURL}/tags/${SVNTAG} ${PKGNAME}
+ cd ${DISTDIR}; svn co ${SVNURL}/tags/${SVNTAG} ${PKGNAME}-svn
_pkgdist:
- cd ${DISTDIR}; COPY_EXTENDED_ATTRIBUTES_DISABLE=true tar --exclude .svn -c ${PKGNAME} | gzip > ${PKGNAME}.tar.gz
- cd ${DISTDIR}; COPY_EXTENDED_ATTRIBUTES_DISABLE=true tar --exclude .svn -c ${PKGNAME} | bzip2 > ${PKGNAME}.tar.bz2
+ cd ${DISTDIR}; svn export ${PKGNAME}-svn ${PKGNAME}
+ cd ${DISTDIR}; COPY_EXTENDED_ATTRIBUTES_DISABLE=true tar -c ${PKGNAME} | gzip > ${PKGNAME}.tar.gz
+ cd ${DISTDIR}; COPY_EXTENDED_ATTRIBUTES_DISABLE=true tar -c ${PKGNAME} | bzip2 > ${PKGNAME}.tar.bz2
cd ${DISTDIR}; for type in -md5 -sha1 -ripemd160; do openssl dgst $$type ${PKGNAME}.tar.gz ${PKGNAME}.tar.bz2; done >> ${DISTNAME}.chk.txt
_dopkg: _gettag _pkgdist
# This target fetches a tagged distribution from svn, and generates tarballs and checksums for it
distfromsvn:
- @[ -n "${DISTVER}" ] || ( echo Must specify DISTVER, like: make DISTVER=1.4 dist; exit 1 )
+ @[ -n "${DISTVER}" ] || ( echo Must specify DISTVER, like: make DISTVER=1.4.0 dist; exit 1 )
[ -d ${DISTDIR} ] || mkdir ${DISTDIR}
rm -f ${DISTDIR}/${DISTNAME}.chk.txt
${MAKE} SVNTAG=${DISTTAG}/base/ PKGNAME=${DISTNAME} _dopkg
Modified: branches/release_1_4/base/ReleaseProcess
===================================================================
--- branches/release_1_4/base/ReleaseProcess 2007-04-06 04:19:38 UTC (rev 23643)
+++ branches/release_1_4/base/ReleaseProcess 2007-04-06 04:25:21 UTC (rev 23644)
@@ -22,7 +22,7 @@
* Create an svn branch to carry the release.
* Prepare the code for release.
* Tag the release.
-* Create release products: tarball and dmg.
+* Create release products: tarballs and dmgs.
* Post release products.
* Make release version available through selfupdate.
* Notify public of the release.
@@ -30,12 +30,13 @@
=== Create a Release Branch ===
-For each major release (i.e. 1.3.0, 1.4.0, etc.) an appropriate branch is created with a consistent name. To do this, two things are required:
+For each major release (i.e. 1.3.x, 1.4.x, etc.) an appropriate branch is created with a consistent name. To do this, two things are required:
* Choose the svn revision from which to create the branch, most likely based off trunk.
-* Create the branch (e.g. release_1_4_0) through the svn "copy" command for history preservation:
+* Create the branch (e.g. release_1_4) through the svn "copy" command for history preservation, first creating the needed branch dir to preserve the needed directory structure (the 'base' directory level *needs* to exist int the branches tree for release branches, otherwise selfupdate breaks):
- svn cp -r<rev> http://svn.macports.org/repository/macports/trunk/base/ http://svn.macports.org/repository/macports/branches/release_1_4_0
+ svn mkdir -m "commit-message" http://svn.macports.org/repository/macports/branches/release_1_4
+ svn cp -r<rev> -m "commit-message" http://svn.macports.org/repository/macports/trunk/base http://svn.macports.org/repository/macports/branches/release_1_4
The actual release, alpha or beta releases, release candidates, and any point releases will all live on this branch, and tagged appropriately and if necessary (a must for the actual releases, optional for beta snapshots) into the /tags svn directory.
@@ -46,9 +47,9 @@
In preparation for a release, several things should be completed within the code:
-* Update the file base/ChangeLog to reflect changes in the release.
-* Update the file base/config/dp_version with the target release number. Note that this is a floating point number that corresponds to the release number; it should correspond roughly to the release number where possible. Release 1.4.1, for instance, would be represented by the floating point number 1.41. The version number in dp_version is displayed by the port command as the version of MacPorts, and is used by the selfupdate command to determine whether a newer version of code is available.
-* Make sure that these, and any other changes or bug fixes as necessary, are made on and/or merged into the release branch. If you've made changes to ChangeLog only on the release branch, those changes should be merged to trunk as well.
+* Update the file base/ChangeLog in both trunk and the relase branch to reflect the appropriate changes.
+* Update the file base/config/dp_version with the target release number. Note that this is a floating point number that corresponds to the release number; it should correspond roughly to the release number where possible. Release 1.4.1, for instance, would be represented by the floating point number 1.41. The version number in dp_version is displayed by the port command as the version of MacPorts, and is used by the selfupdate command to determine whether a newer version of code is available. This number should be different between trunk and a release branch and the former should be updated as needed to differentiate it from the latter.
+* Make sure that these, and any other changes or bug fixes are made on and/or merged between the release branch and trunk as needded. For instance, if you've made changes to ChangeLog only on the release branch, those changes should be merged back into trunk as well.
=== Tag the Release ===
@@ -66,20 +67,19 @@
We first tag the branched base directory for the release
- svn cp http://svn.macports.org/repository/macports/branches/release_1_4_0 http://svn.macports.org/repository/macports/tags/release_1_4_0
+ svn cp -m "commit-message" http://svn.macports.org/repository/macports/branches/release_1_4 http://svn.macports.org/repository/macports/tags/release_1_4_0
-Although only the base subdirectory is branched and tagged for a given major release, we also create a seperate tag for the entire tree (base sources and full ports tree) at the time a release tag is created, in order to provide a stake in the ground that specifies a set of ports intended to work with that release. Note that this tag incorporates the entire svn trunk directory at TOT (top of tree), except for the base directory which is kept at the point of the release.
+Although only the base subdirectory is branched and tagged for a given major release, we also create a seperate tag for the entire tree (base sources and full ports tree) at the time the final release tag is created (only for major releases, 1.x.0), in order to provide a stake in the ground that specifies a set of ports intended to work with that release. Note that this tag incorporates the entire svn trunk directory at the revision number at which the final release was tagged.
-Such a composite directory may be created by checking out all of trunk and then switching the base directory to the appropriate release tag URL. For instance:
+The necessary working copy to create such a tag is created by checking out all of trunk and then switching the base directory to the appropriate release tag URL. For instance:
svn co http://svn.macports.org/repository/macports/trunk macports/release-1.4.0
cd macports/release-1.4.0/base
- svn switch http://svn.macports.org/repository/macports/tags/release_1_4_0
+ svn switch http://svn.macports.org/repository/macports/tags/release_1_4_0/base
-And finally we tag the entire directory as release_1_4_0-archive
+And finally we tag the entire directory as release_1_4_0-archive:
- svn cp macports/release-1.4.0 http://svn.macports.org/repository/tags/release_1_4_0-archive
-(NOTE: copying a "mixed" directory like this to a different URL is highly counter-recommended by developers in #svn @freenode, as it may lead to great history confusion, so an alternate procedure that gets us in a "legal" svn way what James first outlined with a cvs framework in mind should be sought. Nevertheless, I can't seem to find it at the moment, so I'd love it if more experienced svn users could take a stab at it! Daniel...? Blair...? Anyone else? For the record, James' orginal document is at http://trac.macports.org/projects/macports/browser/users/jberry/mediawiki_archive/releaseprocess.txt)
+ svn cp -m "commit-message" macports/release-1.4.0 http://svn.macports.org/repository/tags/release_1_4_0-archive
=== Create & Post Release Tarballs ===
@@ -93,9 +93,9 @@
make DISTVER=1.4.0 distfromsvn
-Note that DISTTAG is generated from DISTVER automatically. But our naming convention drops the last .0 in the DISTNAME, so for x.y.0 releases, you want to specify these distinctly, as above. Also, you need to pass the "ARC=yes" flag on the command line to the "distfromsvn" target if you wish to produce tarballs for the full archive.
+Note that you need to pass the "ARC=yes" flag on the command line to the "distfromsvn" top-level make target if you also wish to produce the full archive tarballs.
-These tarballs are uploaded via svn to http://svn.macports.org/repository/macports/downloads/MacPorts-1.4.0/ directory.
+All these tarballs are uploaded via svn to the http://svn.macports.org/repository/macports/downloads/MacPorts-1.4.0/ directory.
Additionally, a file is created, and posted to the same location, that contains md5, sha1, and rmd160 checksums for each of the files:
@@ -105,14 +105,14 @@
=== Create Release Disk Image(s) ===
-The dmg is a Mac OS X disk image that contains a standalone installer for the release, named in a consistent fashion and incorporating the OS version for which it was built.
+The dmg is a Mac OS X disk image that contains a standalone installer for major MacPorts releases (1.x.0), named in a consistent fashion and incorporating the OS version for which it was built.
MacPorts-1.4.0-10.3.dmg
MacPorts-1.4.0-10.4.dmg
To create the disk image, use the macports port; the Portfile will need to be updated to incorporate the proper release version and the release tarballs will need to be already uploaded to the downloads section of the site (wherefrom the sources are fetched by the macports port to build the dmg for the release). Checksums need to be adapted likewise.
- port dmg macports
+ port dmg MacPorts
Name the dmg appropriately, and generate checksums, which will need to be added to the checksum file:
@@ -120,12 +120,12 @@
mv MacPorts-1.4.0.dmg MacPorts-1.4.0-10.4.dmg
for type in -md5 -sha1 -ripemd160; do openssl dgst $type MacPorts-1.4.0-10.4.dmg; done
-These new products, along with the new checksums file, also have to be posted to the downloads section of the MacPorts svn repository. Developers are required to validate the generated installer as thoroughly as possible through extensive testing, which is mainly why this step of the release process is not automated through a Makefile or similar.
+These new products, along with the new checksums file, also have to be posted to the appropriate downloads directory of the MacPorts svn repository. Developers are required to validate the generated installer as thoroughly as possible through extensive testing (primarily done by inspecting the destroot of the MacPorts built port, validating library and executables linking, tclsh binary invoked by our scripts, etc.), which is mainly why this step of the release process is not automated through a Makefile or similar.
=== Make the Release Available through Self-Update ===
-In order to make the release version available through selfupdate, the base/config/RELEASE_URL file in svn trunk needs to be updated with the tag of the release to distribute. This file is read by the cron job that makes the code available via rsync. See base/portmgr/mprsyncup.
+In order to make the release version available through selfupdate, the base/config/RELEASE_URL file in svn trunk needs to be updated with the tag of the release to distribute. This file is read by the cron job that makes the code available via rsync. See base/portmgr/mprsyncup. Though not strictly necessary, it's also good practice to update the same file accordingly in its branched guise.
=== Notify the Public of the Release ===
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070405/e7a1cd0e/attachment.html
More information about the macports-changes
mailing list