1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-19 02:10:57 +02:00
Commit Graph

27428 Commits

Author SHA1 Message Date
Jim Meyering
07fcfe36ce maint: move gl/m4/root-dev-ino.m4 contents into its module definition
We can get the same effect using the modules file.
* gl/m4/root-dev-ino.m4: Remove file.
* gl/modules/root-dev-ino (Depends-on): Add lstat.
(Files): Remove m4/root-dev-ino.m4.
(Makefile.am) [lib_SOURCES]: Add root-dev-ino.c and root-dev-ino.h.
(configure.ac): Remove reference to gl_ROOT_DEV_INO.
2012-09-10 08:56:45 +02:00
Jim Meyering
e6b99c7386 maint: adjust ChangeLog to correct Author
* build-aux/git-log-fix: Add an entry to correct the Author:
of v8.19-111-g51a4b04.  It should be Ondrej Oprala, not me.
2012-09-08 15:13:01 +02:00
Jim Meyering
65672bf109 factor: NEWS and tests
* NEWS (Bug fixes): Mention it.
* tests/misc/factor.pl: Add five of Torbjörn's tests.
2012-09-07 11:04:41 +02:00
Torbjörn Granlund
6c13e72c79 factor: don't ever declare composites to be prime
The multiple-precision factoring code (with HAVE_GMP) was copied from
a now-obsolete version of GMP that did not pass proper arguments to
the mpz_probab_prime_p function.  It makes that code perform no more
than 3 Miller-Rabin tests only, which is not sufficient.

A Miller-Rabin test will detect composites with at least a probability
of 3/4.  For a uniform random composite, the probability will actually
be much higher.

Or put another way, of the N-3 possible Miller-Rabin tests for checking
the composite N, there is no number N for which more than (N-3)/4 of the
tests will fail to detect the number as a composite.  For most numbers N
the number of "false witnesses" will be much, much lower.

Problem numbers are of the form N=pq, p,q prime and (p-1)/(q-1) = s,
where s is a small integer.  (There are other problem forms too,
involving 3 or more prime factors.)  When s = 2, we get the 3/4 factor.

It is easy to find numbers of that form that cause coreutils' factor to
fail:

  465658903
  2242724851
  6635692801
  17709149503
  17754345703
  20889169003
  42743470771
  54890944111
  72047131003
  85862644003
  98275842811
  114654168091
  117225546301
  ...

There are 9008992 composites of the form with s=2 below 2^64.  With 3
Miller-Rabin tests, one would expect about 9008992/64 = 140766 to be
invalidly recognized as primes in that range.

* src/factor.c (MR_REPS): Define to 25.
(factor_using_pollard_rho): Use MR_REPS, not 3.
(print_factors_multi): Likewise.
* THANKS.in: Remove my name, now that it will be automatically
included in the generated THANKS file.
2012-09-07 11:04:41 +02:00
Jim Meyering
51a4b04954 tests: improve checks for setuidgid-using root-only tests
* init.cfg (setuidgid_has_perm_): New function.
(require_root_): Use it.
Improved-by: Bernhard Voelker
* NEWS (Build-related): Mention the improvement.
2012-09-07 11:03:24 +02:00
Eric Blake
47fd706a75 build: default to --enable-gcc-warnings for git tree
Anyone developing on coreutils can be assumed to have a new enough
environment, such that enabling gcc warnings by default will be
useful.  Tarballs still default to no warnings, and the defaults
can still be overridden with --disable-gcc-warnings.

* configure.ac (gl_gcc_warnings): Set default based on environment.
Suggested by Bernhard Voelker.
2012-09-06 10:03:47 -06:00
Pádraig Brady
a514bc402c nproc: disallow non option command line parameters
* src/nproc.c (main): Error if any non option parameters.
* NEWS: Mention the change in behavior.
2012-09-06 10:46:35 +01:00
Jim Meyering
97b786a33d tail,stat: add support for VZFS
* src/stat.c (human_fstype): Add a case: vzfs, 0x565A4653 (local).
Reported by Jens Rosenboom in http://bugs.gnu.org/12356
* NEWS (Improvement): Mention it.
2012-09-06 08:31:26 +02:00
Jim Meyering
ccbd3f3b29 rm: be more careful when using a replacement errno value
* src/remove.c (excise): Tighten the test for when we defer to an
old errno value: instead of relying solely on an FTS_DNR (unreadable
directory) failure, also test current and replacement errno values.
This change would also have solved the problem addressed by commit
v8.19-106-g57dd067.  For more info, see http://bugs.gnu.org/12339#113
2012-09-05 17:31:00 +02:00
Jim Meyering
57dd06703c rm: avoid bogus diagnostic for a slash-decorated symlink-to-dir
These commands would evoke an invalid diagnostic:
    $ mkdir d && ln -s d s && env rm -r s/
    rm: cannot remove 's': Too many levels of symbolic links
remove.c was stripping trailing slashes from "s/" before passing
the name to "rm".  But a trailing slash may change the semantics,
and thus should not be stripped.
* src/remove.c (rm_fts): Do not strip trailing slashes.
* tests/rm/v-slash.sh: Adapt to new expected output.
* gnulib: Update to latest, for an improved fts.c that merely
normalizes trailing slashes.
Reported by Paul Eggert in discussion of http://bugs.gnu.org/12339
2012-09-05 12:10:38 +02:00
Jim Meyering
d5719921a8 tests: depend on the programs we're testing
* tests/local.mk ($(TEST_LOGS)): Depend on $(PROGRAMS), so that
tests are rerun when any program is rebuilt.  Technically, we could
specify precisely which few programs are dependents of each test,
but that can come later, if deemed worth the trouble and maintenance
burden.  Also, there is the issue of the primary program(s) being
tested (i.e., those itemized via print_ver_) versus those that are
tested incidentally: for example, nearly every test exercises "rm"
when its clean-up code removes files.
2012-09-05 08:48:30 +02:00
Stefano Lattarini
eb27c9e478 maint: fix a spurious syntax-check failure
* cfg.mk (exclude_file_name_regexp--sc_file_system): Exempt
'init.cfg', not 'tests/init.cfg'.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
303d074357 tests: more resilient about tainted absolute srcdir path
* tests/init.cfg (stty_reversible_init_): Quote '$abs_top_srcdir'
properly.
(fiemap_capable_): Quote '$abs_srcdir' properly.
(require_dirent_d_type_): Likewise.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
9e6d411e26 maint: fix syntax checks 'sc_root_tests'
* cfg.mk: Don't work by trying to parse the (now gone) file
'tests/Makefile.am'; rather, use the contents of the make variable,
$(all_root_tests), introduced few commits ago.
Fix a few unrelated cosmetic issues while at it.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
212eff2575 maint: avoid a spurious syntax-check error
* cfg.mk (exclude_file_name_regexp--sc_prohibit_test_backticks): Exempt
'tests/local.mk' rather than 'tests/Makefile.am'.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
c30bff07d8 maint: vc_exe_in_TESTS should actually be a syntax check
Because it requires the presence of the '.git' directory, that is,
can be run only for maintainers working from checked-out sources.

* tests/local.mk (vc_exe_in_TESTS): Rename and move ...
* cfg.mk (sc_tests_list_consistency): ... here, with minor adjustments.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
dd223558dc build: remove two now-useless convenience targets
* src/local.mk (built_programs.list, all_programs.list): These.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
65e1165ed4 tests: put test-suite.log back in 'tests/'
* tests/local.mk (TEST_SUITE_LOGS): Define to 'tests/test-suite.log'.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
21b5147fd8 build: don't use recursive make for tests/ subdirectory
* Makefile.am (SUBDIRS): Remove 'tests'.
(include): The '$(top_srcdir)/tests/local.mk' file.
(check-root): Remove this convenience target, it's no longer needed
now that the "real" check-root target once in 'tests/Makefile' will
land in the top-level makefile.
* configure.ac (AC_CONFIG_FILES): Remove 'tests/Makefile'.
* tests/Makefile.am: Rename ...
* tests/local.mk: ... like this, with a lot of adjustments.
* tests/init.cfg: Move ...
* init.cfg: ... here.  This is necessary, for a limitation of the
gnulib-provided 'tests/init.sh', which unconditionally look for
'init.cfg' in the $(srcdir) directory.
* tests/*/*.sh: Adjust: expect init.sh to be in '$srcdir/tests',
not in '$srcdir', and extend $PATH with './src', not with '../src'.
* tests/Coreutils.pm: Adjust similarly.
* tests/pr/pr-tests.pl ($pfx): Likewise.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
24fb6d91b6 maint: list of names of built programs available in the Makefiles
This is just a preparatory refactoring in view of future changes.

* configure.ac (AC_SUBST): New 'built_programs'.
* tests/Makefile.am (AM_TESTS_ENVIRONMENT): Simply define the exported
variable 'built_programs' to the expansion of the '$(built_programs)'
AC_SUBST'd make variable.
(.built-programs): Remove this now-unneeded convenience target.
(CLEANFILES, check_DATA): Delete, no longer needed.
2012-09-05 08:48:29 +02:00
Stefano Lattarini
84f5176fcd maint: remove anachronistic syntax-check
* cfg.mk (sc_no_exec_perl_coreutils): This.  Our new testsuite
layout (perl tests having '.pl' suffix, shell tests having '.sh'
suffix) makes it basically impossible to run into the issue this
check guarded against.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
f3e48aeb6c maint: remove duplicated declaration of the 'sc_check-AUTHORS' target
* cfg.mk: Here.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
85d0a65ffb tests: remove the unused 'root-hint' target
* tests/Makefile.am (root-hint): Here.  The interested user can see
the reasons why some tests are skipped by looking at the messages
they display on the console; here's an excerpt:

    ...
    PASS: misc/id-groups.sh
    id-setgid.sh: skipped test: must be run as root
    SKIP: misc/id-setgid.sh
    PASS: misc/md5sum.pl
    ...
    PASS: df/total-verify.sh
    2g.sh: skipped test: very expensive: disabled by default
    SKIP: du/2g.sh
    ...

Clear enough, and more specific and precise that a generic "some tests
might need to be run as root" message.  And if that user is interested
in making those tests run anyway, he'll just take a look to the README
files to look for info.  So there's no reason to pollute the stdout
with another "hint" that is subsumed by those messages, and that might
go unnoticed anyway.

Moreover, and possibly more importantly, that hint wasn't being
displayed anyway, even before this change!  That's because the
'root-hint' target was listed as prerequisite for the 'check-recursive'
target, which however was not a dependency of the 'check' target in
'tests/Makefile.am', because that file contains no $(SUBDIRS)
definition.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
e8f9c131ba tests: use suffix, not exec-bit, to tell which files are tests
* tests/Makefile.am (vc_exe_in_TESTS): Adjust to look, in the 'tests/'
subdirectory, for files that have one of the extensions listed in
$(TEST_EXTENSIONS), rather than for executable files.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
995cd3fa66 maint: make vc_exe_in_TESTS also work in VPATH builds
* tests/Makefile.am (vc_exe_in_TESTS): It is easy to adjust this
recipe to also work in VPATH setups, also thanks to modifications
done by previous changes.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
86e69b1b62 maint: remove useless dependency for vc_exe_in_TESTS
* tests/Makefile.am (vc_exe_in_TESTS): No need to depend on Makefile:
this target is .PHONY, so it is always run anyway.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
50dfe1f389 maint: avoid parsing of Makefile.am from vc_exe_in_TESTS
* tests/Makefile.am (TESTS): Rename ...
(all_tests): ... like this, so that we'll still be able to know the
complete list of our tests even if the user overrides TESTS from the
command line (which he's allowed to do by the test harness API).
(root_tests): Rename ...
(all_root_tests): ... like this, for similar reasons.
(TESTS, root_tests): Redefine their defaults to to $(all_tests) and
$(all_root_tests) respectively.
(vc_exe_in_TESTS): It can now safely use $(all_tests) to get the
complete list of test cases according to the Makefile, instead of
having to resort to "parsing" of Makefile.am.
(EXTRA_DIST): Use $(all_tests), not $(TESTS).
(v_, w_): Delete, no longer needed.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
cd97af8ee0 build: use 'check-local' to extend the 'check' target
* tests/Makefile.am (check-local): Here, by making this depend
on 'vc_exe_in_TESTS' ...
(check): ... rather than making this depend on them.  While the old
usage worked, it relied on an implementation detail rather than on
documented behavior.
* src/local.mk (check-local): Similarly, make this depend on
'check-README' and 'check-duplicate-no-install' ...
(check): ... rather than on this.
2012-09-05 08:48:28 +02:00
Stefano Lattarini
d263b0e252 scripts: autotools-install: allow user-specified make program
* scripts/autotools-install: Honor $MAKE.  This might be useful
on systems where the make implementation available in $PATH
by default is limited (Solaris) or broken (HP-UX).
2012-09-02 20:05:39 +02:00
Stefano Lattarini
1952f44a74 scripts: autotools-install: style and portability fixes
* scripts/autotools-install: Here.
2012-09-02 19:27:47 +02:00
Benno Schulenberg
e7a02cb588 touch: line up long option in --help text
* src/touch.c (usage): Indent --time=... to line up with all of the
other long options.
2012-09-02 13:51:10 +02:00
Jim Meyering
135664d25e maint: disable sc_proper_name_utf8_requires_ICONV test
It would still pass, but would print many diagnostics like this:
  Can't open src/Makefile.am: No such file or directory.
* cfg.mk (local-checks-to-skip): Temporarily disable a test.
This test will need to be adapted to work with a non-recursive
build set-up, in which there is no Makefile.am alongside each program.
Reported by Bernhard Voelker.
2012-09-02 13:46:59 +02:00
Jim Meyering
9850c74b1f maint: accommodate upcoming, expanded list of warnings from gnulib
* configure.ac: Disable a new gcc warning, -Wsuggest-attribute=format,
since it triggers on copy.c (which I'm not inclined to adjust) and
factor.c's use of vfprintf which would appear to require a change
to stdio.h.
2012-09-02 13:42:39 +02:00
Stefano Lattarini
c9cd19b3e8 maint: fix build_programs definition not to use "make -C src ..."
* dist-check.mk (built_programs): There's no need to issue recursive
make calls in 'src/' to define this (in fact, that works no longer
now that 'src/Makefile.am' is gone).  Simply define this to the sorted
contents of $(bin_PROGRAMS), with the 'src/' prefix and the $(EXEEXT)
suffix (if any) removed.  Reported by Jim Meyering.
2012-09-01 21:28:13 +02:00
Jim Meyering
6a6257a96a build: restore handling of space-tainted build directory name
* man/local.mk: With commit v8.19-84-g08cf455, man page creation
would fail when using a build directory name containing e.g.,
spaces.
2012-09-01 21:28:13 +02:00
Jim Meyering
11d63860bd build: make each man/prog.1 depend on src/prog, not src/prog.c
* man/local.mk: Creating a prog.1 man page requires running
src/prog --help.
List the exceptions, e.g., install.1 depends on src/ginstall
and arch.1 depends on src/uname.
2012-09-01 21:28:13 +02:00
Jim Meyering
552dbe400e maint: check-programs-vs-x: avoid a new syntax-check failure
* cfg.mk (check-programs-vs-x): The new variable,
$(all-progs-but-lbracket) contains libstdbuf.so, and it does
not have a corresponding .x file, so exempt it.
2012-09-01 21:28:12 +02:00
Jim Meyering
e0f95e5b0e maint: avoid distcheck failure by properly cleaning $(ALL_MANS)
* man/local.mk (distclean-local): Remove $(ALL_MANS) when doing
a VPATH build.  If it's not done, generated manpages can be left
around in the build directory after a "make distclean", causing
failures in "make distcheck".
2012-09-01 21:28:12 +02:00
Stefano Lattarini
5b335a256e maint: port manpages generation to VPATH builds
* man/local.mk (.x.1): Use '$(MKDIR_P)' rather than bare 'mkdir'
where appropriate.  Reported by Jim Meyering.
2012-09-01 21:28:12 +02:00
Jim Meyering
246fc2ba8d build: fix VPATH issues in C compilation
* src/local.mk (AM_CPPFLAGS): Add 'src' to the directories that
are searched for #include'd files.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
e6bd4e7913 maint: simplify declaration of "libexec" programs
* configure.ac: No need to use 'gl_ADD_PROG' and an indirection
variable '$optional_pkglib_progs' to declare the 'libstdbuf.so'
"libexec" program; the decision to whether compile that program
is not up to the user, but it only and simply depends on whether
the 'stdbuf' "bin" program is to be built or not.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
10e7c73a6b build: $(mandeps): new, to factor out man pages dependencies
* man/local.mk (mandpep): Rename ...
(mandeps): ... like this.  Make $(ALL_MANS) depend on its
content.  List 'src/system.h' in here, instead of making
$(ALL_MANS) depend on it explicitly.
(man/*.1): No need to list $(mandep) among the dependencies
any longer.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
dc82d7c340 build: enhance man pages cleaning and dependencies
* man/local.mk: All of the manpages should depend on 'src/system.h',
and all of them should be cleaned by "make maintainer-clean", that
is, added to MAINTAINERCLEANFILES.  Make it be so.
Some minor cosmetic tweakings and reorderings while at it.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
98954ce2aa build: simplify: get rid of yet some more indirection variables
* configure.ac: Adjust and improve few comments.
(MAN): Rename ...
(man1_MANS): ... to this.
Ensure it isn't initialized in all Makefiles (which would lead
to spurious errors), by calling AM_SUBST_NOTMAKE on it.
Also call AM_SUBST_NOTMAKE on 'EXTRA_MANS', for consistency.
* man/local.mk (man1_MANS): Simply define to '@man1_MANS@'.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
7ac3e4502e build: rename dist_man1_MANS -> man1_MANS
And list $(man1_MANS) directly in $(EXTRA_DIST) instead.
This is similar to what is done for $(EXTRA_MANS), thus
improving consistency and readability.

* man/local.mk (dist_man1_MANS): Rename ...
(man1_MANS): ... like this.
(EXTRA_DIST): Add its contents.
* cfg.mk (check-x-vs-1): Fix a botched comment.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
f3244dcab6 build: one less unneeded make variable
* man/local.mk (man_aux): This was used only once, so inline its
expansion at its sole point of use ...
(EXTRA_DIST): ... here.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
59da6f1e6f build: simplify and make more portable to non-GNU make
The AC_SUBST'd variable '$(NO_INSTALL_PROGS_DEFAULT)' is only used in
makefile expressions expanding the list of manual pages that are not
built by default (but might need to be when a distribution tarball
is created). Such expressions exploited a feature of make variable
expansion -- namely, $(VAR:%=dir/%.x) -- that, while seemingly quite
portable in practice, is not POSIX-conforming, and could break on
lesser vendor make implementations.  So kill two birds with one stone,
by getting rid of the $(NO_INSTALL_PROGS_DEFAULT) intermediate variable
and improving makefile portability in the process.

While at it, we also clean up some other minor naming inconsistency
and useless indirection.

* configure.ac (NO_INSTALL_PROGS_DEFAULT): Don't define or AC_SUBST
anymore; instead ...
(EXTRA_MANS): ... define and AC_SUBST these.
* man/local.mk (extra_man_1): Rename ...
(EXTRA_MANS): ... like this, explicitly making clear it's AC_SUBST'd.
(extra_man_x): It's used only once, no need to define it; just inline
its only expansion where needed.
(EXTRA_DIST): Adjust.
(ALL_MANS): New, union of $(EXTRA_MANS) and $(dist_man1_MANS).
* cfg.mk (check-x-vs-1, sc_option_desc_uppercase): Rely on $(ALL_MANS)
rather than on $(NO_INSTALL_PROGS_DEFAULT) and $(dist_man1_MANS).
2012-09-01 21:28:12 +02:00
Stefano Lattarini
380d9da0b0 build: simplify: get rid of some indirection variables
The code deciding which coreutils programs to build (depending on
defaults, system capabilities, and user requests) is overly complex
and rather confusing.  Let's begin simplifying it by removing some
non-strictly-necessary indirection variables.

* configure.ac: Adjust and improve few comments.
(OPTIONAL_BIN_PROGS, OPTIONAL_PKGLIB_PROGS): Rename ...
(bin_PROGRAMS, pkglibexec_PROGRAMS): ... like these, respectively.
Ensure they aren't initialized in all Makefiles (which would lead
to spurious errors), by calling AM_SUBST_NOTMAKE on them.
* src/local.mk: Adjust and improve few comments.
(bin_PROGRAMS, pkglibexec_PROGRAMS): Simply define
to the corresponding '@substitution@'.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
f49744040d maint: update gitignore entries
* src/.gitignore: Here, adding the '.dirstamp' file generated
by the C compilation rules.
2012-09-01 21:28:12 +02:00
Stefano Lattarini
5efbe9b686 maint: fix one stray reference to src/Makefile.am
* build-aux/gen-lists-of-programs.sh: In heading comments here.
2012-09-01 21:28:12 +02:00