X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=gnulib-tool;h=547e29a576489f23fe28aea3191762e8305cca68;hb=765f0950e35710f3c4299062fc60319f018d1779;hp=4c9d863a49ebb7feb18b2a4a6cebace0a9debf7d;hpb=88fe47aa9b6b72ce8e3627ca0c1d818ea1f8d539;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index 4c9d863a4..547e29a57 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright (C) 2002-2006 Free Software Foundation, Inc. +# Copyright (C) 2002-2007 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 @@ -22,7 +22,7 @@ progname=$0 package=gnulib -cvsdatestamp='$Date: 2006-12-11 18:19:59 $' +cvsdatestamp='$Date: 2007-01-21 20:07:09 $' last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'` version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'` nl=' @@ -66,10 +66,13 @@ if test -z "${AUTOPOINT}" || test -n "${GETTEXTPATH}"; then AUTOPOINT="${GETTEXTPATH}autopoint" fi -# GNU sort is needed. Set SORT to its location (not needed if it's called -# 'sort' and already in the PATH). -if test -z "$SORT"; then - SORT=sort +# When using GNU sed, turn off as many GNU extensions as possible, +# to minimize the risk of accidentally using non-portable features. +# However, do this only for gnulib-tool itself, not for the code that +# gnulib-tool generates, since we don't want "sed --posix" to leak +# into makefiles. +if (alias) > /dev/null 2>&1 && echo | sed --posix -e d >/dev/null 2>&1; then + alias sed='sed --posix' fi # func_usage @@ -182,7 +185,7 @@ Written by" "Bruno Haible" "and" "Simon Josefsson" # outputs to stdout a header for a generated file. func_emit_copyright_notice () { - echo "# Copyright (C) 2004-2006 Free Software Foundation, Inc." + echo "# Copyright (C) 2004-2007 Free Software Foundation, Inc." 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" @@ -690,11 +693,14 @@ func_ln_if_changed () s,^dnl .*$,, s, dnl .*$,, /AC_PREREQ/ { - s,^.*AC_PREREQ([[ ]*\([^])]*\).*$,prereqs="$prereqs \1",p + s,^.*AC_PREREQ([[ ]*\([^])]*\).*$,\1,p }' - eval `sed -n -e "$my_sed_traces" < "$configure_ac"` + prereqs=`sed -n -e "$my_sed_traces" < "$configure_ac"` if test -n "$prereqs"; then - autoconf_minversion=`for version in $prereqs; do echo $version; done | $SORT -g -u | tail -1` + autoconf_minversion=` + for version in $prereqs; do echo $version; done | + LC_ALL=C sort -nru | sed 1q + ` fi fi if test -z "$autoconf_minversion"; then @@ -808,12 +814,19 @@ func_all_modules () # Filter out unit test modules; they can be retrieved through # --extract-tests-module if desired. { - (cd "$gnulib_dir/modules" && ls -1) + (cd "$gnulib_dir" && find modules -type f -print | sed -e 's,^modules/,,') if test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules"; then - (cd "$local_gnulib_dir/modules" && ls -1 | sed -e 's,\.diff$,,') + (cd "$local_gnulib_dir" && find modules -type f -print | sed -e 's,^modules/,,' -e 's,\.diff$,,') fi } \ - | sed -e '/^CVS$/d' -e '/^ChangeLog$/d' -e '/^COPYING$/d' -e '/^README$/d' -e '/^TEMPLATE$/d' -e '/^TEMPLATE-TESTS$/d' -e '/~$/d' \ + | sed -e '/^CVS\//d' -e '/\/CVS\//d' \ + -e '/^ChangeLog$/d' -e '/\/ChangeLog$/d' \ + -e '/^COPYING$/d' -e '/\/COPYING$/d' \ + -e '/^README$/d' -e '/\/README$/d' \ + -e '/^TEMPLATE$/d' \ + -e '/^TEMPLATE-TESTS$/d' \ + -e '/^\..*/d' \ + -e '/~$/d' \ | sed -e '/-tests$/d' \ | LC_ALL=C sort -u } @@ -902,6 +915,7 @@ func_get_filelist () { func_lookup_file "modules/$1" sed -n -e "/^Files$sed_extract_prog" < "$lookedup_file" + echo m4/gnulib-common.m4 case "$autoconf_minversion" in 2.59) #echo m4/onceonly.m4 @@ -951,7 +965,7 @@ func_get_automake_snippet () s/\\$/\\/ ta }' - sed_extract_mentioned_files='s/^lib_SOURCES[ ]*+=[ ]*//p' + sed_extract_mentioned_files='s/^lib_SOURCES[ ]*+=[ ]*//p' already_mentioned_files=` \ sed -n -e "/^Makefile\.am$sed_extract_prog" < "$lookedup_file" \ | sed -e "$sed_combine_lines" \ @@ -1007,7 +1021,10 @@ func_get_include_directive () func_get_license () { func_lookup_file "modules/$1" - sed -n -e "/^License$sed_extract_prog" < "$lookedup_file" + { sed -n -e "/^License$sed_extract_prog" < "$lookedup_file" + # The default is GPL. + echo "GPL" + } | sed -e 's,^ *$,,' | sed -e 1q } # func_get_maintainer module @@ -2260,6 +2277,11 @@ func_create_testdir () # Check that the license of every module is consistent with the license of # its dependencies. saved_modules="$modules" + 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 + # on GPL modules - therefore we don't want a warning in this case. + inctests="" for requested_module in $saved_modules; do requested_license=`func_get_license "$requested_module"` if test "$requested_license" != GPL; then @@ -2280,6 +2302,7 @@ func_create_testdir () fi done modules="$saved_modules" + inctests="$saved_inctests" # Subdirectory names. sourcebase=gllib @@ -2501,6 +2524,10 @@ func_create_testdir () echo "AC_PROG_INSTALL" echo "AC_PROG_MAKE_SET" echo + echo "# For autobuild." + echo "AC_CANONICAL_BUILD" + echo "AC_CANONICAL_HOST" + echo echo "m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace" echo "m4_pattern_allow([^gl_ES\$])dnl a valid locale name" echo "m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" @@ -2641,7 +2668,25 @@ func_create_testdir () ${AUTOMAKE} --add-missing --copy || func_exit 1 ) || func_exit 1 fi - if grep '^BUILT_SOURCES *+=' "$testdir/$sourcebase/Makefile.am" > /dev/null; then + # Need to run configure and make once, to create built files that are to be + # distributed (such as getdate.c). + # Extract the value of "CLEANFILES += ...". + cleaned_files=`sed -e "$sed_remove_backslash_newline" < "$testdir/$sourcebase/Makefile.am" \ + | sed -n -e 's,^CLEANFILES[ ]*+=\([^#]*\).*$,\1,p'` + cleaned_files=" "`for file in $cleaned_files; do echo "$file"; done`" " + # Extract the value of "BUILT_SOURCES += ...". Remove variable references + # such $(FOO_H) because they don't refer to distributed files. + sed_remove_make_variables='s,[$]([A-Za-z0-9_]*),,g' + built_sources=`sed -e "$sed_remove_backslash_newline" < "$testdir/$sourcebase/Makefile.am" \ + | sed -n -e 's,^BUILT_SOURCES[ ]*+=\([^#]*\).*$,\1,p' \ + | sed -e "$sed_remove_make_variables"` + distributed_built_sources=`for file in $built_sources; do + case "$cleaned_files" in + *" "$file" "*) ;; + *) echo $file ;; + esac; + done` + if test -n "$distributed_built_sources"; then (cd "$testdir" ./configure || func_exit 1 cd "$sourcebase"