* gnulib-tool (func_modules_transitive_closure): Rewrite to not check already-checked module names again. Index: gnulib-tool =================================================================== RCS file: /cvsroot/gnulib/gnulib/gnulib-tool,v retrieving revision 1.160 diff -u -r1.160 gnulib-tool --- gnulib-tool 13 Sep 2006 15:00:47 -0000 1.160 +++ gnulib-tool 14 Sep 2006 22:52:08 -0000 @@ -928,45 +929,41 @@ # - modules list of modules, including dependencies func_modules_transitive_closure () { - while true; do - xmodules= - for module in $modules; do + oldmodules= # modules (valid or not) that have been checked + newmodules=$modules # modules we still have to check + modules= # accepted modules + while test -n "$newmodules"; do + oldmodules=`for m in $oldmodules $newmodules; do echo $m; done | LC_ALL=C sort -u` + for module in : $newmodules; do + if test "$module" = :; then + newmodules= + continue + fi func_verify_module if test -n "$module"; then - # Duplicate dependencies are harmless, but Jim wants a warning. - duplicated_deps=`func_get_dependencies $module | LC_ALL=C sort | LC_ALL=C uniq -d` - if test -n "$duplicated_deps"; then - echo "warning: module $module has duplicated dependencies: "`echo $duplicated_deps` 1>&2 - fi if func_acceptable $module; then - xmodules="$xmodules $module" - for depmodule in `func_get_dependencies $module`; do - if func_acceptable $depmodule; then - xmodules="$xmodules $depmodule" - fi - done + modules="$modules $module" + deps=`func_get_dependencies $module` + # 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 + echo "warning: module $module has duplicated dependencies: "`echo $duplicated_deps` 1>&2 + fi + newmodules="$newmodules $deps" if test -n "$inctests"; then testsmodule=`func_get_tests_module $module` if test -n "$testsmodule"; then - if func_acceptable $testsmodule; then - xmodules="$xmodules $testsmodule" - for depmodule in `func_get_dependencies $testsmodule`; do - if func_acceptable $depmodule; then - xmodules="$xmodules $depmodule" - fi - done - fi + newmodules="$newmodules $testsmodule" fi fi fi fi done - xmodules=`for m in $xmodules; do echo $m; done | LC_ALL=C sort | LC_ALL=C uniq` - if test "$xmodules" = "$modules"; then - break - fi - modules="$xmodules" + for m in $newmodules; do echo $m; done | LC_ALL=C sort -u >"$tmp"/new-modules + newmodules=`echo "$oldmodules" | LC_ALL=C join -v 2 - "$tmp"/new-modules` done + modules=`for m in $modules; do echo $m; done | LC_ALL=C sort -u` + rm -f "$tmp"/new-modules } # func_modules_add_dummy