X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=gnulib-tool;h=2e7b73dd974f2f2c2213c63cf770dbfa9afc371f;hb=c571b02a40485aa46e146a68d6d47eca71a4b477;hp=c6d9dc152c173a1f2737f0b2d81e85f9f3f35243;hpb=f27ea4d35597f50a19c1a5e8c123a31ee5233d40;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index c6d9dc152..2e7b73dd9 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -100,6 +100,7 @@ Usage: gnulib-tool --list gnulib-tool --test --dir=directory module1 ... moduleN gnulib-tool --megatest --dir=directory [module1 ... moduleN] gnulib-tool --extract-description module + gnulib-tool --extract-status module gnulib-tool --extract-notice module gnulib-tool --extract-filelist module gnulib-tool --extract-dependencies module @@ -126,6 +127,7 @@ Operation modes: --megatest test the given modules one by one and all together (recommended to use CC=\"gcc -Wall\" here) --extract-description extract the description + --extract-status extract the status (obsolete or not) --extract-notice extract the notice or banner --extract-filelist extract the list of files --extract-dependencies extract the dependencies @@ -165,6 +167,9 @@ Options for --import: --aux-dir=DIRECTORY Directory relative to --dir where auxiliary build tools are placed (default \"build-aux\"). --with-tests Include unit tests for the included modules. + --with-obsolete Include obsolete modules when they occur among the + dependencies. By default, dependencies to obsolete + modules are ignored. --avoid=MODULE Avoid including the given MODULE. Useful if you have code that provides equivalent functionality. This option can be repeated. @@ -746,6 +751,7 @@ fi # - testsbase from --tests-base # - auxdir from --aux-dir # - inctests true if --with-tests was given, blank otherwise +# - incobsolete true if --with-obsolete was given, blank otherwise # - avoidlist list of modules to avoid, from --avoid # - lgpl yes or a number if --lgpl was given, blank otherwise # - makefile_name from --makefile-name @@ -776,6 +782,7 @@ fi testsbase= auxdir= inctests= + incobsolete= avoidlist= lgpl= makefile_name= @@ -918,6 +925,9 @@ fi --with-tests ) inctests=true shift ;; + --with-obsolete ) + incobsolete=true + shift ;; --avoid ) shift if test $# = 0; then @@ -1028,9 +1038,10 @@ fi if test -n "$local_gnulib_dir" || test -n "$supplied_libname" \ || test -n "$sourcebase" || test -n "$m4base" || test -n "$pobase" \ || test -n "$docbase" || test -n "$testsbase" || test -n "$auxdir" \ - || test -n "$inctests" || test -n "$avoidlist" || test -n "$lgpl" \ - || test -n "$makefile_name" || test -n "$macro_prefix" \ - || test -n "$po_domain" || test -n "$vc_files"; then + || test -n "$inctests" || test -n "$incobsolete" \ + || test -n "$avoidlist" || test -n "$lgpl" || test -n "$makefile_name" \ + || test -n "$macro_prefix" || test -n "$po_domain" \ + || test -n "$vc_files"; then echo "gnulib-tool: invalid options for 'update' mode" 1>&2 echo "Try 'gnulib-tool --help' for more information." 1>&2 echo "If you really want to modify the gnulib configuration of your project," 1>&2 @@ -1256,6 +1267,7 @@ sed_extract_prog=':[ ]*$/ { :a n s/^Description:[ ]*$// + s/^Status:[ ]*$// s/^Notice:[ ]*$// s/^Files:[ ]*$// s/^Depends-on:[ ]*$// @@ -1281,6 +1293,15 @@ func_get_description () sed -n -e "/^Description$sed_extract_prog" < "$lookedup_file" } +# func_get_status module +# Input: +# - local_gnulib_dir from --local-dir +func_get_status () +{ + func_lookup_file "modules/$1" + sed -n -e "/^Status$sed_extract_prog" < "$lookedup_file" +} + # func_get_notice module # Input: # - local_gnulib_dir from --local-dir @@ -1507,6 +1528,8 @@ func_acceptable () # - local_gnulib_dir from --local-dir # - modules list of specified modules # - inctests true if tests should be included, blank otherwise +# - incobsolete true if obsolete modules among dependencies should be +# included, blank otherwise # - avoidlist list of modules to avoid # - tmp pathname of a temporary directory # Output: @@ -1535,7 +1558,12 @@ func_modules_transitive_closure () if test -n "$duplicated_deps"; then echo "warning: module $module has duplicated dependencies: "`echo $duplicated_deps` 1>&2 fi - func_append inmodules " $deps" + for dep in $deps; do + if test -n "$incobsolete" \ + || { status=`func_get_status $dep`; test "$status" != obsolete; }; then + func_append inmodules " $dep" + fi + done if test -n "$inctests"; then testsmodule=`func_get_tests_module $module` if test -n "$testsmodule"; then @@ -2012,7 +2040,7 @@ func_emit_tests_Makefile_am () # "AM_GNU_GETTEXT used but SUBDIRS not defined" echo "SUBDIRS =" echo "TESTS =" - echo "TESTS_ENVIRONMENT = EXEEXT=\$(EXEEXT)" + echo "TESTS_ENVIRONMENT =" echo "noinst_PROGRAMS =" if ! $for_test; then echo "check_PROGRAMS =" @@ -2227,6 +2255,7 @@ func_emit_initmacro_done () # - testsbase directory relative to destdir where to place unit test code # - auxdir directory relative to destdir where to place build aux files # - inctests true if --with-tests was given, blank otherwise +# - incobsolete true if --with-obsolete was given, blank otherwise # - avoidlist list of modules to avoid, from --avoid # - lgpl yes or a number if library's license shall be LGPL, # blank otherwise @@ -2250,6 +2279,7 @@ func_import () # Get the cached settings. cached_local_gnulib_dir= cached_specified_modules= + cached_incobsolete= cached_avoidlist= cached_sourcebase= cached_m4base= @@ -2284,6 +2314,9 @@ func_import () :b s,^.*gl_MODULES([[ ]*\([^])]*\).*$,cached_specified_modules="\1",p } + /gl_WITH_OBSOLETE/ { + s,^.*$,cached_incobsolete=true,p + } /gl_AVOID(/ { s,^.*gl_AVOID([[ ]*\([^])]*\).*$,cached_avoidlist="\1",p } @@ -2378,6 +2411,10 @@ func_import () # Append the cached and the specified module names. So that # "gnulib-tool --import foo" means to add the module foo. specified_modules="$cached_specified_modules $1" + # Included obsolete modules among the dependencies if specified either way. + if test -z "$incobsolete"; then + incobsolete="$cached_incobsolete" + fi # Append the cached and the specified avoidlist. This is probably better # than dropping the cached one when --avoid is specified at least once. avoidlist=`for m in $cached_avoidlist $avoidlist; do echo $m; done | LC_ALL=C sort -u` @@ -2869,6 +2906,9 @@ s,^\(.................................................[^ ]*\) *, if test -n "$inctests"; then func_append actioncmd " --with-tests" fi + if test -n "$incobsolete"; then + func_append actioncmd " --with-obsolete" + fi for module in $avoidlist; do func_append actioncmd " --avoid=$module" done @@ -3154,6 +3194,7 @@ s,//*$,/,' echo "gl_MODULES([" echo "$specified_modules" | sed 's/^/ /g' echo "])" + test -z "$incobsolete" || echo "gl_WITH_OBSOLETE" echo "gl_AVOID([$avoidlist])" echo "gl_SOURCE_BASE([$sourcebase])" echo "gl_M4_BASE([$m4base])" @@ -4265,9 +4306,9 @@ case $mode in for m4base in $m4dirs; do # Perform func_import in a subshell, so that variable values # such as - # local_gnulib_dir, avoidlist, sourcebase, m4base, pobase, - # docbase, testsbase, inctests, libname, lgpl, makefile_name, - # libtool, macro_prefix, po_domain, vc_files + # local_gnulib_dir, incobsolete, avoidlist, sourcebase, m4base, + # pobase, docbase, testsbase, inctests, libname, lgpl, + # makefile_name, libtool, macro_prefix, po_domain, vc_files # don't propagate from one directory to another. (func_import) || func_exit 1 done @@ -4356,6 +4397,16 @@ case $mode in done ;; + extract-status ) + for module + do + func_verify_module + if test -n "$module"; then + func_get_status "$module" + fi + done + ;; + extract-notice ) for module do