X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/90073820a4b7a69c2d52cdddffa93d9122f1c746..e468b87f91f26e66a8cde087c1a9c89c67b96d12:/admin/make-tarball.txt diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 42dd61a00d..2c6ccf95c4 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -1,51 +1,97 @@ 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 . + +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 + 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. + +14. For a pretest, let Richard Stallman 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 . -5. Commit configure, loaddefs.el, cus-load.el, finder-inf.el, README, - emacs.texi. +15. Shortly before the release, cut the branch with the following commands: -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/. + cvs rtag EMACS_`NUMBER'_BASE + cvs rtag -b EMACS_`NUMBER'_RC -r EMACS_`NUMBER'_BASE -7. Make xdeltas: - xdelta delta emacs-OLD.tar.gz emacs-NEW.tar.gz emacs-OLD-NEW.xdelta +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: -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. + cvs diff -r EMACS_`NUMBER'_BASE -r EMACS_`NUMBER'_RC -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. +or merge changes back to the trunk with "cvs update -j", if necessary. -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/^=\+/ /p' -e 's/^> //p' -e 's/^diff.*//p' \ - -e 's/^RCS file: .cvsroot.emacs.emacs.\(.*\),v/\1/p' +After doing this, increase the version number on the trunk as per step 4. -11. rsync emacs-NEW.tar.gz emacs-OLD-NEW.xdelta compile-NEW.log \ - emacs-new.announce alpha.gnu.org:/home/ftp/gnu/emacs/pretest/ +16. For a release, Richard should prepare the announcement himself, + possibly starting from a previous announcment. -12. 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