Commit | Line | Data |
---|---|---|
c38e0c97 PE |
1 | Instructions to create pretest or release tarballs. -*- coding: utf-8 -*- |
2 | -- originally written by Gerd Moellmann, amended by Francesco Potortì | |
383c1c75 | 3 | with the initial help of Eli Zaretskii |
90073820 | 4 | |
90073820 | 5 | |
31045a5b GM |
6 | Steps to take before starting on the first pretest in any release sequence: |
7 | ||
283d38ed GM |
8 | 0. The release branch (e.g. emacs-24) should already have been made |
9 | and you should use it for all that follows. Diffs from this | |
10 | branch should be going to the emacs-diffs mailing list (see | |
11 | admin/notes/bzr section on bzr-email plugin). | |
12 | ||
31045a5b | 13 | 1. Decide on versions of automake and autoconf, and ensure you will |
7d2707f9 GM |
14 | have them available for the duration of the release process. |
15 | ||
31045a5b GM |
16 | 2. Consider increasing the value of the variable |
17 | `customize-changed-options-previous-release' in cus-edit.el to | |
18 | refer to a newer version of Emacs. (This is probably needed only | |
19 | when preparing the first pretest for a major Emacs release.) | |
20 | Commit cus-edit.el if changed. | |
21 | ||
283d38ed GM |
22 | 3. Remove any old pretests from ftp://alpha.gnu.org/gnu/emacs/pretest. |
23 | You can use `gnupload --delete' (see below for more gnupload details). | |
31045a5b GM |
24 | |
25 | General steps (for each step, check for possible errors): | |
26 | ||
1a71dc49 | 27 | 1. `bzr update' (for a bound branch), or `bzr pull'. |
31045a5b | 28 | bzr status # check for locally modified files |
90073820 | 29 | |
283d38ed | 30 | 2. Regenerate the etc/AUTHORS file: |
31045a5b GM |
31 | M-: (require 'authors) RET |
32 | M-x authors RET | |
33 | ||
0d613483 GM |
34 | If there is an "*Authors Errors*" buffer, address the issues. |
35 | If there was a ChangeLog typo, fix it. If a file was deleted or | |
36 | renamed, consider adding an appropriate entry to authors-ignored-files, | |
37 | authors-valid-file-names, or authors-renamed-files-alist. | |
31045a5b GM |
38 | |
39 | If necessary, repeat M-x authors after making those changes. | |
40 | Save the "*Authors*" buffer as etc/AUTHORS. | |
41 | Check the diff looks reasonable. Maybe add entries to | |
42 | authors-ambiguous-files or authors-aliases, and repeat. | |
43 | Commit any fixes to ChangeLogs or authors.el. | |
c0982072 | 44 | |
283d38ed | 45 | 3. Set the version number (M-x load-file RET admin/admin.el RET, then |
7d2707f9 | 46 | M-x set-version RET). For a release, add released ChangeLog |
90073820 FP |
47 | entries (M-x add-release-logs RET). |
48 | ||
3baeb95e GM |
49 | For a pretest, start at version .90. After .99, use .990 (so that |
50 | it sorts). | |
51 | ||
9e4a1ee0 GM |
52 | The final pretest should be a release candidate. Set the version |
53 | number to that of the actual release. Pick a date about a week | |
54 | from now when you intend to make the release. Use M-x add-release-logs | |
55 | to add the ChangeLog entries for that date to the tar file (but | |
56 | not yet to the repository). Name the tar file as | |
6b88120b | 57 | emacs-XX.Y-rc1.tar. If all goes well in the following week, you |
9e4a1ee0 GM |
58 | can simply rename the file and use it for the actual release. |
59 | ||
283d38ed | 60 | 4. autoreconf -i -I m4 --force |
54aa48fe | 61 | make bootstrap |
90073820 | 62 | |
8e5c7e6f GM |
63 | make -C etc/refcards |
64 | make -C etc/refcards clean | |
65 | ||
283d38ed | 66 | 5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. |
31045a5b GM |
67 | |
68 | Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed | |
283d38ed GM |
69 | by M-x set-version. Use a commit log message that bzrmerge.el |
70 | will ignore (eg "Bump version..."). | |
1a71dc49 | 71 | For a release, also commit the ChangeLog files in all directories. |
90073820 | 72 | |
283d38ed GM |
73 | If someone else made a commit between step 1 and now, |
74 | you need to repeat from step 4 onwards. (You can commit the files | |
75 | from step 2 and 3 earlier to reduce the chance of this.) | |
76 | ||
77 | 6. ./make-dist --snapshot --no-compress | |
31045a5b | 78 | |
283d38ed GM |
79 | Check the contents of the new tar with admin/diff-tar-files |
80 | against the previous release (if this is the first pretest) or the | |
81 | previous pretest. If you did not make the previous pretest | |
82 | yourself, find it at <ftp://alpha.gnu.org/gnu/emacs/pretest>. | |
83 | Releases are of course at <ftp://ftp.gnu.org/pub/gnu/emacs/>. | |
90073820 | 84 | |
c789f32c GM |
85 | If this is the first pretest of a major release, just comparing |
86 | with the previous release may overlook many new files. You can try | |
1a71dc49 GM |
87 | something like `find . | sort' in a clean bzr tree, and compare the |
88 | results against the new tar contents. | |
c789f32c | 89 | |
283d38ed | 90 | 7. tar -xf emacs-NEW.tar; cd emacs-NEW |
31045a5b | 91 | ./configure --prefix=/tmp/emacs && make && make install |
7d5c9c1b FP |
92 | Use `script' or M-x compile to save the compilation log in |
93 | compile-NEW.log and compare it against an old one. The easiest way | |
94 | to do that is to visit the old log in Emacs, change the version | |
95 | number of the old Emacs to __, do the same with the new log and do | |
fe5b74fc GM |
96 | M-x ediff. Especially check that Info files aren't built, and that |
97 | no autotools (autoconf etc) run. | |
7d5c9c1b | 98 | |
283d38ed | 99 | 8. cd EMACS_ROOT_DIR && bzr tag TAG |
1e1bbf41 | 100 | TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release. |
7d5c9c1b | 101 | |
283d38ed | 102 | 9. Decide what compression schemes to offer. |
31045a5b GM |
103 | For a release, at least gz and xz: |
104 | gzip --best -c emacs-NEW.tar > emacs-NEW.tar.gz | |
105 | xz -c emacs-NEW.tar > emacs-NEW.tar.xz | |
283d38ed | 106 | For pretests, just xz is probably fine (saves bandwidth). |
31045a5b GM |
107 | |
108 | Now you should upload the files to the GNU ftp server. In order to | |
140281f6 | 109 | do that, you must be registered as an Emacs maintainer and have your |
a0b4e66e GM |
110 | GPG key acknowledged by the ftp people. For instructions, see |
111 | http://www.gnu.org/prep/maintain/html_node/Automated-Upload-Registration.html | |
283d38ed GM |
112 | The simplest method to upload is to use the gnulib |
113 | <http://www.gnu.org/s/gnulib/> script "build-aux/gnupload": | |
31045a5b GM |
114 | |
115 | For a pretest: | |
116 | gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \ | |
117 | FILE.gz FILE.xz ... | |
118 | ||
119 | For a release: | |
120 | gnupload [--user your@gpg.key.email] --to ftp.gnu.org:emacs \ | |
121 | FILE.gz FILE.xz ... | |
122 | ||
123 | You only need the --user part if you have multiple GPG keys and do | |
124 | not want to use the default. | |
125 | Obviously, if you do not have a fast uplink, be prepared for the | |
126 | upload to take a while. | |
127 | ||
128 | ||
129 | If you prefer to do it yourself rather than use gnupload: | |
130 | ||
131 | For each FILE, create a detached GPG binary signature and a | |
132 | clearsigned directive file like this: | |
ab22a8a1 | 133 | |
140281f6 FP |
134 | gpg -b FILE |
135 | echo directory: emacs/pretest > FILE.directive (for a pretest) | |
136 | echo directory: emacs > FILE.directive (for a release) | |
137 | gpg --clearsign FILE.directive | |
7dee3a04 RF |
138 | Upload by anonymous ftp to ftp://ftp-upload.gnu.org/ the files FILE, |
139 | FILE.sig, FILE.directive.asc. | |
140 | For a release, place the files in the /incoming/ftp directory. | |
141 | For a pretest, place the files in /incoming/alpha instead, so that | |
142 | they appear on ftp://alpha.gnu.org/. | |
140281f6 | 143 | |
283d38ed | 144 | 10. After five minutes, verify that the files are visible at |
31045a5b | 145 | ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or |
41a3c7b0 FP |
146 | ftp://ftp.gnu.org/gnu/emacs/ for a release. |
147 | ||
31045a5b GM |
148 | Download them and check the signatures. Check they build. |
149 | ||
283d38ed GM |
150 | 11. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org. |
151 | For a pretest, also bcc: platform-testers@gnu.org. | |
152 | (The reason for using bcc: is to make it less likely that people | |
153 | will followup on the wrong list.) | |
154 | See the info-gnu-emacs mailing list archives for the form | |
155 | of past announcements. The first pretest announcement, and the | |
156 | release announcement, should have more detail. | |
157 | ||
158 | 12. For a release, update the Emacs homepage in the web repository. | |
159 | Also update history.html, and add the new NEWS file as NEWS.xx.y. | |
160 | Regenerate the html manuals (use make-manuals from admin.el). | |
161 | If there are new manuals, add appropriate index pages. |