[Top][All Lists]
[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.
- _GL_ARG_NONNULL, Simon Josefsson, 2009/12/15
- Re: _GL_ARG_NONNULL, Bruno Haible, 2009/12/15
- Re: _GL_ARG_NONNULL, Simon Josefsson, 2009/12/16
- Re: _GL_ARG_NONNULL, Bruno Haible, 2009/12/16
- Re: _GL_ARG_NONNULL, Simon Josefsson, 2009/12/16
- Re: _GL_ARG_NONNULL,
Bruno Haible <=
- Re: _GL_ARG_NONNULL, Simon Josefsson, 2009/12/20
- Re: _GL_ARG_NONNULL, Eric Blake, 2009/12/21
- .gitignore and generated files (was: Re: _GL_ARG_NONNULL), Bruno Haible, 2009/12/21