bug-gnulib
[Top][All Lists]
Advanced

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

Re: _GL_ARG_NONNULL


From: Bruno Haible
Subject: Re: _GL_ARG_NONNULL
Date: Sat, 19 Dec 2009 15:31:22 +0100
User-agent: KMail/1.9.9

Hi Simon,

> git clone git://git.savannah.gnu.org/libidn.git
> cd libidn
> gnulib-tool --import

Indeed, I reproduce. The reason is that the module 'arg-nonnull' ends up
among the main modules, not the tests modules. But the tests modules need
it as well. We have fixed this for 'link-warning' three months ago, but
forgot about the issue for 'arg-nonnull'.

The fix is not to special-case 'link-warning' any more, and instead move
the metainformation to the module description. This does it.


2009-12-19  Bruno Haible  <address@hidden>

        New module attribute 'Applicability'.
        * modules/TEMPLATE-EXTENDED: New field 'Applicability'.
        * gnulib-tool: New option --extract-applicability.
        (func_usage): Document it.
        (sed_extract_prog): Recognize it.
        (func_get_applicability): New function.
        (func_import): Generalize handling of 'link-warning' module.
        * modules/link-warning (Applicability): New section.
        * modules/arg-nonnull (Applicability): New section.
        Repoted by Simon Josefsson <address@hidden>.

--- gnulib-tool.orig    2009-12-19 15:27:06.000000000 +0100
+++ gnulib-tool 2009-12-19 15:22:16.000000000 +0100
@@ -115,6 +115,7 @@
        gnulib-tool --extract-description module
        gnulib-tool --extract-status module
        gnulib-tool --extract-notice module
+       gnulib-tool --extract-applicability module
        gnulib-tool --extract-filelist module
        gnulib-tool --extract-dependencies module
        gnulib-tool --extract-autoconf-snippet module
@@ -1347,6 +1348,7 @@
     s/^Description:[    ]*$//
     s/^Status:[         ]*$//
     s/^Notice:[         ]*$//
+    s/^Applicability:[  ]*$//
     s/^Files:[  ]*$//
     s/^Depends-on:[     ]*$//
     s/^configure\.ac-early:[    ]*$//
@@ -1389,6 +1391,22 @@
   sed -n -e "/^Notice$sed_extract_prog" < "$lookedup_file"
 }
 
+# func_get_applicability module
+# Input:
+# - local_gnulib_dir  from --local-dir
+# The expected result (on stdout) is either 'main', or 'tests', or 'all'.
+func_get_applicability ()
+{
+  func_lookup_file "modules/$1"
+  { sed -n -e "/^Applicability$sed_extract_prog" < "$lookedup_file"
+    # The default is 'main' or 'tests', depending on the module's name.
+    case "$1" in
+      *-tests) echo "tests";;
+      *)       echo "main";;
+    esac
+  } | sed -e 's,^ *$,,' | sed -e 1q
+}
+
 # func_get_filelist module
 # Input:
 # - local_gnulib_dir  from --local-dir
@@ -2745,9 +2763,9 @@
   # is specified, it will consist only of LGPLed source.
   # The tests-related module list is the transitive closure of the specified
   # modules, including tests modules, minus the main module list excluding
-  # 'link-warning'. Its lib/* sources (brought in through dependencies of
-  # *-tests modules) go into $testsbase/. It may contain GPLed source, even if
-  # --lgpl is specified.
+  # modules of applicability 'all'. Its lib/* sources (brought in through
+  # dependencies of *-tests modules) go into $testsbase/. It may contain GPLed
+  # source, even if --lgpl is specified.
   # Determine main module list.
   saved_inctests="$inctests"
   inctests=""
@@ -2761,8 +2779,13 @@
   fi
   # Determine tests-related module list.
   echo "$final_modules" | LC_ALL=C sort -u > "$tmp"/final-modules
-  sed_remove_link_warning='/^link-warning$/d'
-  testsrelated_modules=`func_reset_sigpipe; echo "$main_modules" | LC_ALL=C 
sort -u | sed -e "$sed_remove_link_warning" | LC_ALL=C join -v 2 - 
"$tmp"/final-modules`
+  testsrelated_modules=`func_reset_sigpipe
+                        for module in $main_modules; do
+                          if test \`func_get_applicability $module\` = main; 
then
+                            echo $module
+                          fi
+                        done \
+                        | LC_ALL=C sort -u | LC_ALL=C join -v 2 - 
"$tmp"/final-modules`
   if test $verbose -ge 1; then
     echo "Tests-related module list:"
     echo "$testsrelated_modules" | sed -e 's/^/  /'
@@ -4639,6 +4662,16 @@
     done
     ;;
 
+  extract-applicability )
+    for module
+    do
+      func_verify_module
+      if test -n "$module"; then
+        func_get_applicability "$module"
+      fi
+    done
+    ;;
+
   extract-filelist )
     for module
     do
--- modules/arg-nonnull.orig    2009-12-19 15:27:06.000000000 +0100
+++ modules/arg-nonnull 2009-12-19 15:26:58.000000000 +0100
@@ -1,6 +1,9 @@
 Description:
 A C macro for declaring that specific arguments must not be NULL.
 
+Applicability:
+all
+
 Files:
 build-aux/arg-nonnull.h
 
@@ -9,6 +12,11 @@
 configure.ac:
 
 Makefile.am:
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
 BUILT_SOURCES += arg-nonnull.h
 # The arg-nonnull.h that gets inserted into generated .h files is the same as
 # build-aux/arg-nonnull.h, except that it has the copyright header cut off.
--- modules/link-warning.orig   2009-12-19 15:27:06.000000000 +0100
+++ modules/link-warning        2009-12-19 15:26:52.000000000 +0100
@@ -1,6 +1,9 @@
 Description:
 A C macro for emitting link time warnings.
 
+Applicability:
+all
+
 Files:
 build-aux/link-warning.h
 
@@ -9,6 +12,11 @@
 configure.ac:
 
 Makefile.am:
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
 BUILT_SOURCES += link-warning.h
 # The link-warning.h that gets inserted into generated .h files is the same as
 # build-aux/link-warning.h, except that it has the copyright header cut off.




reply via email to

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