Instructions to create pretest or release tarballs.
--- originally written by Eli Zaretskii, amended by Francesco Potortì
+-- originally written by Gerd Moellmann, amended by Francesco Potortì
+ with the initial help of Eli Zaretskii
For each step, check for possible errors.
-1. cvs -q update -Pd
+1. cvs -q update -Pd
2. Bootstrap to make 100% sure all elc files are up-to-date, and to
make sure that the later tagged version will bootstrap, should it be
necessary to check it out.
-3. Set the version number (M-x load-file RET admin/admin.el RET, then
+3. Regenerate Emacs' AUTHORS file (M-x load-file RET
+ lisp/emacs-lisp/authors.el RET, then M-x authors RET, then save
+ the *Authors* buffer). This may require fixing syntactically
+ incorrect ChangeLog entries beforehand.
+
+4. Set the version number (M-x load-file RET admin/admin.el RET, then
M-x set-version RET). For a release, add released change log
entries (M-x add-release-logs RET).
-4. rm configure; make bootstrap
+5. rm configure; make bootstrap
+
+6. Commit configure, README, AUTHORS, lisp/finder-inf.el,
+ lisp/version.el, man/emacs.texi, lispref/elisp.texi,
+ mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings,
+ mac/src/Emacs.r, nt/emacs.rc. Copy lisp/loaddefs.el to
+ lisp/ldefs-boot.el and commit lisp/ldefs-boot.el. For a release,
+ also commit the ChangeLog files in all directories.
+
+7. make-dist --snapshot. Check the contents of the new tar with
+ admin/diff-tar-files against an older tar file. Some old pretest
+ tarballs are kept under fencepost.gnu.org:~pot/emacs-pretest/, while
+ old emacs tarballs are at <ftp://ftp.gnu.org/pub/gnu/emacs/>.
+
+8. xdelta delta emacs-OLD.tar.gz emacs-NEW.tar.gz emacs-OLD-NEW.xdelta
+
+9. tar -zxf emacs-NEW.tar.gz; cd emacs-NEW
+ ./configure && make && make -n install
+ Use `script' or M-x compile to save the compilation log in
+ compile-NEW.log and compare it against an old one. The easiest way
+ to do that is to visit the old log in Emacs, change the version
+ number of the old Emacs to __, do the same with the new log and do
+ M-x ediff. Especially check that Info files aren't built.
+
+10. cd EMACS_ROOT_DIR; cvs tag TAG
+ TAG is EMACS_PRETEST_XX_YY_ZZZ for a pretest, EMACS_XX_YY for a
+ release.
+
+11. admin/make-announcement OLD NEW
+ This creates an announcement for pretests. OLD is the version used
+ to make deltas with respect to NEW. Announcements for releases need
+ to be crafted by hand. Use an older announcement to start with:
+ look in ssh://fencepost.gnu.org/~pot/emacs-tarballs/.
+
+12. Now you should upload the files to the GNU ftp server. In order to
+ do that, you must be registered as an Emacs maintainer and have your
+ GPG key acknowledged by the ftp people. Mail <ftp-upload@gnu.org>
+ for instructions. Once you are there, for each file FILE to be
+ released, create a detached GPG binary signature and a clearsigned
+ directive file like this:
+ gpg -b FILE
+ echo directory: emacs/pretest > FILE.directive (for a pretest)
+ echo directory: emacs > FILE.directive (for a release)
+ gpg --clearsign FILE.directive
+ Upload by anonymous ftp to ftp://ftp-upload.gnu.org/ the files FILE,
+ FILE.sig, FILE.directive.asc.
+ For a release, place the files in the /incoming/ftp directory.
+ For a pretest, place the files in /incoming/alpha instead, so that
+ they appear on ftp://alpha.gnu.org/.
+
+13. After five minutes, verify that the files are visible at
+ ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, at
+ ftp://ftp.gnu.org/gnu/emacs/ for a release.
-5. Commit configure, loaddefs.el, cus-load.el, finder-inf.el, README,
- emacs.texi.
+14. For a pretest, let Richard Stallman <rms@gnu.org> know about the new pretest and
+ tell him to announce it using the announcement you prepared. Remind
+ him to set a Reply-to header to <emacs-pretest-bug@gnu.org>.
-6. make-dist --snapshot. Check the contents of the new tar with
- admin/diff-tar-files against an older tar file. Some old pretest
- tarballs are kept under fencepost.gnu.org:~pot/emacs-pretest/.
+15. Shortly before the release, cut the branch with the following commands:
-7. Make xdeltas:
- xdelta delta emacs-OLD.tar.gz emacs-NEW.tar.gz emacs-OLD-NEW.xdelta
+ cvs rtag EMACS_`NUMBER'_BASE
+ cvs rtag -b EMACS_`NUMBER'_RC -r EMACS_`NUMBER'_BASE
-8. tar -zxf emacs-NEW.tar.gz; cd NEW
- Then, either using `script' or M-x compile, do
- configure && make && make -n install
- Save the compilation log in compile-NEW.log and compare it against
- an old one. The easiest way to do that is to visit the old log in
- Emacs, change the version number of the old Emacs to __, do the same
- with the new log and do M-x ediff. Especially check that Info files
- aren't built.
+where `NUMBER' is the major version number of the release. This makes it
+easier to see what changes have been applied to the branch with:
-9. `cvs tag TAG' in the toplevel Emacs dir. TAG is
- EMACS_PRETEST_XX_YY_ZZZ for a pretest, don't know for a release.
+ cvs diff -r EMACS_`NUMBER'_BASE -r EMACS_`NUMBER'_RC
-10. For pretests, make an announcement by selecting new data from the
- change logs and save it into emacs-NEW.announce, don't know for a
- release. To get the new data from change logs, you can use:
- cvs -q diff -b -r EMACS_PRETEST_XX_YY_ZZZ $(find -name ChangeLog|sort) |
- sed -n -e 's/^=\+/\f/p' -e 's/^> //p' -e 's/^diff.*//p' \
- -e 's/^RCS file: .cvsroot.emacs.emacs.\(.*\),v/\1/p'
+or merge changes back to the trunk with "cvs update -j", if necessary.
-11. rsync emacs-NEW.tar.gz emacs-OLD-NEW.xdelta compile-NEW.log \
- emacs-new.announce alpha.gnu.org:/home/ftp/gnu/emacs/pretest/
+After doing this, increase the version number on the trunk as per step 4.
-12. Verify that after five minutes at most the files appear on
- ftp://alpha.gnu.org/gnu/emacs/pretest/.
+16. For a release, Richard should prepare the announcement himself,
+ possibly starting from a previous announcment.
-13. Let Richard Stallman know about the new pretest and tell him to
- announce it using the announcement you prepared.
+# arch-tag: c23c771f-ca26-4584-8a04-50ecf0989390