summaryrefslogtreecommitdiff
path: root/top/maint.mk
Commit message (Collapse)AuthorAgeFilesLines
...
* maint.mk: update list of intprops.h symbol namesJim Meyering2016-12-301-4/+5
| | | | | | * 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.
* main.mk: remove sc_program_namePino Toscano2016-09-051-9/+0
| | | | | | | 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.
* maint.mk: expand the prohibit_doubled_word regexJán Tomko2016-08-021-1/+6
| | | | | | | | | 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.
* maint.mk: speed up require_config_h_firstJán Tomko2016-08-011-7/+16
| | | | | | | 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.
* maint.mk: speed up sc_po_checkJán Tomko2016-08-011-15/+17
| | | | | | | | 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.
* intprops, mktime, strtol: assume two's complementPaul Eggert2016-04-131-2/+1
| | | | | | | | | | | | | | | | | | 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.
* version-etc: new yearPaul Eggert2016-01-011-1/+1
| | | | | | | | | | * 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'.
* maint.mk: sc_tight_scope: remove extraneous expressionsPádraig Brady2015-10-181-1/+1
| | | | | | | * 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.
* maint.mk: _gl_TS_function_match: fix "extern" name extracting regexpJim Meyering2015-10-171-1/+1
| | | | | | | * 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.
* maint.mk: sc_tight_scope: factor and support OS XJim Meyering2015-10-171-6/+7
| | | | | | | | * 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.
* maint.mk: fix compatibility with OS X nmPádraig Brady2015-01-081-2/+2
| | | | | | | * 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.
* version-etc: new yearPaul Eggert2014-12-311-1/+1
| | | | | | * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date. * all files: Run 'make update-copyright'.
* maintainer-makefile: add syntax check for useless ';;'Eric Blake2014-09-041-0/+8
| | | | | | | | | | | | | | | | 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>
* maint.mk: give projects more flexibilty in set_prog_name argumentsPádraig Brady2014-07-121-1/+1
| | | | | | * 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.
* maint.mk: less syntax-check noise when SIGPIPE is ignoredEric Blake2014-07-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* maintainer-makefile: delete obsolete codeEric Blake2014-06-041-7/+0
| | | | | | | | | 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>
* maintainer-makefile: avoid spurious error messagesEric Blake2014-06-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* maint.mk: Relax the copyright check to cater for non FSF projectsAssaf Gordon2014-04-191-1/+1
| | | | | * top/maint.mk (sc_copyright_check): Relax the check for $PACKAGE.texi to not require the "Free" suffix after the copyright years.
* maintainer-makefiles: use $(SED) for syntax checkEric Blake2014-02-201-17/+18
| | | | | | | | | | | | | | 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>
* maint.mk: adapt openat.h-include-without-use testJim Meyering2014-01-031-1/+1
| | | | | | | | * 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.
* maint: fix public-submodule-commit to work with newer gitJim Meyering2014-01-011-2/+2
| | | | | | | | | * 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.
* maint: update copyrightEric Blake2014-01-011-1/+1
| | | | | | I ran 'make update-copyright'. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint.mk: prefer gpgv2 over gpgvJim Meyering2013-10-311-1/+2
| | | | | | * top/maint.mk (gpgv): Use gpgv2 if present, else gpgv. (gpg_key_ID): Use $(gpgv), rather than hard-coding "gpgv". Reported by Gary Vaughan.
* maint.mk: restore functionality removed by recent changev0.1Jim Meyering2013-10-281-1/+2
| | | | | | | | | | | | | | 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.
* maint.mk: fix "release" target to build _versionJim Meyering2013-10-261-0/+1
| | | | | | | | | | 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.
* maint.mk: get current gnulib revision correctly.Gary V. Vaughan2013-10-271-1/+1
| | | | | | | * top/maint.mk (gnulib-version): Use git rev-parse to get the current HEAD revision. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* maint.mk: catch more abuse of HAVE_DECL in syntax-checkEric Blake2013-05-101-1/+1
| | | | | | | | | | | | | | | | | | | 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>
* maint: update all copyright year number rangesEric Blake2013-01-011-1/+1
| | | | | | Run "make update-copyright". Compare to commit 1602f0a from last year. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint.mk: handle missing git with more gracePeter Rosin2012-12-311-2/+4
| | | | | | | | * 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>
* maint.mk: typofix in commentsStefano Lattarini2012-12-081-1/+1
|
* maint.mk: avoid extra forksStefano Lattarini2012-12-081-1/+1
| | | | | | * 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)".
* maint.mk: avoid gratuitous failureTheophile Ranquet2012-11-211-2/+3
| | | | | | 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.
* maint.mk: rename a new configurable variableJim Meyering2012-10-301-3/+3
| | | | | | * 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.
* maint.mk: let packages tweak sc_po_check patternEric Blake2012-10-261-2/+4
| | | | | | | | | | | | | 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>
* maint.mk: fix strict vs. lazy variable issues with RELEASEAkim Demaille2012-09-251-27/+35
| | | | | | | | | | | | | | * 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.
* maint.mk: formatting changesAkim Demaille2012-09-251-12/+12
| | | | * top/maint.mk: Indent bodies of if's.
* maint.mk: provide "make upload" to ease uploadingAkim Demaille2012-09-251-4/+19
| | | | | | | | | | | | | | | | 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.
* maint.mk: factor the validation of RELEASE_TYPEAkim Demaille2012-09-251-8/+24
| | | | | | | | | | 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.
* maint.mk: silent rulesAkim Demaille2012-09-251-2/+4
| | | | | | | With help from Stefano Lattarini. * top/maint.mk (writable-files): Use $(AM_V_GEN). (announcement): Use $(AM_V_at).
* maint.mk: generalize _gl_tight_scope for non-recursive makeJim Meyering2012-09-181-1/+3
| | | | | | | * 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.
* maint.mk: exempt trailing blanks found in "binary" filesJim Meyering2012-09-181-0/+1
| | | | | | * 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
* maint.mk: sc_prohibit_path_max_allocation: don't FP for UNIX_PATH_MAXJim Meyering2012-09-181-1/+1
| | | | | | * 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
* maint.mk: teach sc_prohibit_magic_number_exit to accept 77Jim Meyering2012-09-181-1/+1
| | | | | | | | | * 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
* maint.mk: relax sc_prohibit_strcmp, to avoid a false positiveJim Meyering2012-09-181-1/+1
| | | | | | | * top/maint.mk (sc_prohibit_strcmp): Relax regexp, so as to match all uses of #define, not just those that start in column 1. Richard W.M. Jones reported a false positive in http://thread.gmane.org/gmane.comp.emulators.guestfs/1902
* maint.mk: avoid redundant file name in messageEric Blake2012-08-201-5/+5
| | | | | | | | | | | | | $(_sc_search_regexp) already prefixes its errors with $(ME), so failure on one of these rules looked like: maint.mk: maint.mk: replace strcmp calls above with STREQ/STRNEQ * top/maint.mk (sc_prohibit_strcmp, sc_unmarked_diagnostics) (sc_prohibit_defined_have_decl_tests, sc_const_long_option) (sc_makefile_path_separator_check): Remove bogus $(ME). Signed-off-by: Eric Blake <eblake@redhat.com>
* maintainer-makefile: Fix syntax error with dash.Simon Josefsson2012-08-071-2/+2
| | | | | * top/maint.mk (sc_vulnerable_makefile_CVE-2009-4029): Quote arguments. (sc_vulnerable_makefile_CVE-2012-3386): Likewise.
* maint.mk: sc_prohibit_magic_number_exit: avoid new false positivesJim Meyering2012-08-051-1/+1
| | | | | | * top/maint.mk (sc_prohibit_magic_number_exit): Also filter out matches for /error ?([^,]*)/. This avoids false-positives for strings like "Unknown error (252)", introduced via commit v0.0-7538-g92875a6.
* maint.mk: a "release-commit" wrapper to do-release-commit-and-tagAkim Demaille2012-08-011-0/+6
| | | | | | | | | | * build-aux/do-release-commit-and-tag: Move variable definitions together. ($branch): Instead of defaulting to "master", default to the current branch (as gnu-web-doc-update does). (help): Display the current values of the option arguments. * top/maint.mk (release-commit): New. * top/README-release: Simplify the corresponding step.
* maint.mk: use silent-rules support from AutomakeAkim Demaille2012-07-301-23/+26
| | | | | | * top/maint.mk (news-check, vc-diff-check, announcement) (no-submodule-changes, alpha beta stable, release-prep) (web-manual, update-copyright): Use $(AM_V_GEN) and $(AM_V_at).
* maint.mk: provide a web-manual-update targetAkim Demaille2012-07-301-0/+6
| | | | | * top/maint.mk: here. * top/README-release: Use it to simplify the web manual update step.