diff --git a/ChangeLog b/ChangeLog index 4c3cd6896..781f09a34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2004-10-27 Carl Worth + * RELEASING: Update release instructions for new release-publish + target. + + * Makefile.am: Add release-check and release-publish targets + copied from libpixman. + * test/Makefile.am (AM_LDFLAGS): Fix to always link tests against locally built library, not installed version. diff --git a/Makefile.am b/Makefile.am index 624ec1334..6dfc4ab3d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,3 +8,43 @@ EXTRA_DIST = \ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cairo.pc + +# Some custom targets to make it easier to release things. +# Use either: +# make release-check +# or make release-publish + +RELEASE_UPLOAD_DIR = cairographics.org:/home/www/cairo/snapshots +RELEASE_URL_BASE = http://cairographics.org/snapshots +RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org + +tar_file = $(PACKAGE)-$(VERSION).tar.gz +md5_file = $(tar_file).md5 + +$(md5_file): $(tar_file) + md5sum $^ > $@ + +release-remove-old: + rm -f $(tar_file) $(md5_file) + +release-check: release-remove-old distcheck $(md5_file) + +release-publish: release-check + mkdir -p releases + scp $(tar_file) $(md5_file) $(RELEASE_UPLOAD_DIR) + mv $(tar_file) $(md5_file) releases + @echo "" + @echo "Please send an announcement to $(RELEASE_ANNOUNCE_LIST)" + @echo "including the following:" + @echo "" + @echo "Subject: $(PACKAGE) snapshot $(VERSION) now available" + @echo "" + @echo "A new $(PACKAGE) snapshot $(VERSION) is now available from:" + @echo "" + @echo " $(RELEASE_URL_BASE)/$(tar_file)" + @echo " $(RELEASE_URL_BASE)/$(md5_file)" + @echo -n " " + @cat releases/$(md5_file) + @echo "" + @echo "Also, please include the new entries from the NEWS file." + diff --git a/RELEASING b/RELEASING index 64ebb43fa..5a7ee9d87 100644 --- a/RELEASING +++ b/RELEASING @@ -2,38 +2,30 @@ So far, cairo hasn't reached an initial release. But we can still form good habits now by practicing the release process with the current snapshots. -10 easy steps to creating a new cairo snapshot -============================================== +A new snapshot is needed whenever significant new features or bug +fixes are committed. Here are the steps to follow: -1) Commit code with a significant new feature or backwards - incompatibility. +1) Ensure that there are no local, uncommitted modifications. The best + thing to do here may be to begin with a fresh checkout from CVS: - Either of these events triggers the need for a new snapshot. - Users of cairo snapshots need to be able to specify snapshot - version numbers in order to get access to a specific set of - features. + cvs -d cairographics.org:/cvs/cairo co cairo -2) Increment CAIRO_VERSION in configure.in + But it's probably good enough if "cvs -q update -Ad" generates no + output. - Right now, in its pre-release form, we are incrementing - CAIRO_VERSION for each snapshot but we are not changing the - libtool shared library version information. Until now, we've - only incremented the sub-minor version. We'll invent rules for - incrementing major and minor numbers when the time is right. - -3) Verify that the code passes "make distcheck" +2) Verify that the code passes "make distcheck" Running "make distcheck" should result in no warnings or errors and end with a message of the form: - ============================================= + ================================================ cairo-X.Y.Z.tar.gz is ready for distribution - ============================================= + ================================================ (But the tar file isn't actually ready yet, as we still have some more steps to follow). -4) Fill out an entry in the NEWS file +3) Fill out an entry in the NEWS file Sift through the information in ChangeLog since the last snapshot. Summarize major changes briefly in a style similar @@ -41,33 +33,38 @@ snapshots. incompatible changes in the API. These should be easy to find by looking for cairo.h in the ChangeLog. +4) Increment CAIRO_VERSION in configure.in + + Right now, in its pre-release form, we are incrementing + CAIRO_VERSION for each snapshot but we are not changing + the libtool shared library version information. Increment the + subminor version for bug fixes and backwards-compatible + additions to the API. Increment the minor number (and reset + the subminor) for backward-incompatible changes to the API + (including removals). Leave the major number at 0 until we are + ready for the first 1.0 release, (at which point these rules + will change). + 5) Commit the changes to NEWS and configure.in Don't forget to fill out the ChangeLog just like with any other commit. It's especially important to mention the new version number in the ChangeLog. -6) Run "make distcheck" to generate the final tar file including the - changes to NEWS and ChangeLog. +6) Run "make release-publish" which will perform the following steps + for you: -7) Copy the resulting tar file to the cairo snapshots distribution - directory: + * Verify that make distcheck completes successfully + * Generate the final tar file with the correct version number + * Generate an md5sum file + * scp both files to cairographics.org:/home/www/cairo/snapshots + * Place local copies of both files in the releases directory + * Provide some text for the release announcement - scp cairo-X.Y.Z-tar.gz cairographics.org:/home/www/cairo/snapshots - -8) Tag the entire source tree with a tag of the form SNAPSHOT_X_Y_Z: +7) Tag the entire source tree with a tag of the form SNAPSHOT_X_Y_Z: cvs tag SNAPSHOT_X_Y_Z -9) Send a message to cairo-announce@cairographics.org to announce the - new snapshot. +8) Send a message to cairo-announce@cairographics.org to announce the + new snapshot using the text provided by the previous step. - The message should provide the URL for the snapshot: - - http://cairographics.org/snapshots/cairo-X.Y.Z.tar.gz - - and should also include the relevant section from the NEWS - file. - -10) Sit back and relax in confidence, or alternately, brace yourself - for a flood of new bug reports.