Jim Meyering [Fri, 9 Apr 2010 17:07:57 +0000 (19:07 +0200)]
maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Derive the list of guaranteed header names from gnulib/lib/*.in.h,
and use that to create a regexp used to detect all #if HAVE_..._H uses.
* top/maint.mk (sc_prohibit_always_true_header_tests): New rule.
(gl_assured_headers_, az_, AZ_): Define.
(gl_header_upper_case_or_, gl_have_header_regex_): Define.
Jim Meyering [Fri, 23 Apr 2010 09:38:35 +0000 (11:38 +0200)]
vc-list-files tests: convert to use init.sh
* tests/test-vc-list-files-cvs.sh: Invoke "$srcdir/init.sh" and
path_prepend_.
Use Exit, not exit.
Use skip_ rather than open coding it.
Remove trap set-up and compare definitions.
* tests/test-vc-list-files-git.sh: Likewise.
* modules/vc-list-files-tests (Files): Add tests/init.sh.
Use "git -h" for testing for supported options instead of "git --help".
The short-form option only shows a summary, and doesn't layout the full
man page, which is much faster and saves a dependency.
(We found out that git uses man in a build environment of
http://hydra.nixos.org/, which by default doesn't have man installed.)
Grep for the full option name in the summary, too.
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Eric Blake [Fri, 16 Apr 2010 23:04:58 +0000 (17:04 -0600)]
test-stdbool: skip test that fails with Solaris CC
Solaris 9 CC has a bug; it allows (int)0.0 and (bool)0 in constant
expressions, but not (bool)0.0. Our replacement stdbool cannot
provide that guarantee of C99 for this particular compiler, but
since use of that feature causes compilation failure rather than
silent mis-compilation, we just skip the test.
* tests/test-stdbool.c (f): Skip test that causes compilation
error under buggy C++ compiler.
* lib/stdbool.in.h: Document the limitation.
* doc/posix-headers/stdbool.texi (stdbool.h): Likewise.
Eric Blake [Fri, 16 Apr 2010 20:08:15 +0000 (14:08 -0600)]
getopt: allow compilation with C++
A C++ compiler complains that REQUIRE_ORDER is unknown if it is
buried inside the struct.
* lib/getopt_int.h (__ordering): Hoist enum declaration outside
struct.
* lib/getopt.c (_getopt_internal_r): Use correct type.
Reported by Dagobert Michelson, via Joel E. Denny.
Eric Blake [Wed, 14 Apr 2010 19:03:38 +0000 (13:03 -0600)]
strtok_r: relax license to LGPLv2+
strtok_r borrows from glibc, which is LGPLv2+; besides, the
only major changes since 2007-10, when LGPLv3 became the default,
were in commit 5985805, to work around a glibc header bug.
* modules/strtok_r (License): Relax license.
Reported by Matthias Bolte.
Eric Blake [Fri, 9 Apr 2010 22:34:16 +0000 (16:34 -0600)]
getopt-gnu: match recent glibc fixes and posix ruling
The POSIX folks admitted that codifying the behavior of GNU
getopt on a leading '+' in optstring is worthwhile, for writing
programs such as env(1) even when POSIXLY_CORRECT is not defined.
http://austingroupbugs.net/view.php?id=191
However, the ruling is an enhancement request for the next
version of POSIX, and is not binding on platforms that comply
with POSIX 2008, so it should only be enforced for getopt-gnu.
* tests/test-getopt.h (test_getopt): Strengthen tests of leading
'+' handling, when requesting extensions.
* tests/test-getopt_long.h (test_getopt_long): Strengthen test of
'W;' handling.
* m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): Detect glibc 2.11 bug.
* doc/posix-functions/getopt.texi (getopt): Document this.
* doc/glibc-functions/getopt_long.texi (getopt_long): Likewise.
* doc/glibc-functions/getopt_long_only.texi (getopt_long_only):
Likewise.
git-version-gen: use "git update-index..." rather than "git status"
* build-aux/git-version-gen: Use git update-index --refresh, not
"git status". With some versions of git, "git status" would fail
to update the index and result in an unwarranted "-dirty" suffix.
Jim Meyering [Sun, 11 Apr 2010 11:35:33 +0000 (13:35 +0200)]
maint.mk: improve empty-line-at-EOF check
* top/maint.mk (sc_prohibit_empty_lines_at_EOF): Use Perl-based
solution, rather than tail+Perl-based one. The latter would read
a few kilobytes from the end of each file, and did not handle empty
files properly.
Jim Meyering [Sun, 11 Apr 2010 08:26:52 +0000 (10:26 +0200)]
maint.mk: print the elapsed time for each syntax-check rule
* top/maint.mk (sc_m_rules_): Save start time in a file.
(sc_z_rules_): New rules: remove temp file and print elapsed time.
(local-check): Interpose the .z rules
Jim Meyering [Fri, 9 Apr 2010 18:53:49 +0000 (20:53 +0200)]
init.sh: run tr in the "C" locale to avoid multibyte interpretation
* tests/init.sh (rand_bytes_): Run tr in the "C" locale so it does
not try to interpret its random input bytes. Jarno Rajahalme reported
that ./test-xalloc-die.sh would fail with "tr: Illegal byte sequence"
on Darwin 10.3.0 with LC_CTYPE=UTF-8.
(mktempd_): Likewise, just in case.
Jim Meyering [Fri, 9 Apr 2010 08:44:23 +0000 (10:44 +0200)]
ftruncate: mark module as obsolete; even MinGW provides it, now
* modules/ftruncate (Status): Obsolete.
(Notice): Say that.
* doc/posix-functions/ftruncate.texi: Don't say MinGW lacks it.
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/9203
Jim Meyering [Wed, 7 Apr 2010 11:45:59 +0000 (13:45 +0200)]
maint.mk: add a PATH crosschecking syntax-check rule
* top/maint.mk (sc_cross_check_PATH_usage_in_tests): New rule.
Useful if you use a test like the one in help-version (coreutils,
diffutils, grep, gzip) that ensures $(VERSION) matches what is
printed by prog --version.
Jim Meyering [Tue, 6 Apr 2010 17:24:57 +0000 (19:24 +0200)]
init.sh: simply unset TMPDIR rather than risking env -i
* tests/init.sh (mktempd_): Using env -i is rather harsh, and
although it probably works fine on all Unix-based systems, some
systems (Cygwin?) cannot tolerate a totally cleared environment.
Suggestion from Eric Blake.