diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2016-05-26 12:55:06 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2016-05-26 12:55:06 -0700 |
commit | 0bf5739b77c75f13d46fc49d5e3c098fe49a5070 (patch) | |
tree | d342da7bc9065197736a8184e55c9925a40f04f0 /admin | |
parent | 764f04871d67a5aad8943136d5142ed59bfa9a51 (diff) | |
parent | c3489d050405ccb026cd44a280ead3a5f6b456d9 (diff) |
Merge from origin/emacs-25
c3489d0 * lisp/w32-fns.el (set-message-beep, w32-get-locale-info) (w3...
a4d882c Correct old cell name unbinding when renaming cell.
6c12c53 Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into...
0be6725 Document problem: slow screen refresh on missing font.
853b9b9 * admin/admin.el (add-release-logs): Basic check of existing ...
5fa80cf * build-aux/gitlog-to-emacslog: Handle empty generated Change...
3c79e51 * admin/admin.el (add-release-logs): Generate ChangeLog if ne...
42275df * doc/misc/texinfo.tex: Revert previous change (Bug#23611).
3f4a9d9 * admin/authors.el (authors): First update the ChangeLog.
897fb6f ; 'Changes from the pre-25.1 API' copyedits
825ca25 Rename vc-stay-local back to vc-cvs-stay-local
4efb3e8 * doc/emacs/files.texi (Comparing Files): * doc/emacs/trouble...
b995d1e * doc/misc/eww.texi (Advanced): Fix xref.
2e589c0 Fix cross-references between manuals
f3d2ded * doc/misc/vhdl-mode.texi (Sample Init File): Rename node to ...
906c810 ; * admin/release-process: Move etc/HISTORY from here... ; * ...
bea1b65 * admin/admin.el (add-release-logs): Also update etc/HISTORY.
503e752 ; * CONTRIBUTE: Fix a typo.
fbfd478 Avoid aborting due to errors in arguments of 'set-face-attrib...
bdfbe6d ; * admin/release-process: Copyedits.
44a6aed ; * test/automated/data-tests.el: Standardize license notice.
c33ed39 ; * test/automated/viper-tests.el: Standardize license notice.
df4a14b Add automated test for viper-tests.el
c0139e3 Fix viper undo breakage from undo-boundary changes
920d76c Fix reference to obsolete fn ps-eval-switch
18a9bc1 Do not trash symlinks to init file
2671179 Don't print the "decomposition" line for control chars in wha...
869092c Bring back xterm pasting with middle mouse
5ab0830 Provide workaround for xftfont rendering problem
c9f7ec7 * lisp/desktop.el: Disable restore frameset if in non-graphic...
30989a0 Mention GTK+ problems in etc/PROBLEMS
421e3c4 * lisp/emacs-lisp/package.el (package-refresh-contents):
dadfc30 Revert "epg: Add a way to detect gpg1 executable for tests"
e41a5cb Avoid errors with Czech and Slovak input methods
d4ae6d7 epg: Add a way to detect gpg1 executable for tests
ebc3a94 * lisp/emacs-lisp/package.el: Fix free variable warnings.
6e71295 * lisp/emacs-lisp/package.el (package--with-response-buffer):
c45d9f6 Improve documentation of 'server-name'
3b5e38c Modernize ASLR advice in etc/PROBLEMS
1fe1e0a * lisp/char-fold.el: Rename from character-fold.el.
Diffstat (limited to 'admin')
-rw-r--r-- | admin/admin.el | 23 | ||||
-rw-r--r-- | admin/authors.el | 32 | ||||
-rw-r--r-- | admin/make-tarball.txt | 36 | ||||
-rw-r--r-- | admin/release-process | 61 |
4 files changed, 94 insertions, 58 deletions
diff --git a/admin/admin.el b/admin/admin.el index fe807ff96f..4af1ff9003 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -30,6 +30,7 @@ (defun add-release-logs (root version &optional date) "Add \"Version VERSION released.\" change log entries in ROOT. +Also update the etc/HISTORY file. Root must be the root of an Emacs source tree. Optional argument DATE is the release date, default today." (interactive (list (read-directory-name "Emacs root directory: ") @@ -42,6 +43,19 @@ Optional argument DATE is the release date, default today." (setq root (expand-file-name root)) (unless (file-exists-p (expand-file-name "src/emacs.c" root)) (user-error "%s doesn't seem to be the root of an Emacs source tree" root)) + (let ((clog (expand-file-name "ChangeLog" root))) + (if (file-exists-p clog) + ;; Basic check that a ChangeLog that exists is not your personal one. + ;; TODO Perhaps we should move any existing file and unconditionally + ;; call make ChangeLog? Or make ChangeLog CHANGELOG=temp and compare + ;; with the existing? + (with-temp-buffer + (insert-file-contents clog) + (or (re-search-forward "^[ \t]*Copyright.*Free Software" nil t) + (user-error "ChangeLog looks like a personal one - remove it?"))) + (or + (zerop (call-process "make" nil nil nil "-C" root "ChangeLog")) + (error "Problem generating ChangeLog")))) (require 'add-log) (or date (setq date (funcall add-log-time-format nil t))) (let* ((logs (process-lines "find" root "-name" "ChangeLog")) @@ -53,7 +67,14 @@ Optional argument DATE is the release date, default today." (dolist (log logs) (find-file log) (goto-char (point-min)) - (insert entry)))) + (insert entry))) + (let ((histfile (expand-file-name "etc/HISTORY" root))) + (unless (file-exists-p histfile) + (error "%s not present" histfile)) + (find-file histfile) + (goto-char (point-max)) + (search-backward "") + (insert (format "GNU Emacs %s (%s) emacs-%s\n\n" version date version)))) (defun set-version-in-file (root file version rx) "Subroutine of `set-version' and `set-copyright'." diff --git a/admin/authors.el b/admin/authors.el index f1aa2fa442..b93c9b251c 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -1361,24 +1361,36 @@ and changed by AUTHOR." (cons (list author wrote-list cowrote-list changed-list) authors-author-list))))) -(defun authors (root) +(defun authors (root &optional nologupdate) "Extract author information from change logs and Lisp source files. -ROOT is the root directory under which to find the files. If called -interactively, ROOT is read from the minibuffer. -Result is a buffer *Authors* containing authorship information, and a -buffer *Authors Errors* containing references to unknown files." - (interactive "DEmacs source directory: ") +ROOT is the root directory under which to find the files. +Interactively, read ROOT from the minibuffer. +Accurate author information requires up-to-date change logs, so this +first updates them, unless optional prefix argument NOLOGUPDATE is non-nil. +The result is a buffer *Authors* containing authorship information, +and a buffer *Authors Errors* containing references to unknown files." + (interactive "DEmacs source directory: \nP") (setq root (expand-file-name root)) + (unless (file-exists-p (expand-file-name "src/emacs.c" root)) + (unless (y-or-n-p + (format "Not the root directory of Emacs: %s, continue? " root)) + (user-error "Not the root directory"))) + ;; May contain your personal entries. + (or (not (file-exists-p (expand-file-name "ChangeLog" root))) + (y-or-n-p "Unversioned ChangeLog present, continue?") + (user-error "Unversioned ChangeLog may have irrelevant entries")) + (or nologupdate + ;; There are likely to be things that need fixing, so we update + ;; the versioned ChangeLog.N rather than the unversioned ChangeLog. + (zerop (call-process "make" nil nil nil + "-C" root "change-history-nocommit")) + (error "Problem updating ChangeLog")) (let ((logs (process-lines find-program root "-name" "ChangeLog*")) (table (make-hash-table :test 'equal)) (buffer-name "*Authors*") authors-checked-files-alist authors-invalid-file-names) (authors-add-fixed-entries table) - (unless (file-exists-p (expand-file-name "src/emacs.c" root)) - (unless (y-or-n-p - (format "Not the root directory of Emacs: %s, continue? " root)) - (error "Not the root directory"))) (dolist (log logs) (when (string-match "ChangeLog\\(.[0-9]+\\)?$" log) (message "Scanning %s..." log) diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 030ad4cee6..77486cc639 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -37,38 +37,38 @@ General steps (for each step, check for possible errors): 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, run "make change-history" and then - fix the newest ChangeLog history file. If a file was deleted or - renamed, consider adding an appropriate entry to - authors-ignored-files, authors-valid-file-names, or + 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 M-x authors after making those changes. + 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 release, add released ChangeLog - entries (create a ChangeLog symlink a la vc-dwim, then run M-x - add-release-logs RET, then run the shell command 'vc-dwim --commit'). - - For a pretest, start at version .90. After .99, use .990 (so that - it sorts). + 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. 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 vc-dwim and - M-x add-release-logs as described above to add commit messages - that will appear in the tarball's automatically-generated ChangeLog - file as entries for that date. + 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 entries. + 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 @@ -86,8 +86,8 @@ General steps (for each step, check for possible errors): 5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. - Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed - by M-x set-version. + 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 diff --git a/admin/release-process b/admin/release-process index 2668ea3b44..28f2307846 100644 --- a/admin/release-process +++ b/admin/release-process @@ -7,7 +7,7 @@ Each release cycle will be split into two periods. ** Phase one: development The first phase of the release schedule is the "heads-down" working -period for new features, on the 'master' branch and several feature +period for new features, on the 'master' branch and any needed feature branches. ** Phase two: fixing and stabilizing the release branch @@ -29,47 +29,60 @@ command to do that, then commit the changes it made and push to 'master'. For major releases, also update the value of 'customize-changed-options-previous-release'. -The 2 main manuals, the User Manual and the Emacs Lisp Manual, need to -be proofread, preferably by at least 2 different persons, and any -uncovered problems fixed. This is a lot of work, so it is advisable -to divide the job between several people (see the checklist near the -end of this file). +Each chapter of the two main manuals, the User Manual and the Emacs +Lisp Manual, should be proofread, preferably by at least two people. +This job is so big that it should be considered a collective +responsibility, not fobbed off on just a few people. After each +chapter is checked, mark off the name(s) of those who checked it in +the checklist near the end of this file. In parallel to this phase, 'master' can receive new features, to be released in the next release cycle. From time to time, the master branches merges bugfix commits from the "emacs-NN" branch. +See admin/gitmerge.el. * RELEASE-CRITICAL BUGS -Emacs uses the "blocking bug(s)" feature of Debbugs for bugs need to -be addressed in the next release. +Emacs uses the "blocking" feature of Debbugs for bugs that need to be +addressed in the next release. Currently, bug#19759 is the tracking bug for release of 25.1 and bug#21966 is the tracking bug for release of 25.2. Say bug#123 needs +bug#21966 is the tracking bug for the next release. Say bug#123 needs to be fixed for Emacs 25.1. Send a message to control@debbugs.gnu.org that says: block 19759 by 123 -Change "block" to "unblock" to unblock the bug. +Change "block" to "unblock" to remove a bug from the list. Closed +bugs are not listed as blockers, so you do not need to explicitly +unblock one that has been closed. You may need to force an update of +the tracking bug with ctrl-f5/shift-reload to see the latest version. + * TO BE DONE SHORTLY BEFORE RELEASE -** Make sure the Copyright date reflects the current year in the source -files. See 'admin/notes/years' for information about maintaining -copyright years for GNU Emacs. +See 'admin/make-tarball.txt' for the details of making a release or pretest. + +** Make sure the Copyright date reflects the current year in all source files. +(This should be done each January anyway, regardless of releases.) +See admin/update-copyright and admin.el's set-copyright. +For more details, see 'admin/notes/years'. ** Make sure the necessary sources and scripts for any generated files are included in the source tarball. (They don't need to be installed, -so e.g. admin/ is fine.) - -** Regenerate AUTHORS by using admin/authors.el -(The instructions are at the beginning of that file.) +so e.g. admin/ is fine.) This is important for legal compliance. ** Remove temporary +++/--- lines in NEWS. But first make sure there are no unmarked entries, and update the -documentation (or decide no updates are necessary) for those that -aren't. +documentation (or decide no updates are necessary) for those that aren't. + +** Try to reorder NEWS: most important things first, related items together. + +** For a major release, add a "New in Emacs XX" section to faq.texi. + +** cusver-check from admin.el can help find new defcustoms missing +:version tags. ** Manuals Check for node names using problematic characters: @@ -85,8 +98,7 @@ For major releases, rewrite the "Antinews" appendix of the User Manual previous version. The way to do that is read NEWS, pick up the more significant changes and new features in the upcoming release, then describe the "benefits" from losing those features. Be funny, use -humor. The text written for the previous major release can serve as -good example. +humor. The text written for the previous releases can serve as an example. Check cross-references between the manuals (e.g. from emacs to elisp) are correct. You can use something like the following in the info @@ -147,10 +159,6 @@ size that the GNU Press are going to use when they print the manuals. I think this is different to what you get if you just use e.g. 'make emacs.pdf' (e.g., enable "smallbook"). -** Try to reorder NEWS: most important things first, related items together. - -** For a major release, add a "New in Emacs XX" section to faq.texi. - ** Check the keybindings in the refcards are correct, and add any new ones. What paper size are the English versions supposed to be on? On Debian testing, the packages texlive-lang-czechslovak and @@ -172,11 +180,6 @@ pt-br Rodrigo Real ru Alex Ott sk Miroslav Vaško -** cusver-check from admin.el can help find new defcustoms missing -:version tags. - -** Add a line to etc/HISTORY for the release version number and date. - * BUGS ** Check for modes which bind M-s that conflicts with a new global binding M-s |