1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-23 10:34:07 +00:00

Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into emacs-25

This commit is contained in:
Vincent Belaïche 2016-05-25 23:44:18 +02:00
commit 6c12c53949
5 changed files with 79 additions and 65 deletions

View File

@ -43,12 +43,19 @@ Optional argument DATE is the release date, default today."
(setq root (expand-file-name root)) (setq root (expand-file-name root))
(unless (file-exists-p (expand-file-name "src/emacs.c" 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)) (user-error "%s doesn't seem to be the root of an Emacs source tree" root))
;; FIXME this does not check that a ChangeLog that exists is not (let ((clog (expand-file-name "ChangeLog" root)))
;; your own personal one. Perhaps we should move any existing file (if (file-exists-p clog)
;; and unconditionally call make ChangeLog? ;; Basic check that a ChangeLog that exists is not your personal one.
;; Or make ChangeLog CHANGELOG=temp and compare with the existing? ;; TODO Perhaps we should move any existing file and unconditionally
(unless (file-exists-p (expand-file-name "ChangeLog" root)) ;; call make ChangeLog? Or make ChangeLog CHANGELOG=temp and compare
(user-error "No top-level ChangeLog - run \"make ChangeLog\" first")) ;; 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) (require 'add-log)
(or date (setq date (funcall add-log-time-format nil t))) (or date (setq date (funcall add-log-time-format nil t)))
(let* ((logs (process-lines "find" root "-name" "ChangeLog")) (let* ((logs (process-lines "find" root "-name" "ChangeLog"))

View File

@ -1361,24 +1361,36 @@ and changed by AUTHOR."
(cons (list author wrote-list cowrote-list changed-list) (cons (list author wrote-list cowrote-list changed-list)
authors-author-list))))) authors-author-list)))))
(defun authors (root) (defun authors (root &optional nologupdate)
"Extract author information from change logs and Lisp source files. "Extract author information from change logs and Lisp source files.
ROOT is the root directory under which to find the files. If called ROOT is the root directory under which to find the files.
interactively, ROOT is read from the minibuffer. Interactively, read ROOT from the minibuffer.
Result is a buffer *Authors* containing authorship information, and a Accurate author information requires up-to-date change logs, so this
buffer *Authors Errors* containing references to unknown files." first updates them, unless optional prefix argument NOLOGUPDATE is non-nil.
(interactive "DEmacs source directory: ") 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)) (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*")) (let ((logs (process-lines find-program root "-name" "ChangeLog*"))
(table (make-hash-table :test 'equal)) (table (make-hash-table :test 'equal))
(buffer-name "*Authors*") (buffer-name "*Authors*")
authors-checked-files-alist authors-checked-files-alist
authors-invalid-file-names) authors-invalid-file-names)
(authors-add-fixed-entries table) (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) (dolist (log logs)
(when (string-match "ChangeLog\\(.[0-9]+\\)?$" log) (when (string-match "ChangeLog\\(.[0-9]+\\)?$" log)
(message "Scanning %s..." log) (message "Scanning %s..." log)

View File

@ -37,14 +37,15 @@ General steps (for each step, check for possible errors):
M-: (require 'authors) RET M-: (require 'authors) RET
M-x 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 is an "*Authors Errors*" buffer, address the issues.
If there was a ChangeLog typo, run "make change-history" and then If there was a ChangeLog typo, fix the relevant entry.
fix the newest ChangeLog history file. If a file was deleted or If a file was deleted or renamed, consider adding an appropriate
renamed, consider adding an appropriate entry to entry to authors-ignored-files, authors-valid-file-names, or
authors-ignored-files, authors-valid-file-names, or
authors-renamed-files-alist. 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. Save the "*Authors*" buffer as etc/AUTHORS.
Check the diff looks reasonable. Maybe add entries to Check the diff looks reasonable. Maybe add entries to
authors-ambiguous-files or authors-aliases, and repeat. authors-ambiguous-files or authors-aliases, and repeat.
@ -85,8 +86,8 @@ General steps (for each step, check for possible errors):
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. 5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the
by M-x set-version. files changed by M-x set-version.
If someone else made a commit between step 1 and now, If someone else made a commit between step 1 and now,
you need to repeat from step 4 onwards. (You can commit the files you need to repeat from step 4 onwards. (You can commit the files

View File

@ -81,7 +81,7 @@ test -d .git || {
--ignore-line='^; ' --format='%B' \ --ignore-line='^; ' --format='%B' \
"$gen_origin..$new_origin" >"ChangeLog.tmp" || exit "$gen_origin..$new_origin" >"ChangeLog.tmp" || exit
if test -s "ChangeLog.tmp"; then if test -e "ChangeLog.tmp"; then
# Fix up bug references. # Fix up bug references.
# This would be better as eg a --transform option to gitlog-to-changelog, # This would be better as eg a --transform option to gitlog-to-changelog,
@ -99,7 +99,7 @@ if test -s "ChangeLog.tmp"; then
` `
start_year= start_year=
end_year= end_year=
for year in $years; do for year in ${years:-`date +%Y`}; do
: ${start_year:=$year} : ${start_year:=$year}
end_year=$year end_year=$year
done done
@ -110,13 +110,19 @@ if test -s "ChangeLog.tmp"; then
year_range=$start_year-$end_year year_range=$start_year-$end_year
fi fi
# Update gen_origin and append a proper copyright notice. # Update gen_origin
sed -n ' if test "$gen_origin" != "$new_origin"; then
1i\ sed -n '
1i\
/^This file records repository revisions/p /^This file records repository revisions/p
s/^commit [0-9a-f]* (exclusive)/commit '"$gen_origin"' (exclusive)/p s/^commit [0-9a-f]* (exclusive)/commit '"$gen_origin"' (exclusive)/p
s/^commit [0-9a-f]* (inclusive)/commit '"$new_origin"' (inclusive)/p s/^commit [0-9a-f]* (inclusive)/commit '"$new_origin"' (inclusive)/p
' <ChangeLog.$nmax >>"ChangeLog.tmp" || exit
fi
# Append a proper copyright notice.
sed -n '
/^See ChangeLog.[0-9]* for earlier/,${ /^See ChangeLog.[0-9]* for earlier/,${
s/ChangeLog\.[0-9]*/ChangeLog.'$nmax'/ s/ChangeLog\.[0-9]*/ChangeLog.'$nmax'/
s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/ s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/

View File

@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex. % Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
% %
\def\texinfoversion{2016-05-07.20} \def\texinfoversion{2016-04-14.07}
% %
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@ -67,10 +67,6 @@
\everyjob{\message{[Texinfo version \texinfoversion]}% \everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active} \catcode`+=\active \catcode`\_=\active}
% LaTeX's \typeout. This ensures that the messages it is used for
% are identical in format to the corresponding ones from latex/pdflatex.
\def\typeout{\immediate\write17}%
\chardef\other=12 \chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo. % We never want plain's \outer definition of \+ in Texinfo.
@ -1538,6 +1534,7 @@
% %
% PDF outline support % PDF outline support
% %
\pdfmakepagedesttrue \relax
% Emulate the primitive of pdfTeX % Emulate the primitive of pdfTeX
\def\pdfdest name#1 xyz{% \def\pdfdest name#1 xyz{%
\special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}% \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}%
@ -3273,8 +3270,8 @@
% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
% Unless we're in typewriter, use \ecfont because the CM text fonts do % Unless we're in typewriter, use \ecfont because the CM text fonts do
% not have braces, and we don't want to switch into math. % not have braces, and we don't want to switch into math.
\def\mylbrace{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
\def\myrbrace{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
\let\{=\mylbrace \let\lbracechar=\{ \let\{=\mylbrace \let\lbracechar=\{
\let\}=\myrbrace \let\rbracechar=\} \let\}=\myrbrace \let\rbracechar=\}
\begingroup \begingroup
@ -4756,7 +4753,7 @@
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
% Used when writing an index entry out to an index file to prevent % Used when writing an index entry out to an index file, to prevent
% expansion of Texinfo commands that can appear in an index entry. % expansion of Texinfo commands that can appear in an index entry.
% %
\def\indexdummies{% \def\indexdummies{%
@ -4892,9 +4889,12 @@
% %
% We want to disable all macros so that they are not expanded by \write. % We want to disable all macros so that they are not expanded by \write.
\macrolist \macrolist
\definedummyword\value
% %
\normalturnoffactive \normalturnoffactive
%
% Handle some cases of @value -- where it does not contain any
% (non-fully-expandable) commands.
\makevalueexpandable
} }
% \commondummiesnofonts: common to \commondummies and \indexnofonts. % \commondummiesnofonts: common to \commondummies and \indexnofonts.
@ -5159,10 +5159,9 @@
\ifx\suffix\indexisfl\def\suffix{f1}\fi \ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file % Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix \immediate\openout\csname#1indfile\endcsname \jobname.\suffix
% Using \immediate above here prevents an object entering into the current % Using \immediate here prevents an object entering into the current box,
% box, which could confound checks such as those in \safewhatsit for % which could confound checks such as those in \safewhatsit for preceding
% preceding skips. % skips.
\typeout{Writing index file \jobname.\suffix}%
\fi} \fi}
\def\indexisfl{fl} \def\indexisfl{fl}
@ -5370,7 +5369,6 @@
% index. The easiest way to prevent this problem is to make sure % index. The easiest way to prevent this problem is to make sure
% there is some text. % there is some text.
\putwordIndexNonexistent \putwordIndexNonexistent
\typeout{No file \jobname.\indexname s.}%
\else \else
\catcode`\\ = 0 \catcode`\\ = 0
% %
@ -6684,14 +6682,7 @@
% 1 and 2 (the page numbers aren't printed), and so are the first % 1 and 2 (the page numbers aren't printed), and so are the first
% two pages of the document. Thus, we'd have two destinations named % two pages of the document. Thus, we'd have two destinations named
% `1', and two named `2'. % `1', and two named `2'.
\ifpdf \ifpdf \global\pdfmakepagedesttrue \fi
\global\pdfmakepagedesttrue
\else
\ifx\XeTeXrevision\thisisundefined
\else
\global\pdfmakepagedesttrue
\fi
\fi
} }
@ -8871,7 +8862,6 @@
% include an _ in the xref name, etc. % include an _ in the xref name, etc.
\indexnofonts \indexnofonts
\turnoffactive \turnoffactive
\def\value##1{##1}%
\expandafter\global\expandafter\let\expandafter\Xthisreftitle \expandafter\global\expandafter\let\expandafter\Xthisreftitle
\csname XR#1-title\endcsname \csname XR#1-title\endcsname
}% }%
@ -9012,14 +9002,14 @@
\fi\fi\fi \fi\fi\fi
} }
% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
% is output afterwards if non-empty. % If its value is nonempty, SUFFIX is output afterward.
%
\def\refx#1#2{% \def\refx#1#2{%
\requireauxfile \requireauxfile
{% {%
\indexnofonts \indexnofonts
\otherbackslash \otherbackslash
\def\value##1{##1}%
\expandafter\global\expandafter\let\expandafter\thisrefX \expandafter\global\expandafter\let\expandafter\thisrefX
\csname XR#1\endcsname \csname XR#1\endcsname
}% }%
@ -9044,18 +9034,16 @@
#2% Output the suffix in any case. #2% Output the suffix in any case.
} }
% This is the macro invoked by entries in the aux file. Define a control % This is the macro invoked by entries in the aux file. Usually it's
% sequence for a cross-reference target (we prepend XR to the control sequence % just a \def (we prepend XR to the control sequence name to avoid
% name to avoid collisions). The value is the page number. If this is a float % collisions). But if this is a float type, we have more work to do.
% type, we have more work to do.
% %
\def\xrdef#1#2{% \def\xrdef#1#2{%
{% Expand the node or anchor name to remove control sequences. {% The node name might contain 8-bit characters, which in our current
% \turnoffactive stops 8-bit characters being changed to commands % implementation are changed to commands like @'e. Don't let these
% like @'e. \refx does the same to retrieve the value in the definition. % mess up the control sequence name.
\indexnofonts \indexnofonts
\turnoffactive \turnoffactive
\def\value##1{##1}%
\xdef\safexrefname{#1}% \xdef\safexrefname{#1}%
}% }%
% %