mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-02 08:22:22 +00:00
6ee8270594
255ba01148
Fix handling of nil PRED2 arg for completion-table-with-pr...949b70a7d8
; Minor comment copyedit in window.c20f9bf30f0
Describe Lao rendering problem3d61657694
Fix docstring of arabic-shaper-ZWNJ-handlingdb949166ec
Handle single-line comments correctly (Bug#26049)795bb233a5
* test/lisp/net/tramp-tests.el (tramp-test16-file-expand-w...ba00ea7d0d
* etc/PROBLEMS: Add URL to relevant issues for xterm+evil bug4a6015811e
; In text.texi fix typo spotted by Štěpán Němec93cd8415b2
Document new treatment of 'comment-auto-fill-only-comments'ca2d94ba61
Do not load Tramp unless `tramp-mode' is non-nil709478eaa8
Prefer `customize-set-variable' in tramp.texi5d36f2227f
Fix last change in hscroll_window_tree72d07d1950
Ediff: add some missing documentation18af404ef3
Support python virtualenv on w32 (Bug#24464)efd0371c23
Improve dired deletion error handling (Bug#28797)5d744e032f
Don't replace user input when completion prefix is empty (...ec6cf35c5f
; Describe xt-mouse problems with Evil modec572e1f329
Return non-nil from gnutls-available-p under GnuTLS 2.xa2cc6d74c5
Fix Flymake help-echo functions across windows (bug#29142)58bb3462ee
Add tests for Flymake backends for Ruby and Perl58e742b21d
Add a Flymake backend for Perl9dee764165
Add a Flymake backend for Ruby3ad712ebc9
Add a Flymake backend for Python (bug#28808)8db2b3a79b
Allow "%" in Tramp host names8c50842790
; Fix typo in test/file-organization.org00fa4449cd
; Fix typo918a2dda07
Use hybrid malloc for FreeBSD (Bug#28308)725ab635d9
Add html-, mhtml- and python-mode support to semantic symref369da28702
Improve documentation of 'window-scroll-functions'93818eed8a
Fix subtle problems in tabulated-list-mode with line numbers1f1de8e872
Make gdb-non-stop-setting default to nil on MS-Windows680e8e119b
Fix gdb-mi prompt after "attach PID" commandff33074546
Fix doc string of 'window-configuration-change-hook'787b75ad71
Improve documentation of window hooksd9be8704ae
Fix hscroll suspension after cursor motion6f43d29d29
; * CONTRIBUTE, admin/make-tarball.txt: Doc tweaks re 'ema...a0d30d6369
Introduce a function to CC Mode which displays the current...383abc8898
; Fix some comment typosb02c2714c3
Fix typos in ediff-wind.el4f38bdec74
Examine tex-chktex--process in the correct buffer94b490529a
* nt/INSTALL.W64: Update to current mingw64 install instru...c25113d4ac
Don't resignal errors in flymake-diag-regione950f329c0
New xref-quit-and-goto-xref command bound to TAB (bug#28814)5d34e1b288
Allow split-window-sensibly to split threshold in further ...2a973edeac
Honor window-switching intents in xref-find-definitions (b...78e9065e9f
* lisp/emacs-lisp/generator.el (iter-do): Add a debug decl...caa63cc96c
* lisp/progmodes/flymake.el (flymake-start): Fix dead buff...9f4f130b79
Fix buffer name comparison in async shell-command # Conflicts: # etc/NEWS # lisp/vc/ediff-wind.el
225 lines
9.6 KiB
Plaintext
225 lines
9.6 KiB
Plaintext
Instructions to create pretest or release tarballs. -*- coding: utf-8 -*-
|
|
-- originally written by Gerd Moellmann, amended by Francesco Potortì
|
|
with the initial help of Eli Zaretskii
|
|
|
|
|
|
Steps to take before starting on the first pretest in any release sequence:
|
|
|
|
0. The release branch (e.g. emacs-26) should already have been made
|
|
and you should use it for all that follows. Diffs from this
|
|
branch should be going to the emacs-diffs mailing list.
|
|
|
|
1. Decide on versions of m4 and autoconf, and ensure you will
|
|
have them available for the duration of the release process.
|
|
|
|
2. Consider increasing the value of the variable
|
|
'customize-changed-options-previous-release' in cus-edit.el to
|
|
refer to a newer version of Emacs. (This is probably needed only
|
|
when preparing the first pretest for a major Emacs release.)
|
|
Commit cus-edit.el if changed.
|
|
|
|
3. Remove any old pretests from https://alpha.gnu.org/gnu/emacs/pretest.
|
|
You can use 'gnupload --delete' (see below for more gnupload details).
|
|
|
|
General steps (for each step, check for possible errors):
|
|
|
|
1. git pull # fetch from the repository
|
|
git status # check for locally modified files
|
|
|
|
Ensure that you have a clean, unmodified state.
|
|
If you switched in-place from another branch to the release branch,
|
|
there could be inappropriate generated ignored files left over.
|
|
You might want to use "git status --ignored" to check for such files,
|
|
or some form of "git clean -x". It's probably simpler and safer to
|
|
make a new working directory exclusively for the release branch.
|
|
|
|
2. Regenerate the etc/AUTHORS file:
|
|
M-: (require 'authors) RET
|
|
M-x authors RET
|
|
|
|
(This first updates the current versioned ChangeLog.N)
|
|
|
|
If there is an "*Authors Errors*" buffer, address the issues.
|
|
If there was a ChangeLog typo, fix the relevant entry.
|
|
If a file was deleted or renamed, consider adding an appropriate
|
|
entry to authors-ignored-files, authors-valid-file-names, or
|
|
authors-renamed-files-alist.
|
|
|
|
If necessary, repeat 'C-u M-x authors' after making those changes.
|
|
Save the "*Authors*" buffer as etc/AUTHORS.
|
|
Check the diff looks reasonable. Maybe add entries to
|
|
authors-ambiguous-files or authors-aliases, and repeat.
|
|
Commit any fixes to authors.el.
|
|
|
|
3. Set the version number (M-x load-file RET admin/admin.el RET, then
|
|
M-x set-version RET). For a pretest, start at version .90. After
|
|
.99, use .990 (so that it sorts).
|
|
|
|
The final pretest should be a release candidate.
|
|
Before a release candidate is made, the tasks listed in
|
|
admin/release-process must be completed.
|
|
|
|
Set the version number to that of the actual release. Pick a date
|
|
about a week from now when you intend to make the release. Use M-x
|
|
add-release-logs to add entries to etc/HISTORY and the ChangeLog
|
|
file. It's best not to commit these files until the release is
|
|
actually made. Merge the entries from (unversioned) ChangeLog
|
|
into the top of the current versioned ChangeLog.N and commit that
|
|
along with etc/HISTORY. Then you can tag that commit as the
|
|
release.
|
|
|
|
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
|
|
following week, you can simply rename the file and use it for the
|
|
actual release. If you need another release candidate, remember
|
|
to adjust the ChangeLog and etc/HISTORY entries.
|
|
|
|
If you need to change only a file(s) that cannot possibly affect
|
|
the build (README, ChangeLog, NEWS, etc.) then rather than doing
|
|
an entirely new build, it is better to unpack the existing
|
|
tarfile, modify the file(s), and tar it back up again.
|
|
|
|
Never replace an existing tarfile! If you need to fix something,
|
|
always upload it with a different name.
|
|
|
|
4. autoreconf -i -I m4 --force
|
|
make bootstrap
|
|
|
|
make -C etc/refcards
|
|
make -C etc/refcards clean
|
|
|
|
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
|
|
|
|
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the
|
|
files changed by M-x set-version.
|
|
|
|
If someone else made a commit between step 1 and now,
|
|
you need to repeat from step 4 onwards. (You can commit the files
|
|
from step 2 and 3 earlier to reduce the chance of this.)
|
|
|
|
6. ./make-dist --snapshot --no-compress
|
|
|
|
Check the contents of the new tar with admin/diff-tar-files
|
|
against the previous release (if this is the first pretest) or the
|
|
previous pretest. If you did not make the previous pretest
|
|
yourself, find it at <https://alpha.gnu.org/gnu/emacs/pretest>.
|
|
Releases are of course at <https://ftp.gnu.org/pub/gnu/emacs/>.
|
|
|
|
If this is the first pretest of a major release, just comparing
|
|
with the previous release may overlook many new files. You can try
|
|
something like 'find . | sort' in a clean repository, and compare the
|
|
results against the new tar contents.
|
|
|
|
7. tar -xf emacs-NEW.tar; cd emacs-NEW
|
|
./configure --prefix=/tmp/emacs && make && make 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, and that
|
|
no autotools (autoconf etc) run.
|
|
|
|
8. cd EMACS_ROOT_DIR && git tag -a TAG && git push origin tag TAG
|
|
TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
|
|
|
|
9. Decide what compression schemes to offer.
|
|
For a release, at least gz and xz:
|
|
gzip --best -c emacs-NEW.tar > emacs-NEW.tar.gz
|
|
xz -c emacs-NEW.tar > emacs-NEW.tar.xz
|
|
For pretests, just xz is probably fine (saves bandwidth).
|
|
|
|
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. For instructions, see
|
|
https://www.gnu.org/prep/maintain/html_node/Automated-Upload-Registration.html
|
|
The simplest method to upload is to use the gnulib
|
|
<https://www.gnu.org/s/gnulib/> script "build-aux/gnupload":
|
|
|
|
For a pretest:
|
|
gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \
|
|
FILE.gz FILE.xz ...
|
|
|
|
For a release:
|
|
gnupload [--user your@gpg.key.email] --to ftp.gnu.org:emacs \
|
|
FILE.gz FILE.xz ...
|
|
|
|
You only need the --user part if you have multiple GPG keys and do
|
|
not want to use the default.
|
|
Obviously, if you do not have a fast uplink, be prepared for the
|
|
upload to take a while.
|
|
|
|
|
|
If you prefer to do it yourself rather than use gnupload:
|
|
|
|
For each FILE, 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 https://alpha.gnu.org/.
|
|
|
|
10. After five minutes, verify that the files are visible at
|
|
https://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or
|
|
https://ftp.gnu.org/gnu/emacs/ for a release.
|
|
|
|
Download them and check the signatures. Check they build.
|
|
|
|
11. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org.
|
|
For a pretest, also bcc: platform-testers@gnu.org.
|
|
For a release, also bcc: info-gnu@gnu.org.
|
|
(The reason for using bcc: is to make it less likely that people
|
|
will followup on the wrong list.)
|
|
See the info-gnu-emacs mailing list archives for the form
|
|
of past announcements. The first pretest announcement, and the
|
|
release announcement, should have more detail.
|
|
Use the emacs-devel topic 'emacs-announce'. The best way to do
|
|
this is to add a header "Keywords: emacs-announce" to your mail.
|
|
(You can also put it in the Subject, but this is not as good
|
|
because replies that invariably are not announcements also get
|
|
sent out as if they were.)
|
|
|
|
12. After a release, update the Emacs pages as below.
|
|
|
|
|
|
UPDATING THE EMACS WEB PAGES AFTER A RELEASE
|
|
|
|
As soon as possible after a release, the Emacs web pages should be updated.
|
|
Anyone with write access to the Emacs code repository can do this.
|
|
For instructions, see <https://savannah.gnu.org/cvs/?group=emacs>.
|
|
Changes go live more or less as soon as they are committed.
|
|
|
|
The pages to update are:
|
|
|
|
emacs.html (for a new major release, a more thorough update is needed)
|
|
history.html
|
|
add the new NEWS file as news/NEWS.xx.y
|
|
|
|
For every new release, a banner is displayed on top of the emacs.html
|
|
page. Uncomment and the release banner in emacs.html. Keep it on the
|
|
page for about a month, then comment it again.
|
|
|
|
Use M-x make-manuals from admin/admin.el to regenerate the html
|
|
manuals in manual/. If there are new manuals, add appropriate index
|
|
pages in manual/ and add them to manual/index.html. In the
|
|
manual/html_node directory, delete any old manual pages that are no
|
|
longer present.
|
|
|
|
Tar up the generated html_node/emacs/ and elisp/ directories and update
|
|
the files manual/elisp.html_node.tar.gz and emacs.html_node.tar.gz.
|
|
|
|
Use M-x make-manuals-dist from admin/admin.el to update the
|
|
manual/texi/ tarfiles.
|
|
|
|
Add compressed copies of the main info pages from the tarfile to manual/info/.
|
|
|
|
Update the refcards/pdf/ and ps/ directories, and also
|
|
refcards/emacs-refcards.tar.gz (use make -C etc/refcards pdf ps dist).
|
|
|
|
Browsing <https://web.cvs.savannah.gnu.org/viewvc/?root=emacs> is one
|
|
way to check for any files that still need updating.
|