summaryrefslogtreecommitdiff
path: root/RELEASING
blob: 7f65d32a9fc1e8b2d16bc3c851f1d9239e297fe7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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) 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.. --

3) 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.

4) 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).

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.