X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=gnulib-tool;h=b7422b3074a0bef2f0953d0d4edc6293226b03d5;hb=0f5a4162a9a8361be7e1c63b8e438002bfdee945;hp=2235cf9ca77329d4a2da474ea45d59428a12cdb8;hpb=7c102f16b7184f1da0f540e6b20d1a4eb7bc686f;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index 2235cf9ca..b7422b307 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright (C) 2002-2011 Free Software Foundation, Inc. +# Copyright (C) 2002-2012 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -164,11 +164,15 @@ Operation modes: --update update the current package, restore files omitted from version control --create-testdir create a scratch package with the given modules + (pass --with-tests to include the unit tests) --create-megatestdir create a mega scratch package with the given modules one by one and all together + (pass --with-tests to include the unit tests) --test test the combination of the given modules + (pass --with-tests to include the unit tests) (recommended to use CC=\"gcc -Wall\" here) --megatest test the given modules one by one and all together + (pass --with-tests to include the unit tests) (recommended to use CC=\"gcc -Wall\" here) --extract-description extract the description --extract-comment extract the comment @@ -186,6 +190,8 @@ Operation modes: --extract-maintainer report the maintainer(s) inside gnulib --extract-tests-module report the unit test module, if it exists --copy-file copy a file that is not part of any module + --help Show this help text. + --version Show version and authorship information. General options: @@ -348,10 +354,22 @@ func_emit_copyright_notice () q }' < "$self_abspathname" echo "#" - echo "# This file is free software, distributed under the terms of the GNU" - echo "# General Public License. As a special exception to the GNU General" - echo "# Public License, this file may be distributed as part of a program" - echo "# that contains a configuration script generated by Autoconf, under" + echo "# This file is free software; you can redistribute it and/or modify" + echo "# it under the terms of the GNU General Public License as published by" + echo "# the Free Software Foundation; either version 3 of the License, or" + echo "# (at your option) any later version." + echo "#" + echo "# This file is distributed in the hope that it will be useful," + echo "# but WITHOUT ANY WARRANTY; without even the implied warranty of" + echo "# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" + echo "# GNU General Public License for more details." + echo "#" + echo "# You should have received a copy of the GNU General Public License" + echo "# along with this file. If not, see ." + echo "#" + echo "# As a special exception to the GNU General Public License," + echo "# this file may be distributed as part of a program that" + echo "# contains a configuration script generated by Autoconf, under" echo "# the same distribution terms as the rest of that program." echo "#" echo "# Generated by gnulib-tool." @@ -443,7 +461,7 @@ func_gnulib_dir () * ) self_abspathname=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`/"$linkval" ;; esac done - gnulib_dir=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'` + gnulib_dir=/usr/share/gnulib } # func_tmpdir @@ -2363,31 +2381,50 @@ func_get_link_directive () fi } -# func_get_license module +# func_get_license_raw module # Input: # - local_gnulib_dir from --local-dir # - modcache true or false, from --cache-modules/--no-cache-modules -func_get_license () +func_get_license_raw () { - { - if ! $modcache; then - func_lookup_file "modules/$1" - sed -n -e "/^License$sed_extract_prog" < "$lookedup_file" + if ! $modcache; then + func_lookup_file "modules/$1" + sed -n -e "/^License$sed_extract_prog" < "$lookedup_file" + else + func_cache_lookup_module "$1" + # Output the field's value, including the final newline (if any). + if $have_associative; then + if eval 'test -n "${modcache_license[$1]+set}"'; then + eval 'echo "${modcache_license[$1]}"' + fi else - func_cache_lookup_module "$1" - # Output the field's value, including the final newline (if any). - if $have_associative; then - if eval 'test -n "${modcache_license[$1]+set}"'; then - eval 'echo "${modcache_license[$1]}"' - fi - else - eval "field_set=\"\$${cachevar}_license_set\"" - if test -n "$field_set"; then - eval "field_value=\"\$${cachevar}_license\"" - echo "${field_value}" - fi + eval "field_set=\"\$${cachevar}_license_set\"" + if test -n "$field_set"; then + eval "field_value=\"\$${cachevar}_license\"" + echo "${field_value}" fi fi + fi +} + +# func_get_license module +# Input: +# - local_gnulib_dir from --local-dir +# - modcache true or false, from --cache-modules/--no-cache-modules +func_get_license () +{ + # Warn if the License field is missing. + case "$1" in + *-tests ) ;; + * ) + license=`func_get_license_raw "$1"` + if test -z "$license"; then + func_warning "module $1 lacks a License" + fi + ;; + esac + { + func_get_license_raw "$1" # The default is GPL. echo "GPL" } | sed -e 's,^ *$,,' | sed -e 1q @@ -2718,7 +2755,7 @@ func_modules_transitive_closure () ;; esac done - if $inc; then + if $inc && func_acceptable "$dep"; then func_append inmodules " $dep" if test "$cond_dependencies" = true; then escaped_dep=`echo "$dep" | sed -e "$sed_escape_dependency"` @@ -3114,7 +3151,7 @@ func_add_file () || { test -n "$lsymbolic" \ && test "$lookedup_file" = "$local_gnulib_dir/$f"; }; } \ && test -z "$lookedup_tmp" \ - && cmp "$lookedup_file" "$tmpfile" > /dev/null; then + && cmp -s "$lookedup_file" "$tmpfile"; then func_ln_if_changed "$lookedup_file" "$destdir/$g" else mv -f "$tmpfile" "$destdir/${g}" || func_fatal_error "failed" @@ -3143,7 +3180,7 @@ func_add_file () # - already_present nonempty if the file should already exist, empty otherwise func_update_file () { - if cmp "$destdir/$g" "$tmpfile" > /dev/null; then + if cmp -s "$destdir/$g" "$tmpfile"; then : # The file has not changed. else # Replace the file. @@ -3158,7 +3195,7 @@ func_update_file () || { test -n "$lsymbolic" \ && test "$lookedup_file" = "$local_gnulib_dir/$f"; }; } \ && test -z "$lookedup_tmp" \ - && cmp "$lookedup_file" "$tmpfile" > /dev/null; then + && cmp -s "$lookedup_file" "$tmpfile"; then func_ln_if_changed "$lookedup_file" "$destdir/$g" else mv -f "$tmpfile" "$destdir/${g}" || func_fatal_error "failed" @@ -3311,8 +3348,12 @@ func_emit_lib_Makefile_am () echo "noinst_HEADERS =" echo "noinst_LIBRARIES =" echo "noinst_LTLIBRARIES =" - # Automake versions < 1.9b create an empty pkgdatadir at installation time - # if you specify pkgdata_DATA to empty. This is a workaround. + # Automake versions < 1.11.4 create an empty pkgdatadir at + # installation time if you specify pkgdata_DATA to empty. + # See automake bugs #10997 and #11030: + # * http://debbugs.gnu.org/10997 + # * http://debbugs.gnu.org/11030 + # So we need this workaround. if grep '^pkgdata_DATA *+=' "$tmp"/allsnippets > /dev/null; then echo "pkgdata_DATA =" fi @@ -3632,8 +3673,12 @@ func_emit_tests_Makefile_am () echo "check_LIBRARIES = libtests.a" fi fi - # Automake versions < 1.9b create an empty pkgdatadir at installation time - # if you specify pkgdata_DATA to empty. This is a workaround. + # Automake versions < 1.11.4 create an empty pkgdatadir at + # installation time if you specify pkgdata_DATA to empty. + # See automake bugs #10997 and #11030: + # * http://debbugs.gnu.org/10997 + # * http://debbugs.gnu.org/11030 + # So we need this workaround. if grep '^pkgdata_DATA *+=' "$tmp"/main_snippets "$tmp"/longrunning_snippets > /dev/null; then echo "pkgdata_DATA =" fi @@ -3840,6 +3885,8 @@ func_emit_initmacro_done () # - local_gnulib_dir from --local-dir # - modcache true or false, from --cache-modules/--no-cache-modules # - sed_replace_build_aux sed expression that replaces reference to build-aux +# - sed_replace_include_guard_prefix +# sed expression for resolving ${gl_include_guard_prefix} # - module the module name # - toplevel true or false. 'false' means a subordinate use of # gnulib-tool. @@ -3862,6 +3909,7 @@ func_emit_autoconf_snippet () func_get_autoconf_snippet "$module" \ | sed -e '/^$/d;' -e "s/^/$indentation/" \ -e "$sed_replace_build_aux" \ + -e "$sed_replace_include_guard_prefix" \ | { if $disable_libtool; then sed -e 's/\$gl_cond_libtool/false/g' \ -e 's/gl_libdeps/gltests_libdeps/g' \ @@ -3891,6 +3939,8 @@ func_emit_autoconf_snippet () # - local_gnulib_dir from --local-dir # - modcache true or false, from --cache-modules/--no-cache-modules # - sed_replace_build_aux sed expression that replaces reference to build-aux +# - sed_replace_include_guard_prefix +# sed expression for resolving ${gl_include_guard_prefix} # - modules the list of modules. # - verifier one of func_verify_module, func_verify_nontests_module, # func_verify_tests_module. It selects the subset of @@ -3909,6 +3959,7 @@ func_emit_autoconf_snippets () disable_libtool="$4" disable_gettext="$5" if test "$cond_dependencies" = true; then + for m in $modules; do echo $m; done | LC_ALL=C sort -u > "$tmp"/modules # Emit the autoconf code for the unconditional modules. for module in $1; do eval $verifier @@ -3945,12 +3996,14 @@ func_emit_autoconf_snippets () func_emit_autoconf_snippet " " echo " $shellvar=true" deps=`func_get_dependencies $module | sed -e "$sed_dependencies_without_conditions"` + # Intersect $deps with the modules list $1. + deps=`for m in $deps; do echo $m; done | LC_ALL=C sort -u | LC_ALL=C join - "$tmp"/modules` for dep in $deps; do if func_cond_module_p "$dep"; then func_module_shellfunc_name "$dep" func_cond_module_condition "$module" "$dep" if test "$condition" != true; then - echo ' if $condition; then' + echo " if $condition; then" echo " $shellfunc" echo ' fi' else @@ -3975,6 +4028,8 @@ func_emit_autoconf_snippets () : else deps=`func_get_dependencies $module | sed -e "$sed_dependencies_without_conditions"` + # Intersect $deps with the modules list $1. + deps=`for m in $deps; do echo $m; done | LC_ALL=C sort -u | LC_ALL=C join - "$tmp"/modules` for dep in $deps; do if func_cond_module_p "$dep"; then func_module_shellfunc_name "$dep" @@ -4854,7 +4909,7 @@ s,//*$,/,' modules="$main_modules" func_emit_lib_Makefile_am > "$tmpfile" if test -f "$destdir"/$sourcebase/$makefile_am; then - if cmp "$destdir"/$sourcebase/$makefile_am "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$sourcebase/$makefile_am "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -4885,7 +4940,7 @@ s,//*$,/,' func_lookup_file build-aux/po/$file cat "$lookedup_file" > "$tmpfile" if test -f "$destdir"/$pobase/$file; then - if cmp "$destdir"/$pobase/$file "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$pobase/$file "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -4912,7 +4967,7 @@ s,//*$,/,' func_dest_tmpfilename $pobase/Makevars func_emit_po_Makevars > "$tmpfile" if test -f "$destdir"/$pobase/Makevars; then - if cmp "$destdir"/$pobase/Makevars "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$pobase/Makevars "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -4938,7 +4993,7 @@ s,//*$,/,' func_dest_tmpfilename $pobase/POTFILES.in func_emit_po_POTFILES_in > "$tmpfile" if test -f "$destdir"/$pobase/POTFILES.in; then - if cmp "$destdir"/$pobase/POTFILES.in "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$pobase/POTFILES.in "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -4987,7 +5042,7 @@ s,//*$,/,' } ) > "$tmpfile" if test -f "$destdir"/$pobase/LINGUAS; then - if cmp "$destdir"/$pobase/LINGUAS "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$pobase/LINGUAS "$tmpfile"; then rm -f "$tmpfile" else echo "Updating $pobase/LINGUAS (backup in $pobase/LINGUAS~)" @@ -5076,7 +5131,7 @@ s,//*$,/,' fi ) > "$tmpfile" if test -f "$destdir"/$m4base/gnulib-cache.m4; then - if cmp "$destdir"/$m4base/gnulib-cache.m4 "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$m4base/gnulib-cache.m4 "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -5126,7 +5181,7 @@ s,//*$,/,' echo " m4_pattern_allow([^gl_ES\$])dnl a valid locale name" echo " m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" echo " m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable" - echo " AC_REQUIRE([AC_PROG_RANLIB])" + echo " AC_REQUIRE([gl_PROG_AR_RANLIB])" if test -n "$uses_subdirs"; then echo " AC_REQUIRE([AM_PROG_CC_C_O])" fi @@ -5215,7 +5270,7 @@ s,//*$,/,' echo "])" ) > "$tmpfile" if test -f "$destdir"/$m4base/gnulib-comp.m4; then - if cmp "$destdir"/$m4base/gnulib-comp.m4 "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$m4base/gnulib-comp.m4 "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -5250,7 +5305,7 @@ s,//*$,/,' modules="$testsrelated_modules" func_emit_tests_Makefile_am "${macro_prefix}tests_WITNESS" > "$tmpfile" if test -f "$destdir"/$testsbase/$makefile_am; then - if cmp "$destdir"/$testsbase/$makefile_am "$tmpfile" > /dev/null; then + if cmp -s "$destdir"/$testsbase/$makefile_am "$tmpfile"; then rm -f "$tmpfile" else if $doit; then @@ -5448,7 +5503,16 @@ s,//*$,/,' echo " - mention \"${val}\" in ${var} in ${dir}Makefile.am," fi done - echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after AC_PROG_CC," + if grep '^ *AC_PROG_CC_STDC' "$configure_ac" > /dev/null; then + position_early_after=AC_PROG_CC_STDC + else + if grep '^ *AC_PROG_CC_C99' "$configure_ac" > /dev/null; then + position_early_after=AC_PROG_CC_C99 + else + position_early_after=AC_PROG_CC + fi + fi + echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after $position_early_after," echo " - invoke ${macro_prefix}_INIT in $configure_ac." } @@ -5504,7 +5568,7 @@ func_create_testdir () # its dependencies. saved_inctests="$inctests" # When computing transitive closures, don't consider $module to depend on - # $module-tests. Need this becauses tests are implicitly GPL and may depend + # $module-tests. Need this because tests are implicitly GPL and may depend # on GPL modules - therefore we don't want a warning in this case. inctests="" for requested_module in $specified_modules; do @@ -5735,7 +5799,7 @@ func_create_testdir () echo "AC_PROG_CC" echo "AC_PROG_INSTALL" echo "AC_PROG_MAKE_SET" - echo "AC_PROG_RANLIB" + echo "gl_PROG_AR_RANLIB" echo if test -n "$uses_subdirs"; then echo "AM_PROG_CC_C_O" @@ -5850,7 +5914,7 @@ func_create_testdir () echo "m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" echo "m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable" echo - echo "AC_PROG_RANLIB" + echo "gl_PROG_AR_RANLIB" echo if test -n "$any_uses_subdirs"; then echo "AM_PROG_CC_C_O" @@ -6486,6 +6550,9 @@ s/\([.*$]\)/[\1]/g' ;; extract-dependencies ) + if test -n "$avoidlist"; then + func_fatal_error "cannot combine --avoid and --extract-dependencies" + fi for module do func_verify_module