* build-aux/config.guess: Synced by "make gnulib-update". * build-aux/config.sub: Likewise. * build-aux/gendocs.sh: Likewise. * build-aux/gnupload: Likewise. * build-aux/texinfo.tex: Likewise. * doc/gendocs_template: Likewise. * doc/standards.texi: Likewise. * maint.mk: Likewise.
Signed-off-by: Stefano Lattarini <[email protected]> --- I've taken the liberty to push this obvious patch as well. Without it, an "autoreconf -vfi" issued with Automake 1.13 early in PATH caused the files 'build-aux/config.guess' and 'build-aux/config.sub' to be updated, thus leaving the working copy of the repository in a "dirty" state. build-aux/config.guess | 4 +- build-aux/config.sub | 23 ++++++--- build-aux/gendocs.sh | 138 ++++++++++++++++++++++++++++++++----------------- build-aux/gnupload | 17 +++--- build-aux/texinfo.tex | 37 +++++++++---- doc/gendocs_template | 2 - doc/standards.texi | 45 ++++++++++------ maint.mk | 136 +++++++++++++++++++++++++++++++----------------- 8 files changed, 263 insertions(+), 139 deletions(-) diff --git a/build-aux/config.guess b/build-aux/config.guess index 137bedf..872b96a 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. -timestamp='2012-08-14' +timestamp='2012-09-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -306,7 +306,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) diff --git a/build-aux/config.sub b/build-aux/config.sub index bdda9e4..8df5511 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. -timestamp='2012-08-18' +timestamp='2012-12-06' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -156,7 +156,7 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; @@ -259,8 +259,10 @@ case $basic_machine in | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ + | arc \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ @@ -273,7 +275,7 @@ case $basic_machine in | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -389,7 +391,8 @@ case $basic_machine in | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -788,7 +791,7 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze*) basic_machine=microblaze-xilinx ;; mingw64) @@ -1023,7 +1026,11 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; - rdos) + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) basic_machine=i386-pc os=-rdos ;; diff --git a/build-aux/gendocs.sh b/build-aux/gendocs.sh index c293f96..0c0bc4b 100755 --- a/build-aux/gendocs.sh +++ b/build-aux/gendocs.sh @@ -2,7 +2,7 @@ # gendocs.sh -- generate a GNU manual in many formats. This script is # mentioned in maintain.texi. See the help message below for usage details. -scriptversion=2012-09-02.17 +scriptversion=2012-10-27.11 # Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 # Free Software Foundation, Inc. @@ -30,6 +30,12 @@ scriptversion=2012-09-02.17 # # An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib). +# TODO: +# - image importation was only implemented for HTML generated by +# makeinfo. But it should be simple enough to adjust. +# - images are not imported in the source tarball. All the needed +# formats (PDF, PNG, etc.) should be included. + prog=`basename "$0"` srcdir=`pwd` @@ -39,12 +45,11 @@ templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/ : ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} : ${MAKEINFO="makeinfo"} : ${TEXI2DVI="texi2dvi -t @finalout"} -: ${DVIPS="dvips"} : ${DOCBOOK2HTML="docbook2html"} : ${DOCBOOK2PDF="docbook2pdf"} -: ${DOCBOOK2PS="docbook2ps"} : ${DOCBOOK2TXT="docbook2txt"} : ${GENDOCS_TEMPLATE_DIR="."} +: ${PERL='perl'} : ${TEXI2HTML="texi2html"} unset CDPATH unset use_texi2html @@ -66,8 +71,9 @@ discussion: Options: -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} -o OUTDIR write files into OUTDIR, instead of manual/. + -I DIR append DIR to the Texinfo search path. --email ADR use ADR as contact in generated web pages. - --docbook convert to DocBook too (xml, txt, html, pdf and ps). + --docbook convert through DocBook too (xml, txt, html, pdf). --html ARG pass indicated ARG to makeinfo or texi2html for HTML targets. --info ARG pass indicated ARG to makeinfo for Info, instead of --no-split. --texi2html use texi2html to generate HTML targets. @@ -107,11 +113,11 @@ first copy or symlink all Texinfo sources into a single directory. As implied above, by default monolithic Info files are generated. If you want split Info, or other Info options, use --info to override. -You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, and -DVIPS to control the programs that get executed, and +You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, +and PERL to control the programs that get executed, and GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is looked for. With --docbook, the environment variables DOCBOOK2HTML, -DOCBOOK2PDF, DOCBOOK2PS, and DOCBOOK2TXT are also respected. +DOCBOOK2PDF, and DOCBOOK2TXT are also respected. By default, makeinfo and texi2dvi are run in the default (English) locale, since that's the language of most Texinfo manuals. If you @@ -121,15 +127,11 @@ SETLANG setting in the source. Email bug reports or enhancement requests to [email protected]. " -calcsize() -{ - size=`ls -ksl $1 | awk '{print $1}'` - echo $size -} - MANUAL_TITLE= PACKAGE= [email protected] # please override with --email +commonarg= # Options passed to all the tools (-I dir). +dirs= # -I's directories. htmlarg= infoarg=--no-split outdir=manual @@ -142,6 +144,7 @@ while test $# -gt 0; do --version) echo "$version"; exit 0;; -s) shift; srcfile=$1;; -o) shift; outdir=$1;; + -I) shift; commonarg="$commonarg -I '$1'"; dirs="$dirs $1";; --docbook) docbook=yes;; --html) shift; htmlarg=$1;; --info) shift; infoarg=$1;; @@ -190,6 +193,55 @@ if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then exit 1 fi +# Function to return size of $1 in something resembling kilobytes. +calcsize() +{ + size=`ls -ksl $1 | awk '{print $1}'` + echo $size +} + +# copy_images OUTDIR HTML-FILE... +# ------------------------------- +# Copy all the images needed by the HTML-FILEs into OUTDIR. Look +# for them in the -I directories. +copy_images() +{ + local odir + odir=$1 + shift + $PERL -n -e " +BEGIN { + \$me = '$prog'; + \$odir = '$odir'; + @dirs = qw($dirs); +} +" -e ' +/<img src="(.*?)"/g && ++$need{$1}; + +END { + #print "$me: @{[keys %need]}\n"; # for debugging, show images found. + FILE: for my $f (keys %need) { + for my $d (@dirs) { + if (-f "$d/$f") { + use File::Basename; + my $dest = dirname ("$odir/$f"); + # + use File::Path; + -d $dest || mkpath ($dest) + || die "$me: cannot mkdir $dest: $!\n"; + # + use File::Copy; + copy ("$d/$f", $dest) + || die "$me: cannot copy $d/$f to $dest: $!\n"; + next FILE; + } + } + die "$me: $ARGV: cannot find image $f\n"; + } +} +' -- "$@" || exit 1 +} + case $outdir in /*) abs_outdir=$outdir;; *) abs_outdir=$srcdir/$outdir;; @@ -197,7 +249,7 @@ esac echo "Generating output formats for $srcfile" -cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $infoarg \"$srcfile\"" +cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" echo "Generating info file(s)... ($cmd)" eval "$cmd" mkdir -p "$outdir/" @@ -206,29 +258,23 @@ info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` # do not mv the info files, there's no point in having them available # separately on the web. -cmd="$SETLANG ${TEXI2DVI} \"$srcfile\"" +cmd="$SETLANG $TEXI2DVI $commonarg \"$srcfile\"" echo "Generating dvi ... ($cmd)" eval "$cmd" -# now, before we compress dvi: -echo "Generating postscript..." -${DVIPS} $PACKAGE -o -gzip -f -9 $PACKAGE.ps -ps_gz_size=`calcsize $PACKAGE.ps.gz` -mv $PACKAGE.ps.gz "$outdir/" - # compress/finish dvi: gzip -f -9 $PACKAGE.dvi dvi_gz_size=`calcsize $PACKAGE.dvi.gz` mv $PACKAGE.dvi.gz "$outdir/" -cmd="$SETLANG ${TEXI2DVI} --pdf \"$srcfile\"" +cmd="$SETLANG $TEXI2DVI --pdf $commonarg \"$srcfile\"" echo "Generating pdf ... ($cmd)" eval "$cmd" pdf_size=`calcsize $PACKAGE.pdf` mv $PACKAGE.pdf "$outdir/" -cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\"" +opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" +cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" echo "Generating ASCII... ($cmd)" eval "$cmd" ascii_size=`calcsize $PACKAGE.txt` @@ -238,7 +284,7 @@ mv $PACKAGE.txt "$outdir/" html_split() { - opt="--split=$1 $htmlarg --node-files" + opt="--split=$1 $commonarg $htmlarg --node-files" cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" echo "Generating html by $1... ($cmd)" eval "$cmd" @@ -256,7 +302,7 @@ html_split() } if test -z "$use_texi2html"; then - opt="--no-split --html -o $PACKAGE.html $htmlarg" + opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" echo "Generating monolithic html... ($cmd)" rm -rf $PACKAGE.html # in case a directory is left over @@ -264,23 +310,25 @@ if test -z "$use_texi2html"; then html_mono_size=`calcsize $PACKAGE.html` gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` + copy_images "$outdir/" $PACKAGE.html mv $PACKAGE.html "$outdir/" - cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\"" + opt="--html -o $PACKAGE.html $commonarg $htmlarg" + cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" echo "Generating html by node... ($cmd)" eval "$cmd" split_html_dir=$PACKAGE.html + copy_images $split_html_dir/ $split_html_dir/*.html ( - cd ${split_html_dir} || exit 1 - tar -czf "$abs_outdir/${PACKAGE}.html_node.tar.gz" -- *.html + cd $split_html_dir || exit 1 + tar -czf "$abs_outdir/$PACKAGE.html_node.tar.gz" -- * ) - html_node_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node.tar.gz"` - rm -f "$outdir"/html_node/*.html - mkdir -p "$outdir/html_node/" - mv ${split_html_dir}/*.html "$outdir/html_node/" - rmdir ${split_html_dir} + html_node_tgz_size=`calcsize "$outdir/$PACKAGE.html_node.tar.gz"` + rm -rf "$outdir/html_node/" + mv $split_html_dir "$outdir/html_node/" else - cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\"" + opt="--output $PACKAGE.html $commonarg $htmlarg" + cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" echo "Generating monolithic html... ($cmd)" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" @@ -304,7 +352,8 @@ d=`dirname $srcfile` texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` if test -n "$docbook"; then - cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml" + opt="-o - --docbook $commonarg" + cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" echo "Generating docbook XML... ($cmd)" eval "$cmd" docbook_xml_size=`calcsize $PACKAGE-db.xml` @@ -313,7 +362,8 @@ if test -n "$docbook"; then mv $PACKAGE-db.xml "$outdir/" split_html_db_dir=html_node_db - cmd="${DOCBOOK2HTML} -o $split_html_db_dir \"${outdir}/$PACKAGE-db.xml\"" + opt="$commonarg -o $split_html_db_dir" + cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" echo "Generating docbook HTML... ($cmd)" eval "$cmd" ( @@ -326,20 +376,13 @@ if test -n "$docbook"; then mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" rmdir ${split_html_db_dir} - cmd="${DOCBOOK2TXT} \"${outdir}/$PACKAGE-db.xml\"" + cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" echo "Generating docbook ASCII... ($cmd)" eval "$cmd" docbook_ascii_size=`calcsize $PACKAGE-db.txt` mv $PACKAGE-db.txt "$outdir/" - cmd="${DOCBOOK2PS} \"${outdir}/$PACKAGE-db.xml\"" - echo "Generating docbook PS... ($cmd)" - eval "$cmd" - gzip -f -9 -c $PACKAGE-db.ps >"$outdir/$PACKAGE-db.ps.gz" - docbook_ps_gz_size=`calcsize "$outdir/$PACKAGE-db.ps.gz"` - mv $PACKAGE-db.ps "$outdir/" - - cmd="${DOCBOOK2PDF} \"${outdir}/$PACKAGE-db.xml\"" + cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" echo "Generating docbook PDF... ($cmd)" eval "$cmd" docbook_pdf_size=`calcsize $PACKAGE-db.pdf` @@ -353,6 +396,7 @@ if test -z "$use_texi2html"; then else CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" fi + curdate=`$SETLANG date '+%B %d, %Y'` sed \ -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ @@ -367,13 +411,11 @@ sed \ -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ -e "s!%%PDF_SIZE%%!$pdf_size!g" \ - -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \ -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ - -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \ -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ diff --git a/build-aux/gnupload b/build-aux/gnupload index 186d2ad..f6b999b 100755 --- a/build-aux/gnupload +++ b/build-aux/gnupload @@ -1,7 +1,7 @@ #!/bin/sh # Sign files and upload them. -scriptversion=2012-06-11.00; # UTC +scriptversion=2012-12-11.16; # UTC # Copyright (C) 2004-2012 Free Software Foundation, Inc. # @@ -242,6 +242,8 @@ fi # Make sure passphrase is not exported in the environment. unset passphrase +unset passphrase_fd_0 +GNUPGHOME=${GNUPGHOME:-$HOME/.gnupg} # Reset PATH to be sure that echo is a built-in. We will later use # 'echo $passphrase' to output the passphrase, so it is important that @@ -249,12 +251,13 @@ unset passphrase # listings with their arguments...). # Remember this script runs with 'set -e', so if echo is not built-in # it will exit now. -if $dry_run; then :; else +if $dry_run || grep -q "^use-agent" $GNUPGHOME/gpg.conf; then :; else PATH=/empty echo -n "Enter GPG passphrase: " stty -echo read -r passphrase stty echo echo + passphrase_fd_0="--passphrase-fd 0" fi if test $# -ne 0; then @@ -262,7 +265,7 @@ if test $# -ne 0; then do echo "Signing $file ..." rm -f $file.sig - echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 -ba -o $file.sig $file done fi @@ -320,12 +323,12 @@ upload () case $dest in alpha.gnu.org:*) mkdirective "$destdir" "$base" "$file" "$stmt" - echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc ;; ftp.gnu.org:*) mkdirective "$destdir" "$base" "$file" "$stmt" - echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc ;; savannah.gnu.org:*) @@ -344,7 +347,7 @@ upload () destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'` destdir_topdir=`echo "$destdir" | sed 's,/.*,,'` mkdirective "$destdir_p1" "$base" "$file" "$stmt" - echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive for f in $files $base.directive.asc do echo put $f @@ -353,7 +356,7 @@ upload () /*) dest_host=`echo "$dest" | sed 's,:.*,,'` mkdirective "$destdir" "$base" "$file" "$stmt" - echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive $dbg cp $files $base.directive.asc $dest_host ;; *) diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex index f3093d0..b5f3141 100644 --- a/build-aux/texinfo.tex +++ b/build-aux/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2012-09-12.16} +\def\texinfoversion{2012-11-08.11} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -6559,16 +6559,9 @@ end \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \parindent=0pt - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \else - \let\nonarrowing = \relax \fi \parsearg\quotationlabel } @@ -6594,6 +6587,32 @@ end \fi } +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>} % If we want to allow any <char> as delimiter, diff --git a/doc/gendocs_template b/doc/gendocs_template index f3a3ff6..a62ad61 100644 --- a/doc/gendocs_template +++ b/doc/gendocs_template @@ -45,8 +45,6 @@ (%%ASCII_GZ_SIZE%%K bytes gzipped)</a>.</li> <li><a href="%%PACKAGE%%.dvi.gz">TeX dvi file (%%DVI_GZ_SIZE%%K bytes gzipped)</a>.</li> -<li><a href="%%PACKAGE%%.ps.gz">PostScript file - (%%PS_GZ_SIZE%%K bytes gzipped)</a>.</li> <li><a href="%%PACKAGE%%.pdf">PDF file (%%PDF_SIZE%%K bytes)</a>.</li> <li><a href="%%PACKAGE%%.texi.tar.gz">Texinfo source diff --git a/doc/standards.texi b/doc/standards.texi index fc92652..5fb433f 100644 --- a/doc/standards.texi +++ b/doc/standards.texi @@ -3,7 +3,7 @@ @setfilename standards.info @settitle GNU Coding Standards @c This date is automagically updated when you save this file: -@set lastupdate June 30, 2012 +@set lastupdate November 25, 2012 @c %**end of header @dircategory GNU organization @@ -1047,7 +1047,8 @@ have legal significance. Finally, here is the table of our suggested license abbreviations. Any abbreviation can be followed by @samp{v@var{version}[+]}, meaning that particular version, or later versions with the @samp{+}, as shown -above. +above. In the case of a GNU license, @emph{always} indicate the permitted +versions in this way. In the case of exceptions for extra permissions with the GPL, we use @samp{/} for a separator; the version number can follow the license @@ -4063,6 +4064,7 @@ ignore most of its arguments. @section Making Releases @cindex packaging +@cindex version numbers, for releases You should identify each release with a pair of version numbers, a major version and a minor. We have no objection to using more than two numbers, but it is very unlikely that you really need them. @@ -4079,20 +4081,28 @@ and never changed automatically; non-source files are produced from source files by programs under the control of the Makefile. @cindex @file{README} file -The distribution should contain a file named @file{README} which gives -the name of the package, and a general description of what it does. It -is also good to explain the purpose of each of the first-level -subdirectories in the package, if there are any. The @file{README} file -should either state the version number of the package, or refer to where -in the package it can be found. - -The @file{README} file should refer to the file @file{INSTALL}, which -should contain an explanation of the installation procedure. - -The @file{README} file should also refer to the file which contains the -copying conditions. The GNU GPL, if used, should be in a file called -@file{COPYING}. If the GNU LGPL is used, it should be in a file called +The distribution should contain a file named @file{README} with a +general overview of the package: + +@itemize +@item the name of the package; + +@item the version number of the package, or refer to where in the +package the version can be found; + +@item a general description of what the package does; + +@item a reference to the the file @file{INSTALL}, which +should in turn contain an explanation of the installation procedure; + +@item a brief explanation of any unusual top-level directories or +files, or other hints for readers to find their way around the source; + +@item a reference to the file which contains the copying conditions. +The GNU GPL, if used, should be in a file called @file{COPYING}. If +the GNU LGPL is used, it should be in a file called @file{COPYING.LESSER}. +@end itemize Naturally, all the source files must be in the distribution. It is okay to include non-source files in the distribution along with the @@ -4100,9 +4110,10 @@ source files they are generated from, provided they are up-to-date with the source they are made from, and machine-independent, so that normal building of the distribution will never modify them. We commonly include non-source files produced by Autoconf, Automake, -Bison, @code{lex}, @TeX{}, and @code{makeinfo}; this helps avoid +Bison, @code{flex}, @TeX{}, and @code{makeinfo}; this helps avoid unnecessary dependencies between our distributions, so that users can -install whichever packages they want to install. +install whichever versions of whichever packages they like. Do not +induce new dependencies on other software lightly. Non-source files that might actually be modified by building and installing the program should @strong{never} be included in the diff --git a/maint.mk b/maint.mk index 5d63b49..93c2508 100644 --- a/maint.mk +++ b/maint.mk @@ -28,6 +28,28 @@ ifneq ($(build_aux),) set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)") endif +# Helper variables. +_empty = +_sp = $(_empty) $(_empty) + +# _equal,S1,S2 +# ------------ +# If S1 == S2, return S1, otherwise the empty string. +_equal = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) + +# member-check,VARIABLE,VALID-VALUES +# ---------------------------------- +# Check that $(VARIABLE) is in the space-separated list of VALID-VALUES, and +# return it. Die otherwise. +member-check = \ + $(strip \ + $(if $($(1)), \ + $(if $(findstring $(_sp),$($(1))), \ + $(error invalid $(1): '$($(1))', expected $(2)), \ + $(or $(findstring $(_sp)$($(1))$(_sp),$(_sp)$(2)$(_sp)), \ + $(error invalid $(1): '$($(1))', expected $(2)))), \ + $(error $(1) undefined))) + # Do not save the original name or timestamp in the .tar.gz file. # Use --rsyncable if available. gzip_rsyncable := \ @@ -52,9 +74,9 @@ _dot_escaped_srcdir = $(subst .,\.,$(srcdir)) # Post-process $(VC_LIST) output, prepending $(srcdir)/, but only # when $(srcdir) is not ".". ifeq ($(srcdir),.) -_prepend_srcdir_prefix = + _prepend_srcdir_prefix = else -_prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|' + _prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|' endif # In order to be able to consistently filter "."-relative names, @@ -78,32 +100,41 @@ VERSION_REGEXP = $(subst .,\.,$(VERSION)) PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION)) ifeq ($(VC),$(GIT)) -this-vc-tag = v$(VERSION) -this-vc-tag-regexp = v$(VERSION_REGEXP) + this-vc-tag = v$(VERSION) + this-vc-tag-regexp = v$(VERSION_REGEXP) else -tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') -tag-this-version = $(subst .,_,$(VERSION)) -this-vc-tag = $(tag-package)-$(tag-this-version) -this-vc-tag-regexp = $(this-vc-tag) + tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') + tag-this-version = $(subst .,_,$(VERSION)) + this-vc-tag = $(tag-package)-$(tag-this-version) + this-vc-tag-regexp = $(this-vc-tag) endif my_distdir = $(PACKAGE)-$(VERSION) # Old releases are stored here. release_archive_dir ?= ../release +# If RELEASE_TYPE is undefined, but RELEASE is, use its second word. +# But overwrite VERSION. +ifdef RELEASE + VERSION := $(word 1, $(RELEASE)) + RELEASE_TYPE ?= $(word 2, $(RELEASE)) +endif + +# Validate and return $(RELEASE_TYPE), or die. +RELEASE_TYPES = alpha beta stable +release-type = $(call member-check,RELEASE_TYPE,$(RELEASE_TYPES)) + # Override gnu_rel_host and url_dir_list in cfg.mk if these are not right. # Use alpha.gnu.org for alpha and beta releases. # Use ftp.gnu.org for stable releases. gnu_ftp_host-alpha = alpha.gnu.org gnu_ftp_host-beta = alpha.gnu.org gnu_ftp_host-stable = ftp.gnu.org -gnu_rel_host ?= $(gnu_ftp_host-$(RELEASE_TYPE)) +gnu_rel_host ?= $(gnu_ftp_host-$(release-type)) -ifeq ($(gnu_rel_host),ftp.gnu.org) -url_dir_list ?= http://ftpmirror.gnu.org/$(PACKAGE) -else -url_dir_list ?= ftp://$(gnu_rel_host)/gnu/$(PACKAGE) -endif +url_dir_list ?= $(if $(call _equal,$(gnu_rel_host),ftp.gnu.org), \ + http://ftpmirror.gnu.org/$(PACKAGE), \ + ftp://$(gnu_rel_host)/gnu/$(PACKAGE)) # Override this in cfg.mk if you are using a different format in your # NEWS file. @@ -124,7 +155,7 @@ export LC_ALL = C ## Sanity checks. ## ## --------------- ## -_cfg_mk := $(shell test -f $(srcdir)/cfg.mk && echo '$(srcdir)/cfg.mk') +_cfg_mk := $(wildcard $(srcdir)/cfg.mk) # Collect the names of rules starting with 'sc_'. syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \ @@ -132,9 +163,9 @@ syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \ .PHONY: $(syntax-check-rules) ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0) -local-checks-available += $(syntax-check-rules) + local-checks-available += $(syntax-check-rules) else -local-checks-available += no-vc-detected + local-checks-available += no-vc-detected no-vc-detected: @echo "No version control files detected; skipping syntax check" endif @@ -570,8 +601,6 @@ sc_prohibit_c_ctype_without_use: @h='c-ctype.h' re='\<c_($(ctype_re)) *\(' \ $(_sc_header_without_use) -_empty = -_sp = $(_empty) $(_empty) # The following list was generated by running: # man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \ # | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt @@ -1092,9 +1121,11 @@ fix_po_file_diag = \ 'you have changed the set of files with translatable diagnostics;\n\ apply the above patch\n' -# Verify that all source files using _() are listed in po/POTFILES.in. +# Verify that all source files using _() (more specifically, files that +# match $(_gl_translatable_string_re)) are listed in po/POTFILES.in. po_file ?= $(srcdir)/po/POTFILES.in generated_files ?= $(srcdir)/lib/*.[ch] +_gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$) sc_po_check: @if test -f $(po_file); then \ grep -E -v '^(#|$$)' $(po_file) \ @@ -1114,7 +1145,7 @@ sc_po_check: esac; \ files="$$files $$file"; \ done; \ - grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files \ + grep -E -l '$(_gl_translatable_string_re)' $$files \ | sed 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \ diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \ || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \ @@ -1135,7 +1166,7 @@ sc_makefile_path_separator_check: # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release) # and is read-only. writable-files: - if test -d $(release_archive_dir); then \ + $(AM_V_GEN)if test -d $(release_archive_dir); then \ for file in $(DIST_ARCHIVES); do \ for p in ./ $(release_archive_dir)/; do \ test -e $$p$$file || continue; \ @@ -1266,23 +1297,28 @@ gpg_key_ID ?= \ translation_project_ ?= [email protected] # Make info-gnu the default only for a stable release. -ifeq ($(RELEASE_TYPE),stable) - announcement_Cc_ ?= $(translation_project_), $(PACKAGE_BUGREPORT) - announcement_mail_headers_ ?= \ - To: [email protected] \ - Cc: $(announcement_Cc_) \ - Mail-Followup-To: $(PACKAGE_BUGREPORT) -else - announcement_Cc_ ?= $(translation_project_) - announcement_mail_headers_ ?= \ - To: $(PACKAGE_BUGREPORT) \ - Cc: $(announcement_Cc_) -endif - +announcement_Cc_stable = $(translation_project_), $(PACKAGE_BUGREPORT) +announcement_mail_headers_stable = \ + To: [email protected] \ + Cc: $(announcement_Cc_) \ + Mail-Followup-To: $(PACKAGE_BUGREPORT) + +announcement_Cc_alpha = $(translation_project_) +announcement_mail_headers_alpha = \ + To: $(PACKAGE_BUGREPORT) \ + Cc: $(announcement_Cc_) + +announcement_mail_Cc_beta = $(announcement_mail_Cc_alpha) +announcement_mail_headers_beta = $(announcement_mail_headers_alpha) + +announcement_mail_Cc_ ?= $(announcement_mail_Cc_$(release-type)) +announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type)) announcement: NEWS ChangeLog $(rel-files) - $(AM_V_GEN)$(srcdir)/$(_build-aux)/announce-gen \ +# Not $(AM_V_GEN) since the output of this command serves as +# announcement message: it would start with " GEN announcement". + $(AM_V_at)$(srcdir)/$(_build-aux)/announce-gen \ --mail-headers='$(announcement_mail_headers_)' \ - --release-type=$(RELEASE_TYPE) \ + --release-type=$(release-type) \ --package=$(PACKAGE) \ --prev=$(PREV_VERSION) \ --curr=$(VERSION) \ @@ -1309,16 +1345,22 @@ ftp-gnu = ftp://ftp.gnu.org/gnu www-gnu = http://www.gnu.org upload_dest_dir_ ?= $(PACKAGE) +upload_command = \ + $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \ + --to $(gnu_rel_host):$(upload_dest_dir_) \ + $(rel-files) emit_upload_commands: @echo ===================================== @echo ===================================== - @echo "$(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \\" - @echo " --to $(gnu_rel_host):$(upload_dest_dir_) \\" - @echo " $(rel-files)" + @echo '$(upload_command)' @echo '# send the ~/announce-$(my_distdir) e-mail' @echo ===================================== @echo ===================================== +.PHONY: upload +upload: + $(AM_V_GEN)$(upload_command) + define emit-commit-log printf '%s\n' 'maint: post-release administrivia' '' \ '* NEWS: Add header line for next release.' \ @@ -1348,8 +1390,9 @@ submodule-checks ?= no-submodule-changes public-submodule-commit public-submodule-commit: $(AM_V_GEN)if test -d $(srcdir)/.git; then \ cd $(srcdir) && \ - git submodule --quiet foreach test '$$(git rev-parse $$sha1)' \ - = '$$(git merge-base origin $$sha1)' \ + git submodule --quiet foreach \ + test '"$$(git rev-parse "$$sha1")"' \ + = '"$$(git merge-base origin "$$sha1")"' \ || { echo '$(ME): found non-public submodule commit' >&2; \ exit 1; }; \ else \ @@ -1364,7 +1407,7 @@ public-submodule-commit: gl_public_submodule_commit ?= public-submodule-commit check: $(gl_public_submodule_commit) -.PHONY: alpha beta stable +.PHONY: alpha beta stable release ALL_RECURSIVE_TARGETS += alpha beta stable alpha beta stable: $(local-check) writable-files $(submodule-checks) $(AM_V_GEN)test $@ = stable \ @@ -1378,15 +1421,16 @@ alpha beta stable: $(local-check) writable-files $(submodule-checks) $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@ $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ +release: + $(AM_V_GEN)$(MAKE) $(release-type) + # Override this in cfg.mk if you follow different procedures. release-prep-hook ?= release-prep gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?] .PHONY: release-prep release-prep: - $(AM_V_GEN)case $$RELEASE_TYPE in alpha|beta|stable) ;; \ - *) echo "invalid RELEASE_TYPE: $$RELEASE_TYPE" 1>&2; exit 1;; esac - $(AM_V_at)$(MAKE) --no-print-directory -s announcement \ + $(AM_V_GEN)$(MAKE) --no-print-directory -s announcement \ > ~/announce-$(my_distdir) $(AM_V_at)if test -d $(release_archive_dir); then \ ln $(rel-files) $(release_archive_dir); \ -- 1.8.1.rc3.27.g3b73c7d
