Sync files from upstream, and pass 'make syntax-check'.

* config/announce-gen: Move...
* build-aux/announce-gen: ...here, and sync from gnulib.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
* cfg.mk (announce_gen): Likewise.
(prev_version_file): Delete, relying on default in maint.mk.
(gpg_key_ID): New macro.
(url_dir_list): Rewrite to match coreutils.
* config/prev-version.txt: Move...
* .prev-version: ...here, and adjust to 2.61.
* build-aux/vc-list-files: Sync from coreutils.
* maint.mk: Resynchronize with coreutils, where possible.
(ME): Remove $(srcdir) from definition.
(CVS): Delete.
(GIT, VC, VC-tag): New macros.
(CVS_LIST, CVS_LIST_EXCEPT): Rename...
(VC_LIST, VC_LIST_EXCEPT): ...to this.
(cvs-tag-check): Delete.
(cvs-diff-check): Rename...
(vc-diff-check): ...to this.
(sc_file_system): Allow FHS acronym.
* doc/autoconf.texi (Particular Functions): Recommend
unconditional <config.h>.
* build-aux/config.guess: Sync from upstream (manually).
* build-aux/config.sub: Likewise.
* build-aux/texinfo.tex: Likewise.
* doc/make-stds.texi: Likewise.
* doc/standards.texi: Likewise.
* .gitattributes: Ignore whitespace problems in upstream files.

Signed-off-by: Eric Blake <ebb9@byu.net>
This commit is contained in:
Eric Blake 2008-04-03 06:22:48 -06:00
parent 4278e86fdf
commit 991e8cc0ca
15 changed files with 458 additions and 250 deletions

12
.gitattributes vendored
View File

@ -1 +1,11 @@
ChangeLog merge=merge-changelog
ChangeLog merge=merge-changelog
config.guess -whitespace
config.sub -whitespace
elisp-comp -whitespace
install-sh -whitespace
mdate-sh -whitespace
missing -whitespace
texinfo.tex -whitespace
fdl.texi -whitespace
make-stds.texi -whitespace
standards.texi -whitespace

1
.prev-version Normal file
View File

@ -0,0 +1 @@
2.61

View File

@ -1,3 +1,35 @@
2008-04-03 Eric Blake <ebb9@byu.net>
Sync files from upstream, and pass 'make syntax-check'.
* config/announce-gen: Move...
* build-aux/announce-gen: ...here, and sync from gnulib.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
* cfg.mk (announce_gen): Likewise.
(prev_version_file): Delete, relying on default in maint.mk.
(gpg_key_ID): New macro.
(url_dir_list): Rewrite to match coreutils.
* config/prev-version.txt: Move...
* .prev-version: ...here, and adjust to 2.61.
* build-aux/vc-list-files: Sync from coreutils.
* maint.mk: Resynchronize with coreutils, where possible.
(ME): Remove $(srcdir) from definition.
(CVS): Delete.
(GIT, VC, VC-tag): New macros.
(CVS_LIST, CVS_LIST_EXCEPT): Rename...
(VC_LIST, VC_LIST_EXCEPT): ...to this.
(cvs-tag-check): Delete.
(cvs-diff-check): Rename...
(vc-diff-check): ...to this.
(sc_file_system): Allow FHS acronym.
* doc/autoconf.texi (Particular Functions): Recommend
unconditional <config.h>.
* build-aux/config.guess: Sync from upstream (manually).
* build-aux/config.sub: Likewise.
* build-aux/texinfo.tex: Likewise.
* doc/make-stds.texi: Likewise.
* doc/standards.texi: Likewise.
* .gitattributes: Ignore whitespace problems in upstream files.
2008-04-03 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* doc/autoconf.texi (Limitations of Usual Tools): Mention awk %u
@ -19,11 +51,11 @@
2008-03-28 Peter O'Gorman <peter@pogma.com>
Find X11 on Mac OS X too.
* lib/autoconf/libs.m4 (_AC_PATH_X_DIRECT,_AC_PATH_X_XMKMF):
Check for libX11 with extensions dylib la and dll too.
* THANKS: Update.
Reported by Martin Costabel.
Find X11 on Mac OS X too.
* lib/autoconf/libs.m4 (_AC_PATH_X_DIRECT,_AC_PATH_X_XMKMF):
Check for libX11 with extensions dylib la and dll too.
* THANKS: Update.
Reported by Martin Costabel.
2008-03-28 Eric Blake <ebb9@byu.net>

View File

@ -27,7 +27,7 @@ EXTRA_DIST = ChangeLog.0 ChangeLog.1 ChangeLog.2 \
BUGS \
GNUmakefile maint.mk cfg.mk \
build-aux/git-version-gen \
config/announce-gen config/prev-version.txt
build-aux/announce-gen .prev-version
MAINTAINERCLEANFILES = $(srcdir)/INSTALL

View File

@ -1,7 +1,13 @@
#!/usr/bin/perl -w
# Generate an announcement message.
# Generate a release announcement message.
# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
my $VERSION = '2008-02-08 10:34'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
# do its job. Otherwise, update this string manually.
# Copyright (C) 2002-2008 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -16,13 +22,15 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Written by Jim Meyering
use strict;
use Getopt::Long;
use Digest::MD5;
use Digest::SHA1;
use POSIX qw(strftime);
(my $VERSION = '$Revision$ ') =~ tr/[0-9].//cd;
(my $ME = $0) =~ s|.*/||;
my %valid_release_types = map {$_ => 1} qw (alpha beta major);
@ -70,16 +78,24 @@ OPTIONS:
Generate an announcement message.
FIXME: describe the following
These options must be specified:
--release-type=TYPE TYPE must be one of @types
--package-name=PACKAGE_NAME
--previous-version=VER
--current-version=VER
--gpg-key-id=ID The GnuPG ID of the key used to sign the tarballs
--release-archive-directory=DIR
--url-directory=URL_DIR
--news=NEWS_FILE optional
The following are optional:
--news=NEWS_FILE
--bootstrap-tools=TOOL_LIST a comma-separated list of tools, e.g.,
autoconf,automake,bison,gnulib
--gnulib-snapshot-date=DATE if gnulib is in the bootstrap tool list,
then report this as the snapshot date.
If not specified, use the current date/time.
If you specify a date here, be sure it is UTC.
--help display this help and exit
--version output version information and exit
@ -191,26 +207,28 @@ sub print_news_deltas ($$$)
# the first occurrence of $prev_version.
my $in_items;
my $re_prefix = qr/\* (?:Noteworthy|Major) change/;
open NEWS, '<', $news_file
or die "$ME: $news_file: cannot open for reading: $!\n";
while (defined (my $line = <NEWS>))
{
if ( ! $in_items)
{
# Match lines like this one:
# Match lines like these:
# * Major changes in release 5.0.1:
# but not any other line that starts with a space, *, or -.
$line =~ /^(\* Major changes.*|[^ *-].*)\Q$curr_version\E/o
# * Noteworthy changes in release 6.6 (2006-11-22) [stable]
$line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$curr_version\E(?:[^\d.]|$)/o
or next;
$in_items = 1;
print $line;
}
else
{
# Be careful that this regexp cannot match version numbers
# in NEWS items -- they might well say `introduced in 4.5.5',
# This regexp must not match version numbers in NEWS items.
# For example, they might well say `introduced in 4.5.5',
# and we don't want that to match.
$line =~ /^(\* Major changes.*|[^ *-].*)\Q$prev_version\E/o
$line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$prev_version\E(?:[^\d.]|$)/o
and last;
print $line;
}
@ -307,6 +325,44 @@ sub print_changelog_deltas ($$)
or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
}
sub get_tool_versions ($$)
{
my ($tool_list, $gnulib_version) = @_;
@$tool_list
or return ();
my $fail;
my @tool_version_pair;
foreach my $t (@$tool_list)
{
if ($t eq 'gnulib')
{
push @tool_version_pair, ucfirst $t . ' ' . $gnulib_version;
next;
}
# Assume that the last "word" on the first line of
# `tool --version` output is the version string.
my ($first_line, undef) = split ("\n", `$t --version`);
if ($first_line =~ /.* (\d[\w.-]+)$/)
{
$t = ucfirst $t;
push @tool_version_pair, "$t $1";
}
else
{
defined $first_line
and $first_line = '';
warn "$ME: $t: unexpected --version output\n:$first_line";
$fail = 1;
}
}
$fail
and exit 1;
return @tool_version_pair;
}
{
# Neutralize the locale, so that, for instance, "du" does not
# issue "1,2" instead of "1.2", what confuses our regexps.
@ -316,10 +372,11 @@ sub print_changelog_deltas ($$)
my $package_name;
my $prev_version;
my $curr_version;
my $release_archive_dir;
my $gpg_key_id;
my @url_dir_list;
my @news_file;
my $bootstrap_tools;
my $gnulib_version;
GetOptions
(
@ -328,9 +385,10 @@ sub print_changelog_deltas ($$)
'previous-version=s' => \$prev_version,
'current-version=s' => \$curr_version,
'gpg-key-id=s' => \$gpg_key_id,
'release-archive-directory=s' => \$release_archive_dir,
'url-directory=s' => \@url_dir_list,
'news=s' => \@news_file,
'bootstrap-tools=s' => \$bootstrap_tools,
'gnulib-version=s' => \$gnulib_version,
help => sub { usage 0 },
version => sub { print "$ME version $VERSION\n"; exit },
@ -346,25 +404,38 @@ sub print_changelog_deltas ($$)
or (warn "$ME: previous version string not specified\n"), $fail = 1;
$curr_version
or (warn "$ME: current version string not specified\n"), $fail = 1;
$release_archive_dir
or (warn "$ME: release directory name not specified\n"), $fail = 1;
$gpg_key_id
or (warn "$ME: GnuPG key ID not specified\n"), $fail = 1;
@url_dir_list
or (warn "$ME: URL directory name(s) not specified\n"), $fail = 1;
my @tool_list = split ',', $bootstrap_tools;
grep (/^gnulib$/, @tool_list) ^ defined $gnulib_version
and (warn "$ME: when specifying gnulib as a tool, you must also specify\n"
. "--gnulib-version=V, where V is the result of running git describe\n"
. "in the gnulib source directory.\n"), $fail = 1;
exists $valid_release_types{$release_type}
or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
@ARGV
and (warn "$ME: too many arguments\n"), $fail = 1;
and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
$fail = 1;
$fail
and usage 1;
my $my_distdir = "$package_name-$curr_version";
my $tgz = "$my_distdir.tar.gz";
my $tbz = "$my_distdir.tar.bz2";
my $lzma = "$my_distdir.tar.lzma";
my $xd = "$package_name-$prev_version-$curr_version.xdelta";
my %size = sizes ($tgz, $tbz, $xd);
my @tarballs = grep {-f $_} ($tgz, $tbz, $lzma);
my @sizable = @tarballs;
-f $xd
and push @sizable, $xd;
my %size = sizes (@sizable);
%size
or exit 1;
@ -380,14 +451,16 @@ FIXME: put comments here
EOF
print_locations ("compressed sources", @url_dir_list, %size,
$tgz, $tbz);
print_locations ("xdelta-style diffs", @url_dir_list, %size,
$xd);
print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
-f $xd
and print_locations ("xdelta diffs (useful? if so, "
. "please tell bug-gnulib\@gnu.org)",
@url_dir_list, %size, $xd);
my @sig_files = map { "$_.sig" } @tarballs;
print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
"$tgz.sig", "$tbz.sig");
@sig_files);
print_checksums ($tgz, $tbz, $xd);
print_checksums (@sizable);
print <<EOF;
@ -406,6 +479,11 @@ then run this command to import it:
and rerun the \`gpg --verify' command.
EOF
my @tool_versions = get_tool_versions (\@tool_list, $gnulib_version);
@tool_versions
and print "\nThis release was bootstrapped with the following tools:",
join ('', map {"\n $_"} @tool_versions), "\n";
print_news_deltas ($_, $prev_version, $curr_version)
foreach @news_file;
@ -415,8 +493,6 @@ EOF
exit 0;
}
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
@ -432,4 +508,9 @@ EOF
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## eval: (add-hook 'write-file-hooks 'time-stamp)
## time-stamp-start: "my $VERSION = '"
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
## time-stamp-time-zone: "UTC"
## time-stamp-end: "'; # UTC"
## End:

View File

@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
timestamp='2008-01-23'
timestamp='2008-03-12'
# 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
@ -1216,6 +1216,9 @@ EOF
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;

16
build-aux/config.sub vendored
View File

@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
timestamp='2008-01-16'
timestamp='2008-03-26'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@ -250,12 +250,14 @@ case $basic_machine in
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep \
| maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
| mips64vr | mips64vrel \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
@ -331,12 +333,14 @@ case $basic_machine in
| ip2k-* | iq2000-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| mips64vr-* | mips64vrel-* \
| mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
@ -364,7 +368,7 @@ case $basic_machine in
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \

View File

@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2007-12-02.17}
\def\texinfoversion{2008-03-31.10}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007,
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
% 2007 Free Software Foundation, Inc.
% 2007, 2008 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@ -97,6 +97,7 @@
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
\let\ptextop=\top
% If this character appears in an error message or help string, it
% starts a new line in the output.
@ -916,15 +917,19 @@ where each line of input produces a line of output.}
\temp
}
% @include file insert text of that file as input.
% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
\def\includezzz#1{%
\pushthisfilestack
\def\thisfile{#1}%
{%
\makevalueexpandable
\def\temp{\input #1 }%
\makevalueexpandable % we want to expand any @value in FILE.
\turnoffactive % and allow special characters in the expansion
\edef\temp{\noexpand\input #1 }%
%
% This trickery is to read FILE outside of a group, in case it makes
% definitions, etc.
\expandafter
}\temp
\popthisfilestack
@ -1362,8 +1367,11 @@ output) for that.)}
\openin 1 #1.jpeg \ifeof 1
\openin 1 #1.JPG \ifeof 1
\openin 1 #1.pdf \ifeof 1
\errhelp = \nopdfimagehelp
\errmessage{Could not find image file #1 for pdf}%
\openin 1 #1.PDF \ifeof 1
\errhelp = \nopdfimagehelp
\errmessage{Could not find image file #1 for pdf}%
\else \gdef\pdfimgext{PDF}%
\fi
\else \gdef\pdfimgext{pdf}%
\fi
\else \gdef\pdfimgext{JPG}%
@ -1377,7 +1385,7 @@ output) for that.)}
\closein 1
\endgroup
%
% without \immediate, pdftex seg faults when the same image is
% without \immediate, ancient pdftex seg faults when the same image is
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
\ifnum\pdftexversion < 14
\immediate\pdfimage
@ -2560,6 +2568,13 @@ end
\let\env=\code
\let\command=\code
% @clicksequence{File @click{} Open ...}
\def\clicksequence#1{\begingroup #1\endgroup}
% @clickstyle @arrow (by default)
\parseargdef\clickstyle{\def\click{#1}}
\def\click{\arrow}
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
@ -5652,14 +5667,15 @@ end
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
%
% Since these characters are used in examples, it should be an even number of
% Since these characters are used in examples, they should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
%
\def\point{$\star$}
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
% The @error{} command.
% Adapted from the TeXbook's \boxit.
@ -5717,6 +5733,7 @@ end
\let\/=\ptexslash
\let\*=\ptexstar
\let\t=\ptext
\expandafter \let\csname top\endcsname=\ptextop % outer
\let\frenchspacing=\plainfrenchspacing
%
\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@ -6953,20 +6970,22 @@ end
%
% Make link in pdf output.
\ifpdf
\leavevmode
\getfilename{#4}%
{\indexnofonts
\turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions.
\getfilename{#4}%
%
% See comments at \activebackslashdouble.
{\activebackslashdouble \xdef\pdfxrefdest{#1}%
\backslashparens\pdfxrefdest}%
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
\ifnum\filenamelength>0
\startlink attr{/Border [0 0 0]}%
goto file{\the\filename.pdf} name{\pdfxrefdest}%
goto file{\the\filename.pdf} name{\pdfxrefdest}%
\else
\startlink attr{/Border [0 0 0]}%
goto name{\pdfmkpgn{\pdfxrefdest}}%
goto name{\pdfmkpgn{\pdfxrefdest}}%
\fi
}%
\setcolor{\linkcolor}%
@ -7421,15 +7440,19 @@ end
% If the image is by itself, center it.
\ifvmode
\imagevmodetrue
\nobreak\bigskip
\nobreak\medskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
% above and below.
\nobreak\vskip\parskip
\nobreak
\line\bgroup
\fi
%
% Leave vertical mode so that indentation from an enclosing
% environment such as @quotation is respected. On the other hand, if
% it's at the top level, we don't want the normal paragraph indentation.
\noindent
%
% Output the image.
\ifpdf
\dopdfimage{#1}{#2}{#3}%
@ -7440,7 +7463,7 @@ end
\epsfbox{#1.eps}%
\fi
%
\ifimagevmode \egroup \bigbreak \fi % space after the image
\ifimagevmode \medskip \fi % space after the standalone image
\endgroup}

View File

@ -1,7 +1,7 @@
#!/bin/sh
# List the specified version-controlled files.
# List version-controlled file names.
# Copyright (C) 2006 Free Software Foundation, Inc.
# Copyright (C) 2006-2008 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -18,41 +18,40 @@
# List the specified version-controlled files.
# With no argument, list them all.
# With no argument, list them all. With a single DIRECTORY argument,
# list the version-controlled files in that directory.
# This script must be run solely from the top of a $srcdir build directory.
# If there's an argument, it must be a single, "."-relative directory name,
# with no trailing slashes. In mercurial mode, it's used as part of a
# "grep" pattern (prepend "^", append "/"), and in cvs mode, it's simply
# used as an argument to the cvsu script.
# If there's an argument, it must be a single, "."-relative directory name.
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
include_prefix=
dir=
case $# in
0) ;;
1) include_prefix=$1 ;;
*) echo "$0: too many arguments" 1>&2; exit 1 ;;
1) dir=$1 ;;
*) echo "$0: too many arguments" 1>&2
echo "Usage: $0 [DIR]" 1>&2; exit 1;;
esac
test "x$dir" = x && dir=.
if test -d .git; then
if test "x$include_prefix" = x; then
git-ls-files | cut -d ' ' -f 3
else
git-ls-files | cut -d ' ' -f 3 | grep "^$include_prefix/"
fi
exec git ls-files "$dir"
elif test -d .hg; then
if test "x$include_prefix" = x; then
hg manifest | cut -d ' ' -f 3
exec hg locate "$dir/*"
elif test -d CVS; then
if test -x build-aux/cvsu; then
build-aux/cvsu --find --types=AFGM "$dir"
else
hg manifest | cut -d ' ' -f 3 | grep "^$include_prefix/"
awk -F/ '{ \
if (!$1 && $3 !~ /^-/) { \
f=FILENAME; \
sub(/CVS\/Entries/, "", f); \
print f $2; \
}}' \
$(find ${*-*} -name Entries -print) /dev/null;
fi
elif test -x build-aux/cvsu; then
build-aux/cvsu --find --types=AFGM $include_prefix
else
awk -F/ '{ \
if (!$1 && $3 !~ /^-/) { \
f=FILENAME; \
sub(/CVS\/Entries/, "", f); \
print f $2; \
}}' \
$(find ${*-*} -name Entries -print) /dev/null;
echo "$0: Failed to determine type of version control used in "`pwd` 1>&2
exit 1
fi

16
cfg.mk
View File

@ -23,19 +23,21 @@ export PATH = $(shell echo "`pwd`/tests:$$PATH")
_autoreconf = autoreconf -i -v && rm -f INSTALL
# Version management.
prev_version_file = $(srcdir)/config/prev-version.txt
announce_gen = $(srcdir)/config/announce-gen
announce_gen = $(srcdir)/build-aux/announce-gen
release_archive_dir = releases
# Use alpha.gnu.org for alpha and beta releases.
# Use ftp.gnu.org for major releases.
gnu_ftp_host-alpha = alpha
gnu_ftp_host-beta = alpha
gnu_ftp_host-major = ftp
gnu_ftp_host-alpha = alpha.gnu.org
gnu_ftp_host-beta = alpha.gnu.org
gnu_ftp_host-major = ftp.gnu.org
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
url_dir_list = \
ftp://$(gnu_rel_host).gnu.org/gnu/autoconf
ftp://$(gnu_rel_host)/gnu/autoconf
# The GnuPG ID of the key used to sign the tarballs.
gpg_key_ID = F4850180
# Files to update automatically.
cvs_executable_files = \
@ -62,4 +64,4 @@ executable-update: wget-update cvs-update autom4te-update
# Tests not to run.
local-checks-to-skip ?= \
sc_unmarked_diagnostics
changelog-check sc_unmarked_diagnostics

View File

@ -1 +0,0 @@
2.60

View File

@ -4807,9 +4807,7 @@ Typically, the replacement file @file{malloc.c} should look like (note
the @samp{#undef malloc}):
@verbatim
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <config.h>
#undef malloc
#include <sys/types.h>

View File

@ -9,7 +9,7 @@
@cindex standards for makefiles
@c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
@c 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@c 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
@c Permission is granted to copy, distribute and/or modify this document
@c under the terms of the GNU Free Documentation License, Version 1.2
@ -33,7 +33,10 @@ chapter
@end iftex
describes conventions for writing the Makefiles for GNU programs.
Using Automake will help you write a Makefile that follows these
conventions.
conventions. For more information on portable Makefiles, see
@sc{posix} and @ref{Portable Make, Portable Make Programming,, autoconf,
Autoconf}.
@menu
* Makefile Basics:: General conventions for Makefiles.
@ -144,8 +147,10 @@ subtargets) work correctly with a parallel @code{make}.
@section Utilities in Makefiles
Write the Makefile commands (and any shell scripts, such as
@code{configure}) to run in @code{sh}, not in @code{csh}. Don't use any
special features of @code{ksh} or @code{bash}.
@code{configure}) to run under @code{sh} (both the traditional Bourne
shell and the @sc{posix} shell), not @code{csh}. Don't use any
special features of @code{ksh} or @code{bash}, or @sc{posix} features
not widely supported in traditional Bourne @code{sh}.
The @code{configure} script and the Makefile rules for building and
installation should not use any utilities directly except these:
@ -159,14 +164,19 @@ awk cat cmp cp diff echo egrep expr false grep install-info
ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
@end example
The compression program @code{gzip} can be used in the @code{dist} rule.
Compression programs such as @code{gzip} can be used in the
@code{dist} rule.
Generally, stick to the widely-supported (usually
@sc{posix}-specified) options and features of these programs. For
example, don't use @samp{mkdir -p}, convenient as it may be, because a
few systems don't support it at all and with others, it is not safe
for parallel execution. For a list of known incompatibilities, see
@ref{Portable Shell, Portable Shell Programming,, autoconf, Autoconf}.
Stick to the generally supported options for these programs. For
example, don't use @samp{mkdir -p}, convenient as it may be, because
most systems don't support it.
It is a good idea to avoid creating symbolic links in makefiles, since a
few systems don't support them.
few file systems don't support them.
The Makefile rules for building and installation can also use compilers
and related programs, but should do so via @code{make} variables so that the

View File

@ -3,7 +3,7 @@
@setfilename standards.info
@settitle GNU Coding Standards
@c This date is automagically updated when you save this file:
@set lastupdate October 10, 2007
@set lastupdate February 23, 2008
@c %**end of header
@dircategory GNU organization
@ -22,18 +22,12 @@
@c This is used by a cross ref in make-stds.texi
@set CODESTD 1
@iftex
@set CHAPTER chapter
@end iftex
@ifinfo
@set CHAPTER node
@end ifinfo
@copying
The GNU coding standards, last updated @value{lastupdate}.
Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@ -313,7 +307,7 @@ technique.
@cindex GUILE
The standard extensibility interpreter for GNU software is GUILE
(@uref{http://www.gnu.org/software/guile/}), which implements the
(@uref{http://www.gnu.org/@/software/@/guile/}), which implements the
language Scheme (an especially clean and simple dialect of Lisp). We
don't reject programs written in other ``scripting languages'' such as
Perl and Python, but using GUILE is very important for the overall
@ -1019,10 +1013,10 @@ abbreviation as usual, as in the examples below.
@table @asis
@item GPL
GNU General Public License, @url{http://www.gnu.org/licenses/gpl.html}.
GNU General Public License, @url{http://www.gnu.org/@/licenses/@/gpl.html}.
@item LGPL
GNU Lesser General Public License, @url{http://www.gnu.org/licenses/lgpl.html}.
GNU Lesser General Public License, @url{http://www.gnu.org/@/licenses/@/lgpl.html}.
@item GPL/Guile
GNU GPL with the exception for Guile; for example, GPLv3+/Guile means
@ -1032,47 +1026,47 @@ GNU GPL with the exception for Ada.
@item Apache
The Apache Software Foundation license,
@url{http://www.apache.org/licenses}.
@url{http://www.apache.org/@/licenses}.
@item Artistic
The Artistic license used for Perl, @url{http://www.perlfoundation.org/legal}.
The Artistic license used for Perl, @url{http://www.perlfoundation.org/@/legal}.
@item Expat
The Expat license, @url{http://www.jclark.com/xml/copying.txt}.
The Expat license, @url{http://www.jclark.com/@/xml/@/copying.txt}.
@item MPL
The Mozilla Public License, @url{http://www.mozilla.org/MPL/}.
The Mozilla Public License, @url{http://www.mozilla.org/@/MPL/}.
@item OBSD
The original (4-clause) BSD license, incompatible with the GNU GPL
@url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6}.
@url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#6}.
@item PHP
The license used for PHP, @url{http://www.php.net/license/}.
The license used for PHP, @url{http://www.php.net/@/license/}.
@item public domain
The non-license that is being in the public domain,
@url{http://www.gnu.org/licenses/license-list.html#PublicDomain}.
@url{http://www.gnu.org/@/licenses/@/license-list.html#PublicDomain}.
@item Python
The license for Python, @url{http://www.python.org/2.0.1/license.html}.
The license for Python, @url{http://www.python.org/@/2.0.1/@/license.html}.
@item RBSD
The revised (3-clause) BSD, compatible with the GNU GPL,
@url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5}.
@url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#5}.
@item X11
The simple non-copyleft license used for most versions of the X Window
system, @url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3}.
system, @url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#3}.
@item Zlib
The license for Zlib, @url{http://www.gzip.org/zlib/zlib_license.html}.
The license for Zlib, @url{http://www.gzip.org/@/zlib/@/zlib_license.html}.
@end table
More information about these licenses and many more are on the GNU
licensing web pages,
@url{http://www.gnu.org/licenses/license-list.html}.
@url{http://www.gnu.org/@/licenses/@/license-list.html}.
@node --help
@ -2861,7 +2855,7 @@ void error (int status, int errnum, const char *format, ...);
A simple way to use the Gnulib error module is to obtain the two
source files @file{error.c} and @file{error.h} from the Gnulib library
source code repository at
@uref{http://savannah.gnu.org/cgi-bin/viewcvs/gnulib/gnulib/lib/}.
@uref{http://git.savannah.gnu.org/@/gitweb/@/?p=gnulib.git}.
Here's a sample use:
@example
@ -3826,6 +3820,17 @@ refer explicitly to the specified source directory. To make this
possible, @code{configure} can add to the Makefile a variable named
@code{srcdir} whose value is precisely the specified directory.
In addition, the @samp{configure} script should take options
corresponding to most of the standard directory variables
(@pxref{Directory Variables}). Here is the list:
@example
--prefix --exec-prefix --bindir --sbindir --libexecdir --sysconfdir
--sharedstatedir --localstatedir --libdir --includedir --oldincludedir
--datarootdir --datadir --infodir --localedir --mandir --docdir
--htmldir --dvidir --pdfdir --psdir
@end example
The @code{configure} script should also take an argument which specifies the
type of system to build the program for. This argument should look like
this:
@ -3841,7 +3846,7 @@ The @code{configure} script needs to be able to decode all plausible
alternatives for how to describe a machine. Thus,
@samp{athlon-pc-gnu/linux} would be a valid alias. There is a shell
script called
@uref{http://savannah.gnu.org/@/cgi-bin/@/viewcvs/@/*checkout*/@/config/@/config/@/config.sub,
@uref{http://git.savannah.gnu.org/@/gitweb/@/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD,
@file{config.sub}} that you can use as a subroutine to validate system
types and canonicalize aliases.
@ -3852,7 +3857,7 @@ plain @var{buildtype} argument. For example, @samp{configure
i686-pc-linux-gnu}. When the build type is not specified by an option
or argument, the @code{configure} script should normally guess it using
the shell script
@uref{http://savannah.gnu.org/@/cgi-bin/@/viewcvs/@/*checkout*/@/config/@/config/@/config.guess,
@uref{http://git.savannah.gnu.org/@/gitweb/@/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD,
@file{config.guess}}.
@cindex optional features, configure-time
@ -4057,9 +4062,9 @@ advertise them to new potential customers, or to give the public the
idea that their existence is ethical.
The GNU definition of free software is found on the GNU web site at
@url{http://www.gnu.org/philosophy/free-sw.html}, and the definition
@url{http://www.gnu.org/@/philosophy/@/free-sw.html}, and the definition
of free documentation is found at
@url{http://www.gnu.org/philosophy/free-doc.html}. The terms ``free''
@url{http://www.gnu.org/@/philosophy/@/free-doc.html}. The terms ``free''
and ``non-free'', used in this document, refer to those definitions.
A list of important licenses and whether they qualify as free is in

267
maint.mk
View File

@ -1,26 +1,25 @@
# -*-Makefile-*-
# This Makefile fragment is shared between the coreutils,
# CPPI, Bison, and Autoconf.
# This Makefile fragment tries to be general-purpose enough to be
# used by at least coreutils, idutils, CPPI, Bison, and Autoconf.
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008 Free Software
# Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
## Copyright (C) 2001-2008 Free Software Foundation, Inc.
##
## This program is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
# This is reported not to work with make-3.79.1
# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
ME := $(srcdir)/maint.mk
ME := maint.mk
# Do not save the original name or timestamp in the .tar.gz file.
# Use --rsyncable if available.
@ -28,24 +27,24 @@ gzip_rsyncable := \
$(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
CVS = cvs
GIT = git
VC = $(GIT)
VC-tag = git tag -s -m '$(VERSION)'
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
CVS_LIST = build-aux/vc-list-files
VC_LIST = build-aux/vc-list-files
CVS_LIST_EXCEPT = \
$(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
VC_LIST_EXCEPT = \
$(VC_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
ifeq ($(origin prev_version_file), undefined)
prev_version_file = .prev-version
prev_version_file = $(srcdir)/.prev-version
endif
PREV_VERSION := $(shell cat $(prev_version_file))
VERSION_REGEXP = $(subst .,\.,$(VERSION))
tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
tag-this-version = $(subst .,_,$(VERSION))
this-cvs-tag = $(tag-package)-$(tag-this-version)
this-vc-tag = v$(VERSION)
this-vc-tag-regexp = v$(VERSION_REGEXP)
my_distdir = $(PACKAGE)-$(VERSION)
# Old releases are stored here.
@ -62,13 +61,11 @@ export LC_ALL = C
## Sanity checks. ##
## --------------- ##
# FIXME: add a check to prohibit definition in src/*.c of symbols defined
# in system.h. E.g. today I removed from tail.c a useless definition of
# ENOSYS. It was useless because system.h ensures it's defined.
# Collect the names of rules starting with `sc_'.
syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
$(srcdir)/$(ME))
.PHONY: $(syntax-check-rules)
# Checks that don't require cvs.
# Run `changelog-check' last, as previous test may reveal problems requiring
# new ChangeLog entries.
local-checks-available = \
po-check copyright-check writable-files m4-check author_mark_check \
changelog-check patch-check strftime-check $(syntax-check-rules) \
@ -76,13 +73,9 @@ local-checks-available = \
makefile-check check-AUTHORS
.PHONY: $(local-checks-available)
local-check = $(filter-out $(local-checks-to-skip), $(local-checks-available))
local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
# Collect the names of rules starting with `sc_'.
syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
.PHONY: $(syntax-check-rules)
syntax-check: $(syntax-check-rules)
syntax-check: $(local-check)
# @shopt -s nullglob; \
# grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
# $$(find -type f -name '*.[chly]') /dev/null && \
@ -118,16 +111,16 @@ sc_cast_of_alloca_return_value:
exit 1; } || :
sc_space_tab:
@grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \
@grep -n '[ ] ' $$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
1>&2; exit 1; } || :
# Don't use the old ato* functions in `real' code.
# Don't use *scanf or the old ato* functions in `real' code.
# They provide no error checking mechanism.
# Instead, use strto* functions.
sc_prohibit_atoi_atof:
@grep -nE '\<ato([filq]|ll)\>' $$($(CVS_LIST_EXCEPT)) && \
{ echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \
@grep -nE '\<([fs]?scanf|ato([filq]|ll))\>' $$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): do not use *scan''f, ato''f, ato''i, ato''l, ato''ll, ato''q, or ss''canf' \
1>&2; exit 1; } || :
# Using EXIT_SUCCESS as the first argument to error is misleading,
@ -139,36 +132,92 @@ sc_error_exit_success:
exit 1; } || :
sc_file_system:
@grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \
@grep -ni 'file''system' $$($(VC_LIST_EXCEPT)) \
| grep -v 'File''system Hierarchy Standard' && \
{ echo '$(ME): found use of "file''system";' \
'rewrite to use "file system"' 1>&2; \
exit 1; } || :
sc_no_if_have_config_h:
@grep -n '^# *if HAVE_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \
{ echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef' \
sc_no_have_config_h:
@grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): found use of HAVE''_CONFIG_H; remove' \
1>&2; exit 1; } || :
# Nearly all .c files must include <config.h>.
sc_require_config_h:
@grep -L '^# *include <config\.h>' /dev/null \
$$($(CVS_LIST_EXCEPT) | grep '\.c$$') \
| grep -v /dev/null && \
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
grep -L '^# *include <config\.h>' \
$$($(VC_LIST_EXCEPT) | grep '\.c$$') \
| grep . && \
{ echo '$(ME): the above files do not include <config.h>' \
1>&2; exit 1; } || :
1>&2; exit 1; } || :; \
else :; \
fi
# To use this "command" macro, you must first define two shell variables:
# h: the header, enclosed in <> or ""
# re: a regular expression that matches IFF something provided by $h is used.
define _header_without_use
h_esc=`echo "$$h"|sed 's/\./\\./'`; \
if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
files=$$(grep -l '^# *include '"$$h_esc" \
$$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \
grep -LE "$$re" $$files | grep . && \
{ echo "$(ME): the above files include $$h but don't use it" \
1>&2; exit 1; } || :; \
else :; \
fi
endef
# Prohibit the inclusion of assert.h without an actual use of assert.
sc_prohibit_assert_without_use:
@files=$$(grep -l '# *include <assert\.h>' /dev/null \
$$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
grep -L '\<assert (' $$files /dev/null \
| grep -v /dev/null && \
{ echo "$(ME): the above files include <assert.h> but don't use it" \
1>&2; exit 1; } || :
@h='<assert.h>' re='\<assert *\(' $(_header_without_use)
# Prohibit the inclusion of getopt.h without an actual use.
sc_prohibit_getopt_without_use:
@h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
# Don't include quotearg.h unless you use one of its functions.
sc_prohibit_quotearg_without_use:
@h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
# Don't include quote.h unless you use one of its functions.
sc_prohibit_quote_without_use:
@h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
# Don't include this header unless you use one of its functions.
sc_prohibit_long_options_without_use:
@h='"long-options.h"' re='\<parse_long_options *\(' \
$(_header_without_use)
# Don't include this header unless you use one of its functions.
sc_prohibit_inttostr_without_use:
@h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
$(_header_without_use)
# Don't include this header unless you use one of its functions.
sc_prohibit_error_without_use:
@h='"error.h"' \
re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
$(_header_without_use)
sc_prohibit_safe_read_without_use:
@h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
$(_header_without_use)
sc_prohibit_argmatch_without_use:
@h='"argmatch.h"' \
re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \
$(_header_without_use)
sc_prohibit_root_dev_ino_without_use:
@h='"root-dev-ino.h"' \
re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
$(_header_without_use)
sc_obsolete_symbols:
@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
$$($(CVS_LIST_EXCEPT)) && \
$$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
1>&2; exit 1; } || :
@ -202,14 +251,14 @@ endif
# Make sure that none are inadvertently reintroduced.
sc_prohibit_jm_in_m4:
@grep -nE 'jm_[A-Z]' \
$$($(CVS_LIST) $(srcdir)/m4 |grep '\.m4$$') && \
$$($(VC_LIST) $(srcdir)/m4 |grep '\.m4$$') && \
{ echo '$(ME): do not use jm_ in m4 macro names' \
1>&2; exit 1; } || :
sc_root_tests:
@t1=sc-root.expected; t2=sc-root.actual; \
grep -nl '^PRIV_CHECK_ARG=require-root' \
$$($(CVS_LIST) tests) |sed s/tests/./ |sort > $$t1; \
$$($(VC_LIST) tests) |sed s/tests/./ |sort > $$t1; \
sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
$(srcdir)/tests/Makefile.am |sort > $$t2; \
diff -u $$t1 $$t2 || diff=1; \
@ -228,7 +277,7 @@ sc_system_h_headers:
| sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \
) && \
grep -nE -f "$pat" \
$$($(CVS_LIST) src | \
$$($(VC_LIST) src | \
grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
&& { echo '$(ME): the above are already included via system.h'\
1>&2; exit 1; } || :; \
@ -237,12 +286,12 @@ sc_system_h_headers:
sc_sun_os_names:
@grep -nEi \
'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
$$($(CVS_LIST_EXCEPT)) && \
$$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
exit 1; } || :
sc_the_the:
@grep -ni '\<the ''the\>' $$($(CVS_LIST_EXCEPT)) && \
@grep -ni '\<the ''the\>' $$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): found use of "the ''the";' 1>&2; \
exit 1; } || :
@ -250,17 +299,17 @@ sc_tight_scope:
test ! -d src || $(MAKE) -C src $@
sc_trailing_blank:
@grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \
@grep -n '[ ]$$' $$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): found trailing blank(s)' \
1>&2; exit 1; } || :
# Match lines like the following, but where there is only one space
# between the options and the description:
# -D, --all-repeated[=delimit-method] print all duplicate lines\n
longopt_re = --[a-z][0-9A-Za-z-]*(\[=[0-9A-Za-z-]*\])?
longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
sc_two_space_separator_in_usage:
@grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
$$($(CVS_LIST_EXCEPT)) && \
$$($(VC_LIST_EXCEPT)) && \
{ echo "$(ME): help2man requires at least two spaces between"; \
echo "$(ME): an option and its description"; \
1>&2; exit 1; } || :
@ -269,7 +318,7 @@ sc_two_space_separator_in_usage:
# This won't find any for which error's format string is on a separate line.
sc_unmarked_diagnostics:
@grep -nE \
'\<error \([^"]*"[^"]*[a-z]{3}' $$($(CVS_LIST_EXCEPT)) \
'\<error \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \
| grep -v '_''(' && \
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
exit 1; } || :
@ -277,7 +326,7 @@ sc_unmarked_diagnostics:
# Avoid useless parentheses like those in this example:
# #if defined (SYMBOL) || defined (SYM2)
sc_useless_cpp_parens:
@grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \
@grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) && \
{ echo '$(ME): found useless parentheses in cpp directive' \
1>&2; exit 1; } || :
@ -319,22 +368,22 @@ makefile-check:
&& { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
news-date-check: NEWS
today=`date +%Y-%m-%d`; \
if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
>/dev/null; then \
:; \
else \
echo "version or today's date is not in NEWS" 1>&2; \
exit 1; \
today=`date +%Y-%m-%d`; \
if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
>/dev/null; then \
:; \
else \
echo "version or today's date is not in NEWS" 1>&2; \
exit 1; \
fi
changelog-check:
if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \
>/dev/null; then \
:; \
else \
echo "$(VERSION) not in ChangeLog" 1>&2; \
exit 1; \
if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \
>/dev/null; then \
:; \
else \
echo "$(VERSION) not in ChangeLog" 1>&2; \
exit 1; \
fi
m4-check:
@ -350,9 +399,10 @@ po-check:
grep -E -v '^(#|$$)' po/POTFILES.in \
| grep -v '^src/false\.c$$' | sort > $@-1; \
files=; \
for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do \
for file in $$($(VC_LIST_EXCEPT)) lib/*.[ch]; do \
case $$file in \
djgpp/* | man/*) continue;; \
*/c99-to-c89.diff) continue;; \
esac; \
case $$file in \
*.[ch]) \
@ -361,7 +411,8 @@ po-check:
esac; \
files="$$files $$file"; \
done; \
grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort -u > $@-2; \
grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files \
| sort -u > $@-2; \
diff -u $@-1 $@-2 || exit 1; \
rm -f $@-1 $@-2; \
fi
@ -409,37 +460,25 @@ copyright-check:
exit 1; }; \
fi
# Sanity checks with the CVS repository.
cvs-tag-check:
echo $(this-cvs-tag); \
if $(CVS) -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
echo "$(this-cvs-tag) as already been used; not tagging" 1>&2; \
exit 1; \
else :; fi
cvs-diff-check:
if $(CVS) diff >cvs-diffs; then \
rm cvs-diffs; \
else \
vc-diff-check:
(CDPATH=; cd $(srcdir) && $(VC) diff) > vc-diffs || :
if test -s vc-diffs; then \
cat vc-diffs; \
echo "Some files are locally modified:" 1>&2; \
cat cvs-diffs; \
exit 1; \
else \
rm vc-diffs; \
fi
cvs-check: cvs-diff-check cvs-tag-check
cvs-check: vc-diff-check
maintainer-distcheck:
$(MAKE) distcheck
$(MAKE) my-distcheck
# Tag before making distribution. Also, don't make a distribution if
# checks fail. Also, make sure the NEWS file is up-to-date.
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
cvs-dist: $(local-check) cvs-check maintainer-distcheck
$(CVS) update po
$(CVS) tag -c $(this-cvs-tag)
# Don't make a distribution if checks fail.
# Also, make sure the NEWS file is up-to-date.
vc-dist: $(local-check) cvs-check maintainer-distcheck
$(MAKE) dist
# Use this to make sure we don't run these programs when building
@ -491,9 +530,9 @@ announcement: NEWS ChangeLog $(rel-files)
--curr=$(VERSION) \
--release-archive-directory=$(release_archive_dir) \
--gpg-key-id=$(gpg_key_ID) \
--news=NEWS \
$(addprefix --url-dir=, $(url_dir_list)) \
--news=$(srcdir)/NEWS \
--bootstrap-tools=automake \
$(addprefix --url-dir=, $(url_dir_list))
## ---------------- ##
## Updating files. ##
@ -502,8 +541,8 @@ announcement: NEWS ChangeLog $(rel-files)
ftp-gnu = ftp://ftp.gnu.org/gnu
www-gnu = http://www.gnu.org
# Use mv-if-change if you prefer it.
move_if_change ?= mv
# Use mv, if you don't have/want move-if-change.
move_if_change ?= move-if-change
# --------------------- #
@ -547,7 +586,7 @@ emit_upload_commands:
@echo =====================================
@echo =====================================
@echo "$(srcdir)/build-aux/gnupload $(GNUPLOADFLAGS) \\"
@echo " --to $(gnu_rel_host):coreutils \\"
@echo " --to $(gnu_rel_host):$(PACKAGE) \\"
@echo " $(rel-files)"
@echo '# send the /tmp/announcement e-mail'
@echo =====================================
@ -562,11 +601,13 @@ alpha beta major: news-date-check changelog-check $(local-check)
&& { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
|| { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
|| :
$(MAKE) cvs-dist
$(MAKE) vc-dist
$(MAKE) $(xd-delta)
$(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
ln $(rel-files) $(release_archive_dir)
chmod a-w $(rel-files)
$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
echo $(VERSION) > $(prev_version_file)
$(CVS) ci -m. $(prev_version_file)
$(VC) commit -m \
'$(prev_version_file): Record previous version: $(VERSION).' \
$(prev_version_file)