[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/5] gnulib-tool: avoid forks with func_get_* functions.
From: |
Ralf Wildenhues |
Subject: |
[PATCH 2/5] gnulib-tool: avoid forks with func_get_* functions. |
Date: |
Sun, 17 Jan 2010 10:50:02 +0100 |
User-agent: |
Mutt/1.5.20 (2009-10-28) |
* gnulib-tool (func_get_description)
(func_get_status, func_get_notice, func_get_applicability)
(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.
Signed-off-by: Ralf Wildenhues <address@hidden>
---
A straight-forward rebase of the old patch.
Cheers,
Ralf
ChangeLog | 17 +++++
gnulib-tool | 199 ++++++++++++++++++++++++++++++++++++++++-------------------
2 files changed, 152 insertions(+), 64 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 9959305..30f6bdb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
2010-01-17 Ralf Wildenhues <address@hidden>
+ gnulib-tool: avoid forks with func_get_* functions.
+ * gnulib-tool (func_get_description)
+ (func_get_status, func_get_notice, func_get_applicability)
+ (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: cache module metainformation.
* gnulib-tool (sed_extract_prog): Match newline before each
header, and rewrite header to a shell variable suffix.
diff --git a/gnulib-tool b/gnulib-tool
index bb040de..8ab1c77 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -1473,45 +1473,52 @@ 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_applicability module
# Input:
# - local_gnulib_dir from --local-dir
-# The expected result (on stdout) is either 'main', or 'tests', or 'all'.
+# Output:
+# - module_applicability
+#
+# The expected result is either 'main', or 'tests', or 'all'.
func_get_applicability ()
{
func_cache_lookup_module "$1"
- eval my_applicability=\$${cachevar}_applicability
- if test -n "$my_applicability"; then
- echo $my_applicability
- else
+ eval module_applicability=\$${cachevar}_applicability
+ if test -z "$module_applicability"; then
# The default is 'main' or 'tests', depending on the module's name.
case $1 in
- *-tests) echo tests;;
- *) echo main;;
+ *-tests) module_applicability=tests;;
+ *) module_applicability=main;;
esac
fi
}
@@ -1519,15 +1526,15 @@ func_get_applicability ()
# 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/00gnulib.m4
- echo m4/gnulib-common.m4
+ eval
"module_files=\"\$${cachevar}_files\"\${nl}m4/00gnulib.m4\${nl}m4/gnulib-common.m4"
case "$autoconf_minversion" in
2.59)
- echo m4/onceonly.m4
+ module_files="$module_files${nl}m4/onceonly.m4"
;;
esac
}
@@ -1582,8 +1589,11 @@ func_filter_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}.
case "$1" in
*-tests)
@@ -1594,44 +1604,53 @@ func_get_dependencies ()
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 $1
+ all_files=$module_files
func_filter_filelist tests_files " " "$all_files" 'tests/' '' '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
;;
*)
@@ -1648,7 +1667,8 @@ func_get_automake_snippet ()
{ eval 'echo "$'${cachevar}'_makefile"'; echo; } \
| sed -e "$sed_combine_lines" \
| sed -n -e "$sed_extract_mentioned_files" | sed -e 's/#.*//'`
- all_files=`func_get_filelist $1`
+ func_get_filelist $1
+ all_files=$module_files
func_filter_filelist lib_files "$nl" "$all_files" 'lib/' '' 'lib/' ''
# Remove $already_mentioned_files from $lib_files.
echo "$lib_files" | LC_ALL=C sort -u > "$tmp"/lib-files
@@ -1656,8 +1676,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
@@ -1670,13 +1691,14 @@ 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) ;;
*)
func_filter_filelist extra_files "$nl" "$extra_files" '' '.c' '' ''
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
@@ -1684,15 +1706,17 @@ func_get_automake_snippet ()
func_filter_filelist buildaux_files "$nl" "$all_files" 'build-aux/' ''
'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/.
func_filter_filelist top_files "$nl" "$all_files" 'top/' '' '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
@@ -1701,54 +1725,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
}
@@ -1795,7 +1830,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
@@ -1803,12 +1839,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
@@ -1846,7 +1883,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) ;;
@@ -1877,7 +1915,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/^/ /'
@@ -1899,8 +1938,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`
@@ -2100,7 +2139,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" \
@@ -2123,7 +2163,8 @@ func_emit_lib_Makefile_am ()
fi
rm -f "$tmp"/amsnippet
# 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
@@ -2356,7 +2397,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" \
@@ -2379,7 +2421,8 @@ func_emit_tests_Makefile_am ()
fi
rm -f "$tmp"/amsnippet
# 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
@@ -2894,7 +2937,8 @@ func_import ()
echo "$final_modules" | LC_ALL=C sort -u > "$tmp"/final-modules
testsrelated_modules=`func_reset_sigpipe
for module in $main_modules; do
- if test \`func_get_applicability $module\` = main;
then
+ func_get_applicability $module
+ if test "$module_applicability" = main; then
echo $module
fi
done \
@@ -2914,7 +2958,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
# Test whether some file in $all_files lies in lib/.
for f in $all_files; do
case $f in
@@ -2938,7 +2983,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') ;;
@@ -3621,6 +3667,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/^/ /'
@@ -3654,7 +3701,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"
@@ -3674,7 +3722,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" \
@@ -3884,7 +3933,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
@@ -3904,6 +3954,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
@@ -3972,7 +4023,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
@@ -3981,7 +4033,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') ;;
@@ -4169,6 +4222,7 @@ func_create_testdir ()
;;
*)
func_get_autoconf_early_snippet "$module"
+ echo "$module_config_early"
;;
esac
fi
@@ -4210,7 +4264,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
@@ -4220,7 +4275,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
@@ -4294,6 +4350,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/'
@@ -4329,7 +4386,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
@@ -4751,6 +4809,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_description "$module"
+ echo "$module_desc"
fi
done
;;
@@ -4761,6 +4820,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_status "$module"
+ echo "$module_status"
fi
done
;;
@@ -4771,6 +4831,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_notice "$module"
+ echo "$module_notice"
fi
done
;;
@@ -4781,6 +4842,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_applicability "$module"
+ echo "$module_applicability"
fi
done
;;
@@ -4791,6 +4853,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_filelist "$module"
+ echo "$module_files"
fi
done
;;
@@ -4801,6 +4864,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_dependencies "$module"
+ echo "$module_deps"
fi
done
;;
@@ -4811,6 +4875,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_autoconf_snippet "$module"
+ echo "$module_config"
fi
done
;;
@@ -4821,6 +4886,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_automake_snippet "$module"
+ echo "$module_makefile"
fi
done
;;
@@ -4831,6 +4897,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_include_directive "$module"
+ echo "$module_include"
fi
done
;;
@@ -4841,6 +4908,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_link_directive "$module"
+ echo "$module_link"
fi
done
;;
@@ -4851,6 +4919,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_license "$module"
+ echo "$module_license"
fi
done
;;
@@ -4861,6 +4930,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_maintainer "$module"
+ echo "$module_maint"
fi
done
;;
@@ -4871,6 +4941,7 @@ case $mode in
func_verify_module
if test -n "$module"; then
func_get_tests_module "$module"
+ echo "$module_tests"
fi
done
;;
--
1.6.5.1.31.gad12b
- [PATCH 0/5] speed up gnulib-tool some more, Ralf Wildenhues, 2010/01/17
- [PATCH 1/5] gnulib-tool: cache module metainformation., Ralf Wildenhues, 2010/01/17
- [PATCH 2/5] gnulib-tool: avoid forks with func_get_* functions.,
Ralf Wildenhues <=
- [PATCH 3/5] gnulib-tool: small sed optimization., Ralf Wildenhues, 2010/01/17
- [PATCH 4/5] Efficient license compatibility checks with --test/--create-testdir., Ralf Wildenhues, 2010/01/17
- [PATCH 5/5] Drop self-dependencies in modules/unistdio/*., Ralf Wildenhues, 2010/01/17
- Re: [PATCH 0/5] speed up gnulib-tool some more, Bruno Haible, 2010/01/17