summaryrefslogtreecommitdiff
path: root/RELEASING
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2007-12-16 17:10:42 +0100
committerCarlos Garcia Campos <carlosgc@gnome.org>2007-12-16 17:10:42 +0100
commit3c57e6d71491c1001c61947a006f33cb17d4e0bd (patch)
tree58a3d03a1052907ee91bd8c50fdcfdc2d0deae04 /RELEASING
parent764c681fa2fa0bc91f8b7ba535b5fc2b35ae4b25 (diff)
Add scripts and instructions for releasing, based on cairo release system
Diffstat (limited to 'RELEASING')
-rw-r--r--RELEASING101
1 files changed, 101 insertions, 0 deletions
diff --git a/RELEASING b/RELEASING
new file mode 100644
index 0000000..d5697e0
--- /dev/null
+++ b/RELEASING
@@ -0,0 +1,101 @@
+Here are the steps to follow to create a new libspectre release:
+
+1) Ensure that there are no local, uncommitted modifications.
+ It's probably good enough if "git diff HEAD" doesn't output
+ anything and your "master" and "origin" branchs are at the current
+ revision.
+
+2) Verify that the code passes "make distcheck"
+
+ First, make sure you have 'nm' and 'readelf' commands in PATH.
+ this should be Ok with any Linux distro.
+
+ Running "make distcheck" should result in no warnings or
+ errors and end with a message of the form:
+
+ ==================================================
+ libspectre-X.Y.Z archives ready for distribution:
+ libspectre-X.Y.Z.tar.gz
+ ==================================================
+
+ (But the tar file isn't actually ready yet, as we still have
+ some more steps to follow).
+
+3) Fill out an entry in the NEWS file
+
+ Sift through the logs since the last release. This is most
+ easily done with a comand such as:
+
+ git log --stat X.Y.Z..
+
+ where X.Y.Z is the previous release version.
+
+ Summarize major changes briefly in a style similar to other
+ entries in NEWS. Take special care to note any additions in
+ the API. These should be easy to find by noting modifications
+ to .h files in the log command above. And more specifically,
+ the following command will show each patch that has changed a
+ public header file since the given version:
+
+ find libspectre -name 'spectre*.h' ! -name '*-private.h' \
+ ! -name 'spectre-gs.h' ! -name 'spectre-device.h' \
+ ! -name 'spectre-utils.h' | xargs git log -p X.Y.Z.. --
+
+4) Increment spectre_{minor|micro}_version and LT_{CURRENT|REVISION|AGE}
+ in configure.ac:
+
+ If there are API additions, then increment spectre_minor_version
+ and reset spectre_micro_version to 0.
+
+ Otherwise, (ie. there are only bug fixes), increment
+ spectre_micro_version to the next larger number.
+
+ Adjust LT_CURRENT, LT_REVISION, and LT_AGE as described in the
+ comments in configure.ac.
+
+5) Commit the changes to NEWS and configure.ac and push
+
+ It's especially important to mention the new version number in your
+ commit log.
+
+6) Run "make release-publish" which will perform the following steps
+ for you:
+
+ * Generate ChangeLog file out of git repository
+ * Check that no release exists with the current version
+ * Verify that make distcheck completes successfully
+ * Generate the final tar file
+ * Generate an sha1sum file
+ * Sign the sha1sum using your GPG setup (asks for your GPG password)
+ * scp the three files to appear on http://libspectre.freedesktop.org/releases
+ * Place local copies of the three files in the releases directory
+ * Create a LATEST-package-version file (after deleting any old one)
+ * Tag the entire source tree with a tag of the form X.Y.Z, and sign
+ the tag with your GPG key (asks for your GPG password, and you
+ may need to set GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL to match
+ your public-key's setting or this fails.)
+ * Provide some text for the release announcement (see below).
+ If for some reason you lost this message, "make release-publish-message"
+ prints it for you.
+
+7) Push the newly created tag out to the central tree with a command
+ something like:
+
+ git push origin X.Y.Z
+
+8) Edit the libspectre bugzilla product and add the new version
+ number.
+
+9) If there are API changes run "make doc-publish" to update the
+ documentation manual.
+
+10) Send a message to announce the new release using
+ the text provided from "make release-publish", adding the excerpt
+ from NEWS, your signature, followed by the standard "What is libspectre"
+ and "Where to get more information about libspectre" blurbs from README,
+ and finally tacking on the detailed changelog-ish thing that gets
+ mailed out when you push the tag (but not the diffstat thing).
+
+11) Edit the libspectre wiki to add the announcement.
+
+