coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[coreutils] [PATCH 1/4] tests: improve the always_defined_macros check


From: Jim Meyering
Subject: [coreutils] [PATCH 1/4] tests: improve the always_defined_macros check
Date: Sun, 09 May 2010 19:28:06 +0200

FYI,

>From cab21195422804046a7f2b18de2282a46a2e8f39 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Sun, 9 May 2010 12:08:21 +0200
Subject: [PATCH 1/4] tests: improve the always_defined_macros check

* cfg.mk (sc_always_defined_macros): Adjust its helpers not to depend
on the existence of ./lib.  Instead, extract symbols directly from
gnulib/lib/*.in.h files.
---
 cfg.mk |   30 ++++++++++++++----------------
 1 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index 9eb1c9e..6153f53 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -106,32 +106,29 @@ sc_x_sc_dist_check:
                   ) | sort | uniq -u)"                                 \
          && { echo 'Makefile.am: $(sce) mismatch' >&2; exit 1; } || :;

-gl_generated_headers_ = \
-  $$(cd $(gnulib_dir)/lib && echo *.in.h|sed 's,sys_,sys/,g;s/\.in\.h/.h/g')
-
-headers_with_interesting_macro_defs = \
-  exit.h       \
+# ==================================================================
+gl_other_headers_ ?= \
   intprops.h   \
-  lchown.h     \
   openat.h     \
   stat-macros.h

+# Perl -lne code to extract "significant" cpp-defined symbols from a
+# gnulib header file, eliminating a few common false-positives.
 gl_extract_significant_defines_ = \
-  /^\# *define ([^_ (][^ (]*)\s*(\(|\w+)/ && $$2 !~ /(?:rpl_|_used_without_)/ \
+  /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/ && $$2 !~ 
/(?:rpl_|_used_without_)/\
     and print $$1

 # Create a list of regular expressions matching the names
-# of macros that are guaranteed by parts of gnulib to be defined.
+# of macros that are guaranteed to be defined by parts of gnulib.
 .re-defmac:
        @gen_h=$(gl_generated_headers_);                                \
-       (cd $(srcdir)/lib;                                              \
-         for f in $(headers_with_interesting_macro_defs) $$gen_h; do   \
-           test -f $$f &&                                              \
-             perl -lne '$(gl_extract_significant_defines_)' $$f;       \
-          done;                                                        \
-        ) | sort -u                                                    \
-          | grep -Ev 'ATTRIBUTE_NORETURN|SIZE_MAX'                     \
-          | sed 's/^/^# *define /'                                     \
+       (cd $(gnulib_dir)/lib;                                          \
+         for f in *.in.h $(gl_other_headers_); do                      \
+           perl -lne '$(gl_extract_significant_defines_)' $$f;         \
+         done;                                                         \
+       ) | sort -u                                                     \
+         | grep -Ev '^ATTRIBUTE_NORETURN'                              \
+         | sed 's/^/^# *define /'                                      \
          > $@-t
        @mv $@-t $@

@@ -151,6 +148,7 @@ sc_always_defined_macros: .re-defmac
            && { echo '$(ME): define the above via some gnulib .h file' \
                  1>&2;  exit 1; } || :;                                \
        fi
+# ==================================================================

 # Create a list of regular expressions matching the names
 # of files included from system.h.  Exclude a couple.
--
1.7.1.189.g07419


>From 6ac165922c9874246034352ee87b1e40ccfec11c Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Sun, 9 May 2010 18:29:22 +0200
Subject: [PATCH 2/4] tests: loosen/tighten the always_defined_macros check

* cfg.mk (.re-defmac): Generate better regexps: allow white space
before the '#', and append a word-boundary requirement.
Without the latter, #define NULL_DEV ... would evoke a false-positive.
---
 cfg.mk |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index 6153f53..d417461 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -128,7 +128,7 @@ gl_extract_significant_defines_ = \
          done;                                                         \
        ) | sort -u                                                     \
          | grep -Ev '^ATTRIBUTE_NORETURN'                              \
-         | sed 's/^/^# *define /'                                      \
+         | sed 's/^/^ *# *define /;s/$$/\\>/'                          \
          > $@-t
        @mv $@-t $@

--
1.7.1.189.g07419


>From 0f741381c4fbfdbee88885fc06de4add5089153d Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Sun, 9 May 2010 18:47:34 +0200
Subject: [PATCH 3/4] tests: rename a syntax-check

* cfg.mk (sc_prohibit_always-defined_macros): Rename from
sc_always_defined_macros.
* .x-sc_prohibit_always-defined_macros: New file, renamed from...
* .x-sc_always_defined_macros: ...removed.
* Makefile.am (syntax_check_exceptions): Rename here, too.
---
 ..._macros => .x-sc_prohibit_always-defined_macros |    0
 Makefile.am                                        |    2 +-
 cfg.mk                                             |    2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename .x-sc_always_defined_macros => .x-sc_prohibit_always-defined_macros 
(100%)

diff --git a/.x-sc_always_defined_macros b/.x-sc_prohibit_always-defined_macros
similarity index 100%
rename from .x-sc_always_defined_macros
rename to .x-sc_prohibit_always-defined_macros
diff --git a/Makefile.am b/Makefile.am
index f1417a4..9fd5361 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,12 +41,12 @@ changelog_etc =                             \

 syntax_check_exceptions =              \
   .x-sc_GPL_version                    \
-  .x-sc_always_defined_macros          \
   .x-sc_error_message_uppercase                \
   .x-sc_file_system                    \
   .x-sc_obsolete_symbols               \
   .x-sc_po_check                       \
   .x-sc_program_name                   \
+  .x-sc_prohibit_always-defined_macros \
   .x-sc_prohibit_atoi_atof             \
   .x-sc_prohibit_empty_lines_at_EOF    \
   .x-sc_prohibit_fail_0                        \
diff --git a/cfg.mk b/cfg.mk
index d417461..47919df 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -140,7 +140,7 @@ define gl_trap_
 endef

 # Don't define macros that we already get from gnulib header files.
-sc_always_defined_macros: .re-defmac
+sc_prohibit_always-defined_macros: .re-defmac
        @if test -d $(gnulib_dir); then                                 \
          trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0;                 \
          $(gl_trap_);                                                  \
--
1.7.1.189.g07419


>From 74f07c98d4aa5a9dc4e98f4accb6e4af68d70cc6 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Sun, 9 May 2010 18:52:36 +0200
Subject: [PATCH 4/4] tests: move sc_prohibit_always-defined_macros to gnulib's 
maint.mk

* cfg.mk (sc_prohibit_always-defined_macros): Remove it from here.
* gnulib: Update to latest, for a maint.mk that includes that rule.
---
 cfg.mk |   44 --------------------------------------------
 gnulib |    2 +-
 2 files changed, 1 insertions(+), 45 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index 47919df..5a71a12 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -106,50 +106,6 @@ sc_x_sc_dist_check:
                   ) | sort | uniq -u)"                                 \
          && { echo 'Makefile.am: $(sce) mismatch' >&2; exit 1; } || :;

-# ==================================================================
-gl_other_headers_ ?= \
-  intprops.h   \
-  openat.h     \
-  stat-macros.h
-
-# Perl -lne code to extract "significant" cpp-defined symbols from a
-# gnulib header file, eliminating a few common false-positives.
-gl_extract_significant_defines_ = \
-  /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/ && $$2 !~ 
/(?:rpl_|_used_without_)/\
-    and print $$1
-
-# Create a list of regular expressions matching the names
-# of macros that are guaranteed to be defined by parts of gnulib.
-.re-defmac:
-       @gen_h=$(gl_generated_headers_);                                \
-       (cd $(gnulib_dir)/lib;                                          \
-         for f in *.in.h $(gl_other_headers_); do                      \
-           perl -lne '$(gl_extract_significant_defines_)' $$f;         \
-         done;                                                         \
-       ) | sort -u                                                     \
-         | grep -Ev '^ATTRIBUTE_NORETURN'                              \
-         | sed 's/^/^ *# *define /;s/$$/\\>/'                          \
-         > $@-t
-       @mv $@-t $@
-
-define gl_trap_
-  Exit () { set +e; (exit $$1); exit $$1; };                           \
-  for sig in 1 2 3 13 15; do                                           \
-    eval "trap 'Exit $$(expr $$sig + 128)' $$sig";                     \
-  done
-endef
-
-# Don't define macros that we already get from gnulib header files.
-sc_prohibit_always-defined_macros: .re-defmac
-       @if test -d $(gnulib_dir); then                                 \
-         trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0;                 \
-         $(gl_trap_);                                                  \
-         grep -f .re-defmac $$($(VC_LIST_EXCEPT))                      \
-           && { echo '$(ME): define the above via some gnulib .h file' \
-                 1>&2;  exit 1; } || :;                                \
-       fi
-# ==================================================================
-
 # Create a list of regular expressions matching the names
 # of files included from system.h.  Exclude a couple.
 .re-list:
diff --git a/gnulib b/gnulib
index e6addf8..880f2b6 160000
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit e6addf84d6331d634b5d76db03f59851f3de8894
+Subproject commit 880f2b69df57af506439d6aaf1fe185a6f960e43
--
1.7.1.189.g07419




reply via email to

[Prev in Thread] Current Thread [Next in Thread]