From cc14efa5bca9aebd1eaa23ac623d3bcc4cda6b02 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 19 Jan 2006 06:00:28 +0000 Subject: [PATCH] Merge with coreutils Makefile.maint. (CVS_LIST): Use build-aux version if available. (VERSION_REGEXP): New macro. (syntax-check-rules): Add sc_no_if_have_config_h, sc_prohibit_assert_without_use, sc_require_config_h, sc_useless_cpp_parens. (sc_obsolete_symbols): Check for O_NDELAY. (sc_dd_max_sym_length): Track coreutils. (sc_unmarked_diagnostics): Look in all files, not just *.c. (sc_useless_cpp_parens): New rule. (news-date-check): Look for version or today's date. (changelog-check): Don't require version number near head. (copyright-check): Use current year instead of hardwiring 2005. (my-distcheck): Depend on $(release_archive_dir)/$(prev-tgz). (announcement): Add --gpg-key-ID. --- Makefile.maint | 76 +++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/Makefile.maint b/Makefile.maint index 8656fbba..a43a6c73 100644 --- a/Makefile.maint +++ b/Makefile.maint @@ -2,7 +2,7 @@ # This Makefile fragment is shared between the coreutils, # CPPI, Bison, and Autoconf. -## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +## Copyright (C) 2001-2006 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 @@ -34,15 +34,19 @@ GZIP_ENV = \ CVS = cvs +# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/ CVS_LIST = sh -c ' \ - (cvsu --find --types=AFGM $$*) 2>/dev/null || \ - awk -F/ '\''{ \ - if (!$$1 && $$3 !~ /^-/) { \ - f=FILENAME; \ - sub(/CVS\/Entries/, "", f); \ - print f $$2; \ - }}'\'' \ - $$(find $${*-*} -name Entries -print) /dev/null \ + if test -x $(srcdir)/build-aux/cvsu; then \ + $(srcdir)/build-aux/cvsu --find --types=AFGM $$*; \ + else \ + awk -F/ '\''{ \ + if (!$$1 && $$3 !~ /^-/) { \ + f=FILENAME; \ + sub(/CVS\/Entries/, "", f); \ + print f $$2; \ + }}'\'' \ + $$(find $${*-*} -name Entries -print) /dev/null; \ + fi \ ' dummy CVS_LIST_EXCEPT = \ @@ -53,6 +57,7 @@ ifeq ($(origin prev_version_file), undefined) 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)) @@ -73,6 +78,10 @@ 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. + # Checks that don't require cvs. # Run `changelog-check' last, as previous test may reveal problems requiring # new ChangeLog entries. @@ -93,16 +102,20 @@ syntax-check-rules = \ sc_dd_max_sym_length \ sc_error_exit_success \ sc_file_system \ + sc_no_if_have_config_h \ sc_obsolete_symbols \ sc_prohibit_atoi_atof \ sc_prohibit_jm_in_m4 \ + sc_prohibit_assert_without_use \ + sc_require_config_h \ sc_root_tests \ sc_space_tab \ sc_sun_os_names \ sc_system_h_headers \ sc_tight_scope \ sc_trailing_space \ - sc_unmarked_diagnostics + sc_unmarked_diagnostics \ + sc_useless_cpp_parens syntax-check: $(syntax-check-rules) # @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \ @@ -135,8 +148,7 @@ sc_cast_of_alloca_return_value: exit 1; } || : sc_space_tab: - @grep -n '[ ] ' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \ 1>&2; exit 1; } || : @@ -144,8 +156,7 @@ sc_space_tab: # They provide no error checking mechanism. # Instead, use strto* functions. sc_prohibit_atoi_atof: - @grep -nE '\<(ato[filq]|ato''ll)\>' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -nE '\<(ato[filq]|ato''ll)\>' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \ 1>&2; exit 1; } || : @@ -158,16 +169,15 @@ sc_error_exit_success: exit 1; } || : sc_file_system: - @grep -ni 'file''system' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found use of "file''system";' \ 'rewrite to use "file system"' 1>&2; \ exit 1; } || : sc_obsolete_symbols: - @grep -nE '\<(HAVE_''FCNTL_H)\>' \ + @grep -nE '\<(\<(HAVE_FCNTL_H|O_NDELAY)\>' \ $$($(CVS_LIST_EXCEPT)) && \ - { echo '$(ME): do not use HAVE_''FCNTL_H' \ + { echo '$(ME): do not use HAVE_FCNTL_H or O_NDELAY' \ 1>&2; exit 1; } || : # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ @@ -183,7 +193,8 @@ sc_changelog: dd_c = $(srcdir)/src/dd.c sc_dd_max_sym_length: ifneq ($(wildcard $(dd_c)),) - @len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\ + @test -f $(dd_c) || exit 0; \ + len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c); \ sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \ |sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \ | wc --max-line-length); \ @@ -240,7 +251,7 @@ sc_system_h_headers: .re-list sc_sun_os_names: @grep -nEi \ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \ - $$($(CVS_LIST_EXCEPT)) && \ + $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \ exit 1; } || : @@ -248,8 +259,7 @@ sc_tight_scope: $(MAKE) -C src $@ sc_trailing_space: - @grep -n '[ ]$$' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found trailing space(s)' \ 1>&2; exit 1; } || : @@ -257,11 +267,18 @@ sc_trailing_space: # This won't find any for which error's format string is on a separate line. sc_unmarked_diagnostics: @grep -nE \ - '\&2; \ exit 1; } || : +# Avoid useless parentheses like those in this example: +# #if defined (SYMBOL) || defined (SYM2) +sc_useless_cpp_parens: + @grep '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): found useless parentheses in cpp directive' \ + 1>&2; exit 1; } || : + # Ensure that date's --help output stays in sync with the info # documentation for GNU strftime. The only exception is %N, # which date accepts but GNU strftime does not. @@ -286,15 +303,17 @@ makefile-check: news-date-check: NEWS today=`date +%Y-%m-%d`; \ - if head NEWS | grep '^\*.*'$$today >/dev/null; then \ + if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \ + >/dev/null; then \ :; \ else \ - echo "today's date is not in NEWS" 1>&2; \ + echo "version or today's date is not in NEWS" 1>&2; \ exit 1; \ fi changelog-check: - if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \ + if grep 'Version $(VERSION_REGEXP)\.$$' ChangeLog \ + >/dev/null; then \ :; \ else \ echo "$(VERSION) not in ChangeLog" 1>&2; \ @@ -363,7 +382,7 @@ v_etc_file = lib/version-etc.c # Make sure that the copyright date in $(v_etc_file) is up to date. copyright-check: @if test -f $(v_etc_file); then \ - grep 'enum { COPYRIGHT_YEAR = 2005 };' $(v_etc_file) \ + grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \ >/dev/null \ || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \ exit 1; }; \ @@ -419,7 +438,7 @@ null_AM_MAKEFLAGS = \ # have to have a recent version of gcc and glibc headers. TMPDIR ?= /tmp t=$(TMPDIR)/$(PACKAGE)/test -my-distcheck: $(local-check) +my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz) -rm -rf $(t) mkdir -p $(t) GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz @@ -471,6 +490,7 @@ announcement: NEWS ChangeLog $(rel-files) --prev=$(PREV_VERSION) \ --curr=$(VERSION) \ --release-archive-directory=$(release_archive_dir) \ + --gpg-key-id=$(gpg_key_ID) \ --news=NEWS \ $(addprefix --url-dir=, $(url_dir_list)) \ -- 2.47.2