* gnulib-tool (func_get_description) (func_get_status, func_get_notice, func_get_filelist) (func_get_dependencies, func_get_autoconf_early_snippet) (func_get_autoconf_snippet, func_get_automake_snippet) (func_get_include_directive, func_get_link_directive) (func_get_license, func_get_maintainer, func_get_tests_module): Change semantics so that each function sets an output variable instead of printing the result to stdout. Adjust callers. (func_modules_transitive_closure, func_modules_add_dummy) (func_modules_notice, func_modules_to_filelist) (func_emit_lib_Makefile_am, func_emit_tests_Makefile_am) (func_import, func_note_Makefile_am_edit, func_done_dir) (func_create_testdir, func_create_megatestdir): Likewise, adjust callers of func_get_* functions. --- gnulib-tool | 184 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 128 insertions(+), 56 deletions(-)
diff --git a/gnulib-tool b/gnulib-tool index d5eb9df..c172d6c 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1365,41 +1365,48 @@ func_cache_lookup_module () # func_get_description module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_desc func_get_description () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_desc\"" + eval "module_desc=\"\$${cachevar}_desc\"" } # func_get_status module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_status func_get_status () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_status\"" + eval "module_status=\"\$${cachevar}_status\"" } # func_get_notice module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_notice func_get_notice () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_notice\"" + eval "module_notice=\"\$${cachevar}_notice\"" } # func_get_filelist module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_files func_get_filelist () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_files\"" - echo m4/gnulib-common.m4 + eval "module_files=\"\$${cachevar}_files\"\${nl}m4/gnulib-common.m4" case "$autoconf_minversion" in 2.59) - echo m4/onceonly.m4 + module_files="$module_files${nl}m4/onceonly.m4" ;; esac } @@ -1407,45 +1414,59 @@ func_get_filelist () # func_get_dependencies module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_deps func_get_dependencies () { + module_deps= # ${module}-tests always implicitly depends on ${module}. - echo "$1" | sed -n -e 's/-tests$//p' + case $1 in + *-tests*) + module_deps=`echo "$1" | sed -n -e 's/-tests$//p'` ;; + esac # Then the explicit dependencies listed in the module description. func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_deps\"" + eval "module_deps=\"\$module_deps\$nl\$${cachevar}_deps\"" } # func_get_autoconf_early_snippet module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_config_early func_get_autoconf_early_snippet () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_config_early\"" + eval "module_config_early=\"\$${cachevar}_config_early\"" } # func_get_autoconf_snippet module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_config func_get_autoconf_snippet () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_config\"" + eval "module_config=\"\$${cachevar}_config\"" } # func_get_automake_snippet module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_makefile func_get_automake_snippet () { - func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_makefile\"" + mymodule=$1 + func_cache_lookup_module "$mymodule" + eval "module_makefile=\"\$${cachevar}_makefile\"" case "$1" in *-tests) # *-tests module live in tests/, not lib/. # Synthesize an EXTRA_DIST augmentation. - all_files=`func_get_filelist $1` + func_get_filelist "$mymodule" + all_files=$module_files tests_files=`for f in $all_files; do \ case $f in \ tests/*) echo $f ;; \ @@ -1453,8 +1474,9 @@ func_get_automake_snippet () done | sed -e 's,^tests/,,'` extra_files="$tests_files" if test -n "$extra_files"; then - echo "EXTRA_DIST +=" $extra_files - echo + set x $extra_files + shift + func_append module_makefile "${nl}EXTRA_DIST += $*" fi ;; *) @@ -1471,7 +1493,8 @@ func_get_automake_snippet () eval "echo \\"\\$${cachevar}_makefile\\"" \ | sed -e "$sed_combine_lines" \ | sed -n -e "$sed_extract_mentioned_files" | sed -e 's/#.*//'` - all_files=`func_get_filelist $1` + func_get_filelist "$mymodule" + all_files=$module_files lib_files=`for f in $all_files; do \ case $f in \ lib/*) echo $f ;; \ @@ -1483,8 +1506,9 @@ func_get_automake_snippet () for f in $already_mentioned_files; do echo $f; done \ | LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/lib-files` if test -n "$extra_files"; then - echo "EXTRA_DIST +=" $extra_files - echo + set x $extra_files + shift + func_append module_makefile "${nl}EXTRA_DIST += $*" fi # Synthesize also an EXTRA_lib_SOURCES augmentation. # This is necessary so that automake can generate the right list of @@ -1497,14 +1521,15 @@ func_get_automake_snippet () # If some .c file exists and is not used with AC_LIBOBJ - for example, # a .c file is preprocessed into another .c file for BUILT_SOURCES -, # automake will generate a useless dependency; this is harmless. - case "$1" in + case "$mymodule" in relocatable-prog-wrapper) ;; *) sed_extract_c_files='/\.c$/p' extra_files=`echo "$extra_files" | sed -n -e "$sed_extract_c_files"` if test -n "$extra_files"; then - echo "EXTRA_lib_SOURCES +=" $extra_files - echo + set x $extra_files + shift + func_append module_makefile "${nl}EXTRA_lib_SOURCES += $*" fi ;; esac @@ -1516,8 +1541,9 @@ func_get_automake_snippet () done | sed -e 's,^build-aux/,,'` if test -n "$buildaux_files"; then sed_prepend_auxdir='s,^,$(top_srcdir)/'"$auxdir"'/,' - echo "EXTRA_DIST += "`echo "$buildaux_files" | sed -e "$sed_prepend_auxdir"` - echo + set x `echo "$buildaux_files" | sed -e "$sed_prepend_auxdir"` + shift + func_append module_makefile "${nl}EXTRA_DIST += $*" fi # Synthesize an EXTRA_DIST augmentation also for the files from top/. top_files=`for f in $all_files; do \ @@ -1527,8 +1553,9 @@ func_get_automake_snippet () done | sed -e 's,^top/,,'` if test -n "$top_files"; then sed_prepend_topdir='s,^,$(top_srcdir)/,' - echo "EXTRA_DIST += "`echo "$top_files" | sed -e "$sed_prepend_topdir"` - echo + set x `echo "$top_files" | sed -e "$sed_prepend_topdir"` + shift + func_append module_makefile "${nl}EXTRA_DIST += $*" fi ;; esac @@ -1537,54 +1564,65 @@ func_get_automake_snippet () # func_get_include_directive module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_include func_get_include_directive () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_include\"" | \ - sed -e 's/^\(["<]\)/#include \1/' + module_include=`eval "echo \\"\\$${cachevar}_include\\"" | \ + sed -e 's/^\(["<]\)/#include \1/'` } # func_get_link_directive module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_link func_get_link_directive () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_link\"" + eval "module_link=\"\$${cachevar}_link\"" } # func_get_license module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_license func_get_license () { func_cache_lookup_module "$1" - { - eval "echo \"\$${cachevar}_license\"" - # The default is GPL. - echo "GPL" - } | sed -e 's,^ *$,,' | sed -e 1q + eval "module_license=\"\$${cachevar}_license\"" + # The default is GPL. + case $module_license in + *[!\ \ ]*) ;; + *) module_license=GPL ;; + esac } # func_get_maintainer module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_maint func_get_maintainer () { func_cache_lookup_module "$1" - eval "echo \"\$${cachevar}_maint\"" + eval "module_maint=\"\$${cachevar}_maint\"" } # func_get_tests_module module # Input: # - local_gnulib_dir from --local-dir +# Output: +# - module_tests func_get_tests_module () { # The naming convention for tests modules is hardwired: ${module}-tests. if test -f "$gnulib_dir/modules/$1"-tests \ || { test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules" \ && test -f "$local_gnulib_dir/modules/$1"-tests; }; then - echo "$1"-tests + module_tests=$1-tests fi } @@ -1631,7 +1669,8 @@ func_modules_transitive_closure () if test -n "$module"; then if func_acceptable $module; then func_append outmodules " $module" - deps=`func_get_dependencies $module` + func_get_dependencies $module + deps=$module_deps # Duplicate dependencies are harmless, but Jim wants a warning. duplicated_deps=`echo "$deps" | LC_ALL=C sort | LC_ALL=C uniq -d` if test -n "$duplicated_deps"; then @@ -1639,12 +1678,13 @@ func_modules_transitive_closure () fi for dep in $deps; do if test -n "$incobsolete" \ - || { status=`func_get_status $dep`; test "$status" != obsolete; }; then + || { func_get_status $dep; test "$module_status" != obsolete; }; then func_append inmodules " $dep" fi done if test -n "$inctests"; then - testsmodule=`func_get_tests_module $module` + func_get_tests_module $module + testsmodule=$module_tests if test -n "$testsmodule"; then func_append inmodules " $testsmodule" fi @@ -1681,7 +1721,8 @@ ba func_verify_nontests_module if test -n "$module"; then # Extract the value of "lib_SOURCES += ...". - for file in `func_get_automake_snippet "$module" | sed -e "$sed_remove_backslash_newline" | sed -n -e 's,^lib_SOURCES[ ]*+=\([^#]*\).*$,\1,p'`; do + func_get_automake_snippet "$module" + for file in `echo "$module_makefile" | sed -e "$sed_remove_backslash_newline" | sed -n -e 's,^lib_SOURCES[ ]*+=\([^#]*\).*$,\1,p'`; do # Ignore .h files since they are not compiled. case "$file" in *.h) ;; @@ -1709,7 +1750,8 @@ func_modules_notice () for module in $modules; do func_verify_module if test -n "$module"; then - msg=`func_get_notice $module` + func_get_notice $module + msg=$module_notice if test -n "$msg"; then echo "Notice from module $module:" echo "$msg" | sed -e 's/^/ /' @@ -1731,8 +1773,8 @@ func_modules_to_filelist () for module in $modules; do func_verify_module if test -n "$module"; then - fs=`func_get_filelist $module` - func_append files " $fs" + func_get_filelist $module + func_append files " $module_files" fi done files=`for f in $files; do echo $f; done | LC_ALL=C sort -u` @@ -1823,7 +1865,8 @@ func_emit_lib_Makefile_am () func_verify_nontests_module if test -n "$module"; then { - func_get_automake_snippet "$module" | + func_get_automake_snippet "$module" + echo "$module_makefile" | sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \ -e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' \ -e "$sed_eliminate_LDFLAGS" \ @@ -1846,7 +1889,8 @@ func_emit_lib_Makefile_am () fi rm -f amsnippet.tmp # Test whether there are some source files in subdirectories. - for f in `func_get_filelist "$module"`; do + func_get_filelist "$module" + for f in $module_files; do case $f in lib/*/*.c) uses_subdirs=yes ;; esac @@ -2070,7 +2114,8 @@ func_emit_tests_Makefile_am () fi if test -n "$module"; then { - func_get_automake_snippet "$module" | + func_get_automake_snippet "$module" + echo "$module_makefile" | sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \ -e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' \ -e "$sed_eliminate_LDFLAGS" \ @@ -2093,7 +2138,8 @@ func_emit_tests_Makefile_am () fi rm -f amsnippet.tmp # Test whether there are some source files in subdirectories. - for f in `func_get_filelist "$module"`; do + func_get_filelist "$module" + for f in $module_files; do case $f in lib/*/*.c | tests/*/*.c) uses_subdirs=yes ;; esac @@ -2616,7 +2662,8 @@ func_import () for module in $testsrelated_modules; do func_verify_nontests_module if test -n "$module"; then - all_files=`func_get_filelist $module` + func_get_filelist $module + all_files=$module_files lib_files=`for f in $all_files; do \ case $f in \ lib/*) echo $f ;; \ @@ -2640,7 +2687,8 @@ func_import () if test -n "$lgpl"; then license_incompatibilities= for module in $main_modules; do - license=`func_get_license $module` + func_get_license $module + license=$module_license case $license in 'GPLed build tool') ;; 'public domain' | 'unlimited' | 'unmodifiable license text') ;; @@ -3360,6 +3408,7 @@ s,//*$,/,' func_verify_module if test -n "$module"; then func_get_autoconf_early_snippet "$module" + echo "$module_config_early" fi done \ | sed -e '/^$/d;' -e 's/^/ /' @@ -3393,7 +3442,8 @@ s,//*$,/,' for module in $main_modules; do func_verify_module if test -n "$module"; then - func_get_autoconf_snippet "$module" \ + func_get_autoconf_snippet "$module" + echo "$module_config" \ | sed -e '/^$/d;' -e 's/^/ /' \ -e 's/AM_GNU_GETTEXT(\[external\])/dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac./' \ -e "$sed_replace_build_aux" @@ -3413,7 +3463,8 @@ s,//*$,/,' for module in $testsrelated_modules; do func_verify_module if test -n "$module"; then - func_get_autoconf_snippet "$module" \ + func_get_autoconf_snippet "$module" + echo "$module_config" \ | sed -e '/^$/d;' -e 's/^/ /' \ -e 's/AM_GNU_GETTEXT(\[external\])/dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac./' \ -e "$sed_replace_build_aux" \ @@ -3623,7 +3674,8 @@ s,//*$,/,' # then the #include "..." directives without #ifs, sorted for convenience, # then the #include directives that are surrounded by #ifs. Not sorted. for module in `LC_ALL=C join "$tmp"/modules1 "$tmp"/modules2`; do - include_directive=`func_get_include_directive "$module"` + func_get_include_directive "$module" + include_directive=$module_include case "$nl$include_directive" in *"$nl#if"*) echo "$include_directive" 1>&5 @@ -3643,6 +3695,7 @@ s,//*$,/,' for module in $main_modules; do func_get_link_directive "$module" + echo "$module_link" done \ | LC_ALL=C sort -u | sed -e '/^$/d' -e 's/^/ /' > "$tmp"/link if test `wc -l < "$tmp"/link` != 0; then @@ -3712,7 +3765,8 @@ func_create_testdir () # 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"` + func_get_license "$requested_module" + requested_license=$module_license if test "$requested_license" != GPL; then # Here we use func_modules_transitive_closure, not just # func_get_dependencies, so that we also detect weird situations like @@ -3721,7 +3775,8 @@ func_create_testdir () modules="$requested_module" func_modules_transitive_closure for module in $modules; do - license=`func_get_license "$module"` + func_get_license "$module" + license=$module_license case "$license" in 'GPLed build tool') ;; 'public domain' | 'unlimited' | 'unmodifiable license text') ;; @@ -3907,6 +3962,7 @@ func_create_testdir () ;; *) func_get_autoconf_early_snippet "$module" + echo "$module_config_early" ;; esac fi @@ -3948,7 +4004,8 @@ func_create_testdir () # These modules are meant to be used only in the top-level directory. ;; *) - func_get_autoconf_snippet "$module" \ + func_get_autoconf_snippet "$module" + echo "$module_config" \ | sed -e "$sed_replace_build_aux" ;; esac @@ -3958,7 +4015,8 @@ func_create_testdir () for module in $modules; do func_verify_tests_module if test -n "$module"; then - func_get_autoconf_snippet "$module" \ + func_get_autoconf_snippet "$module" + echo "$module_config" \ | sed -e "$sed_replace_build_aux" fi done @@ -4035,6 +4093,7 @@ func_create_testdir () func_verify_nontests_module if test -n "$module"; then func_get_autoconf_early_snippet "$module" + echo "$module_config_early" fi done \ | sed -e '/^$/d;' -e 's/AC_REQUIRE(\[\([^()]*\)\])/\1/' @@ -4070,7 +4129,8 @@ func_create_testdir () for module in $modules; do func_verify_nontests_module if test -n "$module"; then - func_get_autoconf_snippet "$module" \ + func_get_autoconf_snippet "$module" + echo "$module_config" \ | sed -e "$sed_replace_build_aux" fi done @@ -4490,6 +4550,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_description "$module" + echo "$module_desc" fi done ;; @@ -4500,6 +4561,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_status "$module" + echo "$module_status" fi done ;; @@ -4510,6 +4572,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_notice "$module" + echo "$module_notice" fi done ;; @@ -4520,6 +4583,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_filelist "$module" + echo "$module_files" fi done ;; @@ -4530,6 +4594,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_dependencies "$module" + echo "$module_deps" fi done ;; @@ -4540,6 +4605,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_autoconf_snippet "$module" + echo "$module_config" fi done ;; @@ -4550,6 +4616,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_automake_snippet "$module" + echo "$module_makefile" fi done ;; @@ -4560,6 +4627,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_include_directive "$module" + echo "$module_include" fi done ;; @@ -4570,6 +4638,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_link_directive "$module" + echo "$module_link" fi done ;; @@ -4580,6 +4649,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_license "$module" + echo "$module_license" fi done ;; @@ -4590,6 +4660,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_maintainer "$module" + echo "$module_maint" fi done ;; @@ -4600,6 +4671,7 @@ case $mode in func_verify_module if test -n "$module"; then func_get_tests_module "$module" + echo "$module_tests" fi done ;; -- 1.6.1.rc3.96.g159c88