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 <br...@clisp.org> 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 <si...@josefsson.org>. --- 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.