--with-obsolete Include obsolete modules when they occur among the
dependencies. By default, dependencies to obsolete
modules are ignored.
+ --with-c++-tests Include even unit tests for C++ interoperability.
+ --with-longrunning-tests
+ Include even unit tests that are long-runners.
+ --with-privileged-tests
+ Include even unit tests that require root
+ privileges.
+ --with-unportable-tests
+ Include even unit tests that fail on some platforms.
+ --with-all-tests Include all kinds of problematic unit tests.
--avoid=MODULE Avoid including the given MODULE. Useful if you
have code that provides equivalent functionality.
This option can be repeated.
'gl_INIT'. Default is 'gl'.
--po-domain=NAME Specify the prefix of the i18n domain. Usually use
the package name. A suffix '-gnulib' is appended.
- --with-c++-tests Include even unit tests for C++ interoperability.
- --with-longrunning-tests
- Include even unit tests that are long-runners.
- --with-privileged-tests
- Include even unit tests that require root
- privileges.
- --with-unportable-tests
- Include even unit tests that fail on some platforms.
- --with-all-tests Include all kinds of problematic unit tests.
--vc-files Update version control related files.
--no-vc-files Don't update version control related files
(.gitignore and/or .cvsignore).
# func_acceptable module
# tests whether a module is acceptable.
# Input:
-# - inc_cxx_tests true if C++ interoperability tests should be included,
-# blank otherwise
-# - inc_longrunning_tests true if long-runnings tests should be included,
-# blank otherwise
-# - inc_privileged_tests true if tests that require root privileges should be
-# included, blank otherwise
-# - inc_unportable_tests true if tests that fail on some platforms should be
-# included, blank otherwise
-# - inc_all_tests true if all kinds of problematic unit tests should be
-# included, blank otherwise
-# - excl_cxx_tests true if C++ interoperability tests should be excluded,
-# blank otherwise
-# - excl_longrunning_tests true if long-runnings tests should be excluded,
-# blank otherwise
-# - excl_privileged_tests true if tests that require root privileges should be
-# excluded, blank otherwise
-# - excl_unportable_tests true if tests that fail on some platforms should be
-# excluded, blank otherwise
# - avoidlist list of modules to avoid
func_acceptable ()
{
return 1
fi
done
- case "$1" in
- *-tests)
- inc=true
- for word in `func_get_status "$1"`; do
- case "$word" in
- c++-test)
- test -z "$excl_cxx_tests" \
- || inc=false
- test -n "$inc_all_tests" || test -n "$inc_cxx_tests" \
- || inc=false
- ;;
- longrunning-test)
- test -z "$excl_longrunning_tests" \
- || inc=false
- test -n "$inc_all_tests" || test -n "$inc_longrunning_tests" \
- || inc=false
- ;;
- privileged-test)
- test -z "$excl_privileged_tests" \
- || inc=false
- test -n "$inc_all_tests" || test -n "$inc_privileged_tests" \
- || inc=false
- ;;
- unportable-test)
- test -z "$excl_unportable_tests" \
- || inc=false
- test -n "$inc_all_tests" || test -n "$inc_unportable_tests" \
- || inc=false
- ;;
- *-test)
- test -n "$inc_all_tests" \
- || inc=false
- ;;
- esac
- done
- if ! $inc; then
- return 1
- fi
- ;;
- esac
return 0
}
# included, blank otherwise
# - inc_unportable_tests true if tests that fail on some platforms should be
# included, blank otherwise
-# - inc_all_tests true if all kinds of problematic unit tests should be
-# included, blank otherwise
+# - inc_all_direct_tests true if all kinds of problematic unit tests among
+# the unit tests of the specified modules should be
+# included, blank otherwise
+# - inc_all_indirect_tests true if all kinds of problematic unit tests among
+# the unit tests of the dependencies should be
+# included, blank otherwise
# - excl_cxx_tests true if C++ interoperability tests should be excluded,
# blank otherwise
# - excl_longrunning_tests true if long-runnings tests should be excluded,
handledmodules=
inmodules="$modules"
outmodules=
+ fmtc_inc_all_tests="$inc_all_direct_tests"
while test -n "$inmodules"; do
inmodules_this_round="$inmodules"
inmodules= # Accumulator, queue for next round
if test -n "$duplicated_deps"; then
func_warning "module $module has duplicated dependencies: "`echo $duplicated_deps`
fi
- for dep in $deps; do
- if test -n "$incobsolete" \
- || { inc=true
- for word in `func_get_status $dep`; do
- case "$word" in
- obsolete)
- inc=false
- ;;
- esac
- done
- $inc
- }; then
- func_append inmodules " $dep"
- fi
- done
if test -n "$inctests"; then
testsmodule=`func_get_tests_module $module`
if test -n "$testsmodule"; then
- func_append inmodules " $testsmodule"
+ deps="$deps $testsmodule"
fi
fi
+ for dep in $deps; do
+ # Determine whether to include the dependency or tests module.
+ inc=true
+ for word in `func_get_status $dep`; do
+ case "$word" in
+ obsolete)
+ test -n "$incobsolete" \
+ || inc=false
+ ;;
+ c++-test)
+ test -z "$excl_cxx_tests" \
+ || inc=false
+ test -n "$fmtc_inc_all_tests" || test -n "$inc_cxx_tests" \
+ || inc=false
+ ;;
+ longrunning-test)
+ test -z "$excl_longrunning_tests" \
+ || inc=false
+ test -n "$fmtc_inc_all_tests" || test -n "$inc_longrunning_tests" \
+ || inc=false
+ ;;
+ privileged-test)
+ test -z "$excl_privileged_tests" \
+ || inc=false
+ test -n "$fmtc_inc_all_tests" || test -n "$inc_privileged_tests" \
+ || inc=false
+ ;;
+ unportable-test)
+ test -z "$excl_unportable_tests" \
+ || inc=false
+ test -n "$fmtc_inc_all_tests" || test -n "$inc_unportable_tests" \
+ || inc=false
+ ;;
+ *-test)
+ test -n "$fmtc_inc_all_tests" \
+ || inc=false
+ ;;
+ esac
+ done
+ if $inc; then
+ func_append inmodules " $dep"
+ fi
+ done
fi
fi
done
# Remove $handledmodules from $inmodules.
for m in $inmodules; do echo $m; done | LC_ALL=C sort -u > "$tmp"/queued-modules
inmodules=`echo "$handledmodules" | LC_ALL=C join -v 2 - "$tmp"/queued-modules`
+ fmtc_inc_all_tests="$inc_all_indirect_tests"
done
modules=`for m in $outmodules; do echo $m; done | LC_ALL=C sort -u`
rm -f "$tmp"/queued-modules
}
+# func_show_module_list
+# Input:
+# - specified_modules list of specified modules (one per line, sorted)
+# - modules complete list of modules (one per line, sorted)
+# - tmp pathname of a temporary directory
+func_show_module_list ()
+{
+ if case "$TERM" in
+ xterm*) test -t 1;;
+ *) false;;
+ esac; then
+ # Assume xterm compatible escape sequences.
+ bold_on=`printf '\x1b[1m'`
+ bold_off=`printf '\x1b[0m'`
+ else
+ bold_on=
+ bold_off=
+ fi
+ echo "Module list with included dependencies (indented):"
+ echo "$specified_modules" | sed -e '/^$/d' -e 's/$/| /' > "$tmp"/specified-modules
+ echo "$modules" | sed -e '/^$/d' \
+ | LC_ALL=C join -t '|' -a 2 "$tmp"/specified-modules - \
+ | sed -e 's/^\(.*\)|.*/|\1/' -e 's/^/ /' -e 's/^ |\(.*\)$/ '"${bold_on}"'\1'"${bold_off}"'/'
+}
+
# func_modules_add_dummy
# Input:
# - local_gnulib_dir from --local-dir
# Canonicalize the list of specified modules.
specified_modules=`for m in $specified_modules; do echo $m; done | LC_ALL=C sort -u`
+ # Include all kinds of tests modules if --with-all-tests was specified.
+ inc_all_direct_tests="$inc_all_tests"
+ inc_all_indirect_tests="$inc_all_tests"
+
# Determine final module list.
modules="$specified_modules"
func_modules_transitive_closure
if test $verbose -ge 0; then
- echo "Module list with included dependencies:"
- echo "$modules" | sed -e 's/^/ /'
+ func_show_module_list
fi
final_modules="$modules"
modules=`func_all_modules`
modules=`for m in $modules; do case $m in config-h | ftruncate | mountlist | lib-ignore) ;; *) echo $m;; esac; done`
fi
- modules=`for m in $modules; do echo $m; done | LC_ALL=C sort -u`
+ specified_modules="$modules"
- # Unlike in func_import, here we want to include all kinds of tests.
- inc_all_tests=true
+ # Canonicalize the list of specified modules.
+ specified_modules=`for m in $specified_modules; do echo $m; done | LC_ALL=C sort -u`
+
+ # Unlike in func_import, here we want to include all kinds of tests for the
+ # directly specified modules, but not for dependencies.
+ inc_all_direct_tests=true
+ inc_all_indirect_tests="$inc_all_tests"
# 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
+ for requested_module in $specified_modules; do
requested_license=`func_get_license "$requested_module"`
if test "$requested_license" != GPL; then
# Here we use func_modules_transitive_closure, not just
done
fi
done
- modules="$saved_modules"
inctests="$saved_inctests"
# Subdirectory names.
vc_files=
# Determine final module list.
+ modules="$specified_modules"
func_modules_transitive_closure
if test $verbose -ge 0; then
- echo "Module list with included dependencies:"
- echo "$modules" | sed -e 's/^/ /'
+ func_show_module_list
fi
# Add the dummy module if needed.