1
0
mirror of https://https.git.savannah.gnu.org/git/gnulib.git synced 2026-08-28 04:27:54 +00:00

311 Commits

Author SHA1 Message Date
Jim Meyering 8e2bc0b51c maint.mk: update regex to reflect 2013 addition of "assume" to verify.h
* top/maint.mk (sc_prohibit_verify_without_use): Don't reject a source
file that uses the assume macro, claiming that verify.h is unused.
2017-05-13 18:18:22 -07:00
Jim Meyering 94386a1366 maint.mk: enforce spelling of "timestamp" (i.e., no space)
* top/maint.mk (prohibit_undesirable_word_seq_RE_): Also
disallow /\btime\s+stamps?\b/.  Prefer "timestamp".
2017-01-10 07:19:02 -08:00
Pádraig Brady 4bbd45b4b6 maint.mk: support parallel execution of coverage
* top/maint.mk (coverage): Run dependencies serially,
thus supporting parallel processing of each one,
particularly build-coverage, which builds and runs tests.
2017-01-05 14:46:20 +00:00
Paul Eggert a3fd683de3 version-etc: new year
* build-aux/gendocs.sh (version):
* doc/gendocs_template:
* doc/gendocs_template_min:
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR):
Update copyright dates by hand in templates and the like.
* all files: Run 'make update-copyright'.
2017-01-01 02:59:23 +00:00
Eric Blake 5996001fc5 maint.mk: hoist gnulib_dir definition earlier
Commit 1894933 introduced a temporary warning during all uses of 'make':

Can't open /lib/intprops.h: No such file or directory.

due to an early evaluation of $(shell) prior to the default definition
of $(gnulib_dir).  While that has been fixed in commit ffff79d, hoisting
the definition to the top will prevent further edits from inadvertently
reintroducing the problem.

* top/maint.mk (gnulib_dir): Move near top of file.

Signed-off-by: Eric Blake <eblake@redhat.com>
2016-12-31 07:10:25 -06:00
Jim Meyering ffff79dad7 maint.mk: do not always evaluate intprops-related shell
* top/maint.mk (_intprops_names): Change := to just "=" to avoid
using gnulib_dir undefined (gnulib_dir is defined later in the
file, which will be fixed separately), and besides, there is no
need to incur the cost of this shell invocation for every single
use of this .mk file.  Reported by Eric Blake in
https://lists.gnu.org/archive/html/bug-gnulib/2016-12/msg00137.html
2016-12-31 01:31:59 -08:00
Jim Meyering 1894933d68 maint.mk: improve sc_prohibit_intprops_without_use
* top/maint.mk (_intprops_names): Don't hard-code the list of
symbol names.  Instead, derive it on the fly.
2016-12-30 09:01:05 -08:00
Jim Meyering e9ae724b20 maint.mk: update list of intprops.h symbol names
* top/maint.mk (_intprops_names): Regenerate the list of symbol names.
This avoids a false failure of the sc_prohibit_intprops_without_use
in grep.
2016-12-30 09:42:06 +01:00
Pino Toscano 38c0fe5ca1 main.mk: remove sc_program_name
There is no more need to use set_program_name in tools (getprogname
is enough for most of the cases).
* cfg.mk (local-checks-to-skip): Remove sc_program_name.
* top/maint.mk (sc_program_name): Remove.
2016-09-05 09:21:54 -07:00
Ján Tomko 0fe8b3c811 maint.mk: expand the prohibit_doubled_word regex
This check has a static list of words that are checked for
repetitions.  Expand it before running the perl script to
avoid using expensive captures.  This decreases the cost
for libvirt from 1.66s to 0.66s.
* top/maint.mk (prohibit_doubled_word_expanded_): Define.
(sc_prohibit_doubled_word): Use it.
2016-08-02 08:31:43 -07:00
Ján Tomko b23fd9d8c3 maint.mk: speed up require_config_h_first
Instead of spawning three processes per file,
rewrite the check in perl and run it once for all the files.
* top/maint.mk (perl_config_h_first_): Define.
(sc_require_config_h_first): Use it in place of shell code.
2016-08-01 07:43:25 -07:00
Ján Tomko 04fd882111 maint.mk: speed up sc_po_check
sc_po_check would skip files based on their names, or on the
existence of files with derived names. Rewrite it to use perl
instead of shell to make the check faster.
* top/maint.mk (perl_translatable_files_list_): Define.
(sc_po_check): Use it.
2016-08-01 07:38:06 -07:00
Paul Eggert a4910b9481 intprops, mktime, strtol: assume two's complement
These macros were not portable to every conforming C11 ones'
complement platform.  It's not worth the hassle of porting to some
platforms that use ones' complement or signed magnitude, as such
platforms are almost purely theoretical nowadays and porting even
to some of them makes the code harder to review for little
practical benefit.  Problem reported by Florian Weimer in:
https://sourceware.org/ml/libc-alpha/2016-04/msg00295.html
* lib/intprops.h (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT)
(TYPE_SIGNED_MAGNITUDE, _GL_INT_TWOS_COMPLEMENT):
* lib/mktime.c (TYPE_TWOS_COMPLEMENT):
* lib/strtol.c (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT)
(TYPE_SIGNED_MAGNITUDE):
Remove.  All uses rewritten to assume two's complement, which is
all we can reasonably test nowadays anyway.
* top/maint.mk (_intprops_names): Remove the removed macros.
2016-04-13 00:13:23 -07:00
Paul Eggert 71090a2a31 version-etc: new year
* build-aux/gendocs.sh (version):
* doc/gendocs_template:
* doc/gendocs_template_min:
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR):
Update copyright dates by hand in templates and the like.
* all files: Run 'make update-copyright'.
2016-01-01 00:57:21 -08:00
Pádraig Brady 2a8b497f35 maint.mk: sc_tight_scope: remove extraneous expressions
* top/maint.mk (tight_scope): This is not really required since
commit 3ef58f46 as sed_wrap ensures we don't get an empty expression
that matches all nm entries.  But it does remove extraneous entries
that may be confusing or cause issue in future maintenance.
2015-10-18 23:25:29 +01:00
Jim Meyering 37c054af09 maint.mk: _gl_TS_function_match: fix "extern" name extracting regexp
* top/maint.mk (_gl_TS_function_match): This heuristic extern-function-
name-extraction regexp mistakenly used \S+, and would mistakenly
extract "*F" from "extern int *F()" rather than the desired "F".
Use \w+ instead.
2015-10-17 20:33:36 -07:00
Jim Meyering 3ef58f46fa maint.mk: sc_tight_scope: factor and support OS X
* top/maint.mk (_gl_tight_scope): Address three issues:
- factor out four instances of code that wraps a string in "^...$"
- allow nm-reported symbol names to have an optional leading "_"
- add "main" to the list of ignored variable names, because on os x,
"main" has nm-reported type "S" in the variable-checking section.
2015-10-17 20:33:35 -07:00
Pádraig Brady d5e367c52d maint.mk: fix compatibility with OS X nm
* top/maint.mk (_gl_tight_scope): Use the -g option to
show exported items rather than the -e option which is
ignored on all platforms except OS X where it gives an error.
Reported by Assaf Gordon.
2015-01-08 12:33:50 +00:00
Paul Eggert b9bfe78424 version-etc: new year
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date.
* all files: Run 'make update-copyright'.
2014-12-31 17:47:54 -08:00
Eric Blake 5be8d47e02 maintainer-makefile: add syntax check for useless ';;'
Most instances of ;; in C code are mistakes, where the second
semicolon is a no-op.  This rule tries to make it easy to flag
the typos occuring at the end of a statement.  It intentionally
does not flag for(;;) loops, and misses grammar problems in
comments if the problem occurs in the middle of the line.

Shell files (including configure.ac and Makefile.am, which can
contain shell snippets) are too likely to use case statements
where ;; is legitimate, so those are not scanned.

* top/maint.mk (sc_prohibit_double_semicolon): New rule.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-09-04 17:51:06 -06:00
Pádraig Brady 4044ca9a9c maint.mk: give projects more flexibilty in set_prog_name arguments
* top/maint.mk (sc_program_name): Allow arguments other than argv[0]
to be passed to set_program_name().  This is needed by the multicall
coreutils program for example.
2014-07-12 15:22:28 +01:00
Eric Blake 9d5efe7d61 maint.mk: less syntax-check noise when SIGPIPE is ignored
For a project with enough files, such as libvirt, vc-list-files
can produce so much input that it can lead to SIGPIPE to earlier
parts of a pipeline when later parts do a quick filter.  Also,
many buildbot environments (annoyingly) ignore SIGPIPE, which
causes a number of tools to be rather chatty about reporting
EPIPE write failures.  It doesn't help that POSIX has standardized
that the shell is unable to revert SIGPIPE to unignored status
if it inherits it as ignored - otherwise, the solution would just
be to re-enable SIGPIPE anywhere we expect to benefit from early
filtering exits.  Here's a short demonstration:

$ ( trap '' PIPE; build-aux/vc-list-files | grep -l '\.c$' >/dev/null)
sed: couldn't write 16 items to stdout: Broken pipe

and a link to the much larger buildbot results against libvirt:
http://honk.sigxcpu.org:8001/job/libvirt-syntax-check/2465/console
with noise such as this, detracting from the later actual build
failure it was reporting:

> prohibit_argmatch_without_use
> grep: write error
> grep: write error
> /bin/sed: couldn't write 25 items to stdout: Broken pipe
> sed: couldn't write 1 item to stdout: Broken pipe
> 0.46 prohibit_argmatch_without_use

But look at the above example: we are piping data to grep -l,
and then discarding that output.  At most, data | grep -l will
output "(standard input)", and exit early if the first match
is found before the end of a page (causing SIGPIPE to the process
feeding the pipe).  It makes much more sense to use grep -l when
searching for a subset of files that have a match among a larger
set of file names passed as arguments, and NOT when used to
filter stdin.  Sure, we're burning a bit more CPU power by
processing the full list instead of exiting early, but at least
it cuts down on the noise.

* top/maint.mk (_sc_header_without_use)
(sc_require_config_h_first): Parse full list.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-07-08 13:54:26 -06:00
Eric Blake d55899fd2c maintainer-makefile: delete obsolete code
I noticed this while reading through the file to debug a different
issue.  The grace period mentioned in the comment has elapsed.

* top/maint.mk (build_aux): Drop old code, as threatened.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-06-04 13:09:56 -06:00
Eric Blake 088f504938 maintainer-makefile: avoid spurious error messages
Ever since commit 3f51bf41, we are leaving garbage in the console
if a user executes commands without first running configure, as
shown in the following pseudo-transcript:

$ git clone $sv/coreutils.git
$ cd coreutils
$ ./bootstrap
$ make
make: -n: Command not found
There seems to be no Makefile in this directory.
You must run ./configure before running 'make'.
make: *** [abort-due-to-no-makefile] Error 1

The first line stems from the fact that we have a $(shell $(SED) -n)
use, which gets unconditionally executed even though $(SED) is only
guaranteed to be defined if Makefile was included.  We also end up
trying to invoke /vc-list-files to compute the set of syntax check
rules to run due to a $(shell $(VC_LIST)), even though that file
likely doesn't exist in the root directory, but where the error
message was squelched.  Since we already have the nice hooks in
place to remind the user they haven't created Makefile yet, and
since 'make syntax-check' makes no sense without a Makefile, it is
easier to just avoid $(shell) computations of internal state
associated with syntax check, by using the same conditional as
GNUmakefile in determining if Makefile exists.

* top/maint.mk (syntax-check): Guard definition and use of
$(shell) by whether Makefile is present.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-06-04 13:07:49 -06:00
Assaf Gordon 6ddb55d1eb maint.mk: Relax the copyright check to cater for non FSF projects
* top/maint.mk (sc_copyright_check): Relax the check for $PACKAGE.texi
to not require the "Free" suffix after the copyright years.
2014-04-19 12:35:53 +01:00
Eric Blake 3f51bf41c8 maintainer-makefiles: use $(SED) for syntax check
Roman Bogorodskiy reported that attempts to use 'make syntax-check'
for libvirt on a BSD host was failing, due to libvirt's use of
GNU sed constructs in cfg.mk.  While libvirt could be patched to
use only portable sed constructs, it is also worth making sed
replaceable so that any maintainer can use a consistent sed program
rather than being hardcoded to the first 'sed' on $PATH.

* modules/maintainer-makefile (configure.ac): Check for sane sed.
* top/maint.mk: Change sed to $(SED).

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-02-20 06:56:42 -07:00
Jim Meyering a75f17adf4 maint.mk: adapt openat.h-include-without-use test
* top/maint.mk (sc_prohibit_openat_without_use): Also check for
FCHMODAT_INLINE, FCHOWNAT_INLINE and STATAT_INLINE, to avoid
failing on gnulib's own lib/{chmod,chown,stat}at.c files.
With this change, running "make sc_maint" in gnulib's top-level
directory now passes for me.
2014-01-03 17:00:01 -08:00
Jim Meyering 7a0c729aac maint: fix public-submodule-commit to work with newer git
* top/maint.mk (public-submodule-commit): Remove excess quoting.
We were over-quoting the test arguments, and somewhere prior to
version 1.8.5.2.229, git stopped removing those excess quotes,
which made the test fail, since the unexpanded strings would
always differ; using GIT_TRACE=1 confirmed that the git merge-base
command wasn't even being run.
2014-01-01 20:32:33 -08:00
Eric Blake 1276a2c5f2 maint: update copyright
I ran 'make update-copyright'.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-01-01 00:07:10 -07:00
Jim Meyering 20f47607a2 maint.mk: prefer gpgv2 over gpgv
* top/maint.mk (gpgv): Use gpgv2 if present, else gpgv.
(gpg_key_ID): Use $(gpgv), rather than hard-coding "gpgv".
Reported by Gary Vaughan.
2013-10-31 07:22:29 -07:00
Jim Meyering 233419c39c maint.mk: restore functionality removed by recent change
Sunday's change, v0.0-8062-g6b24f60, may have appeared correct from
the context of a shallow-cloned gnulib repository: "git describe"
would fail in such a directory.  However, that change made it so
the reported gnulib revision no longer includes the version number
or a commit count, even when run from a full clone.
* top/maint.mk (gnulib-version): Use the full "git describe"
output when possible, e.g., the form above, rather than the
abbreviated, no-tag, no-commit-count string, and fall back to
using a 10-byte hash, rather than the default minimal-length
hash prefix, since while the minimal-length one may be fine today,
it is likely not to be unique for very long.
2013-10-28 15:33:24 -07:00
Jim Meyering 4c2f17d2a6 maint.mk: fix "release" target to build _version
This fixes a bug in README-release whereby following the outlined
steps, one would publish a tarball whose programs would report
--version output not consistent with the package version number.
This bug caused grep-2.15 to produce a grep program whose
--version option made it print 2.14.56-1e3d rather than 2.15.
* top/maint.mk (release): Making this target build "_version"
ensures that the new version number is reflected in configure.
2013-10-26 19:26:35 -07:00
Gary V. Vaughan 6b24f60dad maint.mk: get current gnulib revision correctly.
* top/maint.mk (gnulib-version): Use git rev-parse to get the
current HEAD revision.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-27 14:08:08 +13:00
Eric Blake a363f4ed4a maint.mk: catch more abuse of HAVE_DECL in syntax-check
Libvirt had a patch that attempted to do:

+#elif defined(SIOCSIFLLADDR) && defined(HAVE_STRUCT_IFREQ) && \
+    defined(HAVE_DECL_LINK_ADDR)

but which was not flagged by the syntax checker as suspicious
(all HAVE_DECL_* symbols defined by autoconf are always defined
after including <config.h>, although they are sometimes defined
as the value 0).  Now that code is flagged until changed to:

+#elif defined(SIOCSIFLLADDR) && defined(HAVE_STRUCT_IFREQ) && \
+    HAVE_DECL_LINK_ADDR

* top/maint.mk (sc_prohibit_defined_have_decl_tests): Relax regex.

Signed-off-by: Eric Blake <eblake@redhat.com>
2013-05-10 20:35:20 -06:00
Eric Blake 9fc81090f6 maint: update all copyright year number ranges
Run "make update-copyright".  Compare to commit 1602f0a from last year.

Signed-off-by: Eric Blake <eblake@redhat.com>
2013-01-01 00:50:58 +00:00
Peter Rosin 258a23681f maint.mk: handle missing git with more grace
* top/maint.mk (no-submodule-changes, public-submodule-commit): Quietly
proceed if git is not present.

Copyright-paperwork-exempt: yes
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2012-12-31 15:27:34 -07:00
Stefano Lattarini 6f909c901d maint.mk: typofix in comments 2012-12-08 18:09:18 +01:00
Stefano Lattarini cc32620e25 maint.mk: avoid extra forks
* top/maint.mk (_cfg_mk): The GNU make manual documents that
"$(wildcard FILE)" expands to empty if FILE doesn't exist.
So use that instead of "$(shell test -f FILE && echo FILE)".
2012-12-08 18:06:12 +01:00
Theophile Ranquet 908b11d3f4 maint.mk: avoid gratuitous failure
Reported by Stefano Lattarini in
<http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00022.html>
* top/maint.mk (public-submodule-commit): Quote more safely.
2012-11-21 06:31:21 -07:00
Jim Meyering 04e49dd5a9 maint.mk: rename a new configurable variable
* top/maint.mk (_gl_translatable_string_re): Rename from
translation-markers: _gl_ prefix to insulate from user Makefile code,
and the _re suffix to inform that it's a regular expression.
2012-10-30 14:45:23 +01:00
Eric Blake 4027785526 maint.mk: let packages tweak sc_po_check pattern
libosinfo wants to look for XML files with translation markers
of the form <_name>string to translate</_name>.  Rather than
globally adding this to the regex, I thought it would be easier
to make it possible for cfg.mk to override the default pattern.
https://www.redhat.com/archives/virt-tools-list/2012-October/msg00270.html

* top/maint.mk (sc_po_check): Add translation-markers, to allow
finding files with other translation markers.

Signed-off-by: Eric Blake <eblake@redhat.com>
2012-10-26 10:34:41 -06:00
Akim Demaille cb38ce7db8 maint.mk: fix strict vs. lazy variable issues with RELEASE
* top/maint.mk (_equal): New function.
(member_check): Strip the result to avoid spurious spaces.
(url_dir_list): Do not use ifeq, which is strict, as it will
require RELEASE_TYPE to be defined.
(announcement_Cc_, announcement_mail_headers_): Likewise: instead
of relying on ifeq, use $(release_type) to dispatch (lazily) onto...
(announcement_Cc_alpha,announcement_mail_headers_alpha)
(announcement_Cc_beta,announcement_mail_headers_beta)
(announcement_Cc_stable,announcement_mail_headers_stable): these.
(release): Do not depend on $(release-type), as it forces its
evaluation.  Bounce to it.
2012-09-25 19:22:01 +02:00
Akim Demaille 8664711154 maint.mk: formatting changes
* top/maint.mk: Indent bodies of if's.
2012-09-25 11:52:52 +02:00
Akim Demaille b9a38b4535 maint.mk: provide "make upload" to ease uploading
See <http://lists.gnu.org/archive/html/bug-gnulib/2012-08/msg00028.html>.
Do not depend simply on the current $(VERSION), as there may have been
new commits since the tarball generation.  Rather, rely on $(RELEASE),
as "make release-commit" already does.

For consistency, add "make release RELEASE='X.Y TYPE'" as an alias for
"make TYPE".

* top/maint.mk (upload_command, upload, release): New.
(RELEASE_TYPE): If undefined, default to the second word of $(RELEASE).
(VERSION): first word of $(RELEASE) is always right.
(emit_upload_commands): Adjust.
* top/README-release: Update.
2012-09-25 11:50:54 +02:00
Akim Demaille aca9380111 maint.mk: factor the validation of RELEASE_TYPE
With help from Jim Meyering.
http://lists.gnu.org/archive/html/bug-gnulib/2012-09/msg00132.html

* top/maint.mk (_empty, _sp): Move their definition earlier.
(member-check, release-type): New.
Use the latter instead of $(RELEASE_TYPE).
Remove now useless local checks.
2012-09-25 11:50:52 +02:00
Akim Demaille a294088ce0 maint.mk: silent rules
With help from Stefano Lattarini.

* top/maint.mk (writable-files): Use $(AM_V_GEN).
(announcement): Use $(AM_V_at).
2012-09-25 11:50:09 +02:00
Jim Meyering 4eb373492e maint.mk: generalize _gl_tight_scope for non-recursive make
* top/maint.mk (_gl_tight_scope): Remove a hard-coded assumption
that *.h would describe additional .h files in the directory
specified by $(_gl_TS_dir).  I.e., add this...
(_gl_TS_other_headers): New variable.
2012-09-18 16:25:19 +02:00
Jim Meyering 0bd094419b maint.mk: exempt trailing blanks found in "binary" files
* top/maint.mk (sc_trailing_blank): Filter out any matches found in
"binary" files, as reported by grep.  Suggested by Richard W.M. Jones
in http://thread.gmane.org/gmane.comp.emulators.guestfs/1902
2012-09-18 08:51:55 +02:00
Jim Meyering b6de466199 maint.mk: sc_prohibit_path_max_allocation: don't FP for UNIX_PATH_MAX
* top/maint.mk (sc_prohibit_path_max_allocation): Avoid false-positive
match for symbols like UNIX_PATH_MAX. Reported by Richard W.M. Jones
in http://thread.gmane.org/gmane.comp.emulators.guestfs/1902
2012-09-18 08:51:48 +02:00
Jim Meyering aef4fe8a5f maint.mk: teach sc_prohibit_magic_number_exit to accept 77
* top/maint.mk (sc_prohibit_magic_number_exit): Do not complain about
uses like "exit (77)".  "77" is automake's "skip this test" exit code.
It is not in the same category as "exit (0)" or "exit (1)", and
besides, I know of no symbolic name for that 77.  Reported by
Richard W.M. Jones in
http://thread.gmane.org/gmane.comp.emulators.guestfs/1902
2012-09-18 08:51:34 +02:00