changeset 5347:0318c37925dc

Move duplicated code into function func_modules_transitive_closure().
author Bruno Haible <bruno@clisp.org>
date Fri, 15 Oct 2004 15:37:43 +0000
parents 40f5d74050d5
children 6afb021e2fc1
files ChangeLog gnulib-tool
diffstat 2 files changed, 29 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Oct 15 15:32:25 2004 +0000
+++ b/ChangeLog	Fri Oct 15 15:37:43 2004 +0000
@@ -2,8 +2,10 @@
 
 	* gnulib-tool: Untabify. Initialize supplied_libname.
 	(func_usage): More homogenous output.
+	(func_modules_transitive_closure): New function.
 	(func_import): New function, extracted from big case statement. Use
-	func_get_license.
+	func_get_license, func_modules_transitive_closure.
+	(func_create_testdir): Use func_modules_transitive_closure.
 
 2004-10-11  Bruno Haible  <bruno@clisp.org>
 
--- a/gnulib-tool	Fri Oct 15 15:32:25 2004 +0000
+++ b/gnulib-tool	Fri Oct 15 15:37:43 2004 +0000
@@ -22,7 +22,7 @@
 
 progname=$0
 package=gnulib
-cvsdatestamp='$Date: 2004-10-15 15:32:25 $'
+cvsdatestamp='$Date: 2004-10-15 15:37:43 $'
 last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
 version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
 
@@ -357,21 +357,13 @@
   sed -n -e "/^Maintainer$sed_extract_prog" < "$gnulib_dir/modules/$1"
 }
 
-# func_import modules
-# Uses also the variables
-# - destdir         target directory
-# - libname         library name
-# - sourcebase      directory relative to destdir where to place source code
-# - m4base          directory relative to destdir where to place *.m4 macros
-# - lgpl            true if library's license shall be LGPL, blank otherwise
-# - dry_run         true if actions shall only be printed, blank otherwise
-# - supplied_opts   all options passed to gnulib-tool
-func_import ()
+# func_modules_transitive_closure
+# Input:
+# - modules         list of specified modules
+# Output:
+# - modules         list of modules, including dependencies
+func_modules_transitive_closure ()
 {
-  modules="$1"
-  modules=`for m in $modules; do echo $m; done | sort | uniq`
-
-  # Determine final module list.
   while true; do
     xmodules=
     for module in $modules; do
@@ -391,6 +383,24 @@
     fi
     modules="$xmodules"
   done
+}
+
+# func_import modules
+# Uses also the variables
+# - destdir         target directory
+# - libname         library name
+# - sourcebase      directory relative to destdir where to place source code
+# - m4base          directory relative to destdir where to place *.m4 macros
+# - lgpl            true if library's license shall be LGPL, blank otherwise
+# - dry_run         true if actions shall only be printed, blank otherwise
+# - supplied_opts   all options passed to gnulib-tool
+func_import ()
+{
+  modules="$1"
+  modules=`for m in $modules; do echo $m; done | sort | uniq`
+
+  # Determine final module list.
+  func_modules_transitive_closure
   echo "Module list with included dependencies:"
   echo "$modules" | sed -e 's/^/  /'
 
@@ -576,25 +586,7 @@
   modules=`for m in $modules; do echo $m; done | sort | uniq`
 
   # Determine final module list.
-  while true; do
-    xmodules=
-    for module in $modules; do
-      func_verify_module
-      if test -n "$module"; then
-        # Duplicate dependenies are harmless, but Jim wants a warning.
-        duplicated_deps=`func_get_dependencies $module | sort | uniq -d`
-        if test -n "$duplicated_deps"; then
-          echo "warning: module $module has duplicated dependencies: "`echo $duplicated_deps` 1>&2
-        fi
-        xmodules="$xmodules $module "`func_get_dependencies $module`
-      fi
-    done
-    xmodules=`for m in $xmodules; do echo $m; done | sort | uniq`
-    if test "$xmodules" = "$modules"; then
-      break
-    fi
-    modules="$xmodules"
-  done
+  func_modules_transitive_closure
   echo "Module list with included dependencies:"
   echo "$modules" | sed -e 's/^/  /'