bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with localcharset test


From: Bruno Haible
Subject: Re: Problem with localcharset test
Date: Mon, 03 Sep 2018 21:22:52 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-134-generic; KDE/5.18.0; x86_64; ; )

Antoine LUONG wrote:
> > Does it work when you use two directories that are siblings instead
> > of ancestors?
> >
> >     gnulib-tool --import --lib=libmissing --source-base=libmissing \
> >    --m4-base=libmissing/m4 --tests-base=libmissing-tests --with-tests \
> >    localcharset
> 
> It works when using sibling directories.

Ah, so it is really due to the position of --tests-base relative to
--source-base.

> I can reproduce the issue with this minimal Makefile.am:
> and this configure.ac:

Thanks, you made it easy for me to reproduce the issue. Fixed as follows:


2018-09-03  Bruno Haible  <address@hidden>

        gnulib-tool: Fix build order when $testsbase is a subdir of $sourcebase.
        Reported by Antoine Luong <address@hidden> in
        <https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00008.html>.
        * gnulib-tool (func_import): For the tests, set a dotfirst flag.
        (func_emit_lib_Makefile_am): Consider the dotfirst flag.
        (func_emit_tests_Makefile_am): Don't consider the dotfirst flag.

diff --git a/gnulib-tool b/gnulib-tool
index e4a8f83..92bfee4 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -3484,7 +3484,7 @@ func_update_file ()
 #                   sed expression for resolving ${gl_include_guard_prefix}
 # - destfile        filename relative to destdir of makefile being generated
 # Input/Output:
-# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val,dotfirst}
 #                   list of edits to be done to Makefile.am variables
 # Output:
 # - uses_subdirs    nonempty if object files in subdirs exist
@@ -3655,8 +3655,14 @@ func_emit_lib_Makefile_am ()
     eval dir=\"\$makefile_am_edit${edit}_dir\"
     eval var=\"\$makefile_am_edit${edit}_var\"
     eval val=\"\$makefile_am_edit${edit}_val\"
+    eval dotfirst=\"\$makefile_am_edit${edit}_dotfirst\"
     if test -n "$var"; then
       if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am" 
= "$destfile"; then
+        if test "${var}" = SUBDIRS && test -n "$dotfirst"; then
+          # The added subdirectory ${val} needs to be mentioned after '.'.
+          # Since we don't have '.' among SUBDIRS so far, add it now.
+          val=". ${val}"
+        fi
         echo "${var} += ${val}"
         eval "makefile_am_edit${edit}_var="
       fi
@@ -3838,7 +3844,7 @@ func_emit_po_POTFILES_in ()
 #                   sed expression for resolving ${gl_include_guard_prefix}
 # - destfile        filename relative to destdir of makefile being generated
 # Input/Output:
-# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val,dotfirst}
 #                   list of edits to be done to Makefile.am variables
 # Output:
 # - uses_subdirs    nonempty if object files in subdirs exist
@@ -3987,8 +3993,14 @@ func_emit_tests_Makefile_am ()
     eval dir=\"\$makefile_am_edit${edit}_dir\"
     eval var=\"\$makefile_am_edit${edit}_var\"
     eval val=\"\$makefile_am_edit${edit}_val\"
+    eval dotfirst=\"\$makefile_am_edit${edit}_dotfirst\"
     if test -n "$var"; then
       if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am" 
= "$destfile"; then
+        if test "${var}" = SUBDIRS && test -n "$dotfirst"; then
+          # The added subdirectory ${val} needs to be mentioned after '.'.
+          # But we have '.' among SUBDIRS already, so do nothing.
+          :
+        fi
         echo "${var} += ${val}"
         eval "makefile_am_edit${edit}_var="
       fi
@@ -5253,15 +5265,19 @@ 
s,^\(.................................................[^ ]*\) *,
   # Some of these edits apply to files that we will generate; others are
   # under the responsibility of the developer.
   makefile_am_edits=0
-  # func_note_Makefile_am_edit dir var value
+  # func_note_Makefile_am_edit dir var value [dotfirst]
   # remembers that ${dir}Makefile.am needs to be edited to that ${var} mentions
   # ${value}.
+  # If ${dotfirst} is non-empty, this mention needs to be present after '.'.
+  # This is a special hack for the SUBDIRS variable, cf.
+  # 
<https://www.gnu.org/software/automake/manual/html_node/Subdirectories.html>.
   func_note_Makefile_am_edit ()
   {
     makefile_am_edits=`expr $makefile_am_edits + 1`
     eval makefile_am_edit${makefile_am_edits}_dir=\"\$1\"
     eval makefile_am_edit${makefile_am_edits}_var=\"\$2\"
     eval makefile_am_edit${makefile_am_edits}_val=\"\$3\"
+    eval makefile_am_edit${makefile_am_edits}_dotfirst=\"\$4\"
   }
   if test "$makefile_am" = Makefile.am; then
     sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
@@ -5277,7 +5293,7 @@ s,^\(.................................................[^ 
]*\) *,
     if test "$makefile_am" = Makefile.am; then
       testsbase_dir=`echo "$testsbase" | sed -n -e 's,/[^/]*$,/,p'`
       testsbase_base=`basename "$testsbase"`
-      func_note_Makefile_am_edit "$testsbase_dir" SUBDIRS "$testsbase_base"
+      func_note_Makefile_am_edit "$testsbase_dir" SUBDIRS "$testsbase_base" 
true
     fi
   fi
   func_note_Makefile_am_edit "" ACLOCAL_AMFLAGS "-I ${m4base}"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]