[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH]: Missing tests-base in gnulib-cache.m4
From: |
Bruno Haible |
Subject: |
Re: [PATCH]: Missing tests-base in gnulib-cache.m4 |
Date: |
Thu, 25 Sep 2008 14:42:39 +0200 |
User-agent: |
KMail/1.5.4 |
Hi Yoann,
> The --tests-base argument is not saved within gnulib-cache.m4. The
> attached patch fixes this issue.
It is saved, but only as argument of gl_TESTS_BASE, not in the comment.
I have applied your patch.
> Additionally, I'm running into another problem when cross compiling for
> Win32 systems:
>
> - Importing GnuLib file using the following command:
>
> ../gnulib/gnulib-tool --import --dir=. --lib=libmissing
> --tests-base=libmissing/tests --source-base=libmissing
> --m4-base=libmissing/m4 --doc-base=libmissing/doc --aux-dir=.
> --with-tests --lgpl --libtool --macro-prefix=gl --no-vc-files [modules
> list]
>
> - Then editing libmissing/Makefile.am by hand to list the "tests"
> directory as SUBDIRS (shouldn't this be handled automatically?).
Right, it should be handled automatically. Currently gnulib-tool is asking
the user to make a change to a file that is generated by gnulib-tool, and
invoking "gnulib-tool --import" once again will erase the manual change.
I'm fixing this through the patch below.
> - After generating the autotools build system, doing 'make check' will
> result in the following error (only when cross compiling for Win32
> systems):
>
>
> $ make check
> make check-recursive
> make[1]: Entering directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing'
> Making check in tests
> make[2]: Entering directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make check-recursive
> make[3]: Entering directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make[4]: Entering directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make libtests.a test-alloca-opt.exe test-arpa_inet.exe test-c-ctype.exe
> test-cond.exe test-errno.exe test-fopen.exe test-fseeko.exe
> test-getaddrinfo.exe test-getdelim.exe test-getline.exe
> test-gettimeofday.exe test-lock.exe test-lseek.exe test-memchr.exe
> test-memcmp.exe test-memmem.exe test-netinet_in.exe test-perror.exe
> test-poll.exe test-sleep.exe test-snprintf.exe test-sockets.exe
> test-stdbool.exe test-stdint.exe test-stdio.exe test-stdlib.exe
> test-strcasestr.exe test-strerror.exe test-string.exe test-strings.exe
> test-sys_select.exe test-sys_socket.exe test-sys_stat.exe
> test-sys_time.exe test-time.exe test-tls.exe test-unistd.exe
> test-vasnprintf.exe test-vsnprintf.exe test-wchar.exe test-wctype.exe
> make[5]: Entering directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make[5]: `libtests.a' is up to date.
> make[5]: `test-alloca-opt.exe' is up to date.
> make[5]: `test-arpa_inet.exe' is up to date.
> make[5]: `test-c-ctype.exe' is up to date.
> make[5]: `test-cond.exe' is up to date.
> make[5]: `test-errno.exe' is up to date.
> make[5]: `test-fopen.exe' is up to date.
> make[5]: `test-fseeko.exe' is up to date.
> make[5]: `test-getaddrinfo.exe' is up to date.
> make[5]: `test-getdelim.exe' is up to date.
> make[5]: `test-getline.exe' is up to date.
> make[5]: `test-gettimeofday.exe' is up to date.
> make[5]: `test-lock.exe' is up to date.
> make[5]: `test-lseek.exe' is up to date.
> make[5]: `test-memchr.exe' is up to date.
> make[5]: `test-memcmp.exe' is up to date.
> make[5]: `test-memmem.exe' is up to date.
> make[5]: `test-netinet_in.exe' is up to date.
> make[5]: `test-perror.exe' is up to date.
> make[5]: `test-poll.exe' is up to date.
> make[5]: `test-sleep.exe' is up to date.
> make[5]: `test-snprintf.exe' is up to date.
> make[5]: `test-sockets.exe' is up to date.
> make[5]: `test-stdbool.exe' is up to date.
> make[5]: `test-stdint.exe' is up to date.
> make[5]: `test-stdio.exe' is up to date.
> make[5]: `test-stdlib.exe' is up to date.
> make[5]: `test-strcasestr.exe' is up to date.
> make[5]: `test-strerror.exe' is up to date.
> make[5]: `test-string.exe' is up to date.
> make[5]: `test-strings.exe' is up to date.
> make[5]: `test-sys_select.exe' is up to date.
> make[5]: `test-sys_socket.exe' is up to date.
> make[5]: `test-sys_stat.exe' is up to date.
> make[5]: `test-sys_time.exe' is up to date.
> make[5]: `test-time.exe' is up to date.
> make[5]: `test-tls.exe' is up to date.
> make[5]: `test-unistd.exe' is up to date.
> make[5]: `test-vasnprintf.exe' is up to date.
> make[5]: `test-vsnprintf.exe' is up to date.
> make[5]: `test-wchar.exe' is up to date.
> make[5]: `test-wctype.exe' is up to date.
> make[5]: Leaving directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make check-TESTS
> make[5]: Entering directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> i586-mingw32msvc-gcc -std=gnu99 -g -O2 test-alloca-opt.c -o
> test-alloca-opt
> test-alloca-opt.c:19:20: error: config.h: No such file or directory
> test-alloca-opt.c:21:20: error: alloca.h: No such file or directory
> make[5]: *** [test-alloca-opt] Error 1
> make[5]: Leaving directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make[4]: *** [check-am] Error 2
> make[4]: Leaving directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make[3]: *** [check-recursive] Error 1
> make[3]: Leaving directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make[2]: *** [check] Error 2
> make[2]: Leaving directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing/tests'
> make[1]: *** [check-recursive] Error 1
> make[1]: Leaving directory
> `/home/yoann/dev/prelude/git/libprelude/libmissing'
> make: *** [check] Error 2
Can you investigate? I cannot reproduce. I took GNU hello-2.3, executed
$ .../gnulib-tool --import --dir=. --lib=libmissing
--tests-base=libmissing/tests --source-base=libmissing --m4-base=libmissing/m4
--doc-base=libmissing/doc --aux-dir=build-aux --with-tests --lgpl
--macro-prefix=mi --no-vc-files alloca-opt c-ctype errno fopen fseeko
gettimeofday lseek memchr memcmp memmem perror stdbool stdint stdio stdlib
wchar wctype
$ ./configure; make clean; make distclean
$ ./configure; make; make check
and the compilation of test-alloca-opt.c succeeded:
gcc -DHAVE_CONFIG_H -I. -I../.. -I. -I. -I../.. -I./../.. -I../../libmissing
-I./../../libmissing -g -O2 -MT test-alloca-opt.o -MD -MP -MF
.deps/test-alloca-opt.Tpo -c -o test-alloca-opt.o test-alloca-opt.c
mv -f .deps/test-alloca-opt.Tpo .deps/test-alloca-opt.Po
gcc -g -O2 -o test-alloca-opt test-alloca-opt.o libtests.a
../../libmissing/libmissing.a libtests.a
You may want to look what are the definitions of DEFS, AM_CPPFLAGS and similar
in your libmissing/tests/Makefile.am and in your config.status.
Bruno
2008-09-25 Bruno Haible <address@hidden>
* gnulib-tool: Don't ask the user to perform edits in the generated
Makefile.ams.
(func_emit_lib_Makefile_am): Emit empty SUBDIRS. Execute edits that
apply to the Makefile.am being generated.
(func_emit_tests_Makefile_am): Execute edits that apply to the
Makefile.am being generated.
(func_import): Setup list of Makefile.am edits before emitting the
Makefile.ams, not at the end.
(func_create_testdir): Update.
Reported by Yoann Vandoorselaere <address@hidden>.
*** gnulib-tool.orig 2008-09-25 14:32:03.000000000 +0200
--- gnulib-tool 2008-09-25 14:25:41.000000000 +0200
***************
*** 1664,1669 ****
--- 1664,1673 ----
# - po_domain prefix of i18n domain to use (without -gnulib suffix)
# - actioncmd (optional) command that will reproduce this invocation
# - for_test true if creating a package for testing, false otherwise
+ # - destfile filename relative to destdir of makefile being generated
+ # Input/Output:
+ # - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+ # list of edits to be done to Makefile.am variables
# Output:
# - uses_subdirs nonempty if object files in subdirs exist
func_emit_lib_Makefile_am ()
***************
*** 1748,1753 ****
--- 1752,1758 ----
fi
echo
if test -z "$makefile_name"; then
+ echo "SUBDIRS ="
echo "noinst_HEADERS ="
echo "noinst_LIBRARIES ="
echo "noinst_LTLIBRARIES ="
***************
*** 1766,1771 ****
--- 1771,1792 ----
echo "CLEANFILES ="
echo "DISTCLEANFILES ="
echo "MAINTAINERCLEANFILES ="
+ fi
+ # Execute edits that apply to the Makefile.am being generated.
+ edit=0
+ while test $edit != $makefile_am_edits; do
+ edit=`expr $edit + 1`
+ eval dir=\"\$makefile_am_edit${edit}_dir\"
+ eval var=\"\$makefile_am_edit${edit}_var\"
+ eval val=\"\$makefile_am_edit${edit}_val\"
+ if test -n "$var"; then
+ if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am"
= "$destfile"; then
+ echo "${var} += ${val}"
+ eval "makefile_am_edit${edit}_var="
+ fi
+ fi
+ done
+ if test -z "$makefile_name"; then
echo
echo "AM_CPPFLAGS ="
fi
***************
*** 1897,1902 ****
--- 1918,1927 ----
# - macro_prefix prefix of gl_LIBOBJS macros to use
# - for_test true if creating a package for testing, false otherwise
# - use_libtests true if a libtests.a should be built, false otherwise
+ # - destfile filename relative to destdir of makefile being generated
+ # Input/Output:
+ # - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+ # list of edits to be done to Makefile.am variables
# Output:
# - uses_subdirs nonempty if object files in subdirs exist
func_emit_tests_Makefile_am ()
***************
*** 2008,2013 ****
--- 2033,2052 ----
echo "CLEANFILES ="
echo "DISTCLEANFILES ="
echo "MAINTAINERCLEANFILES ="
+ # Execute edits that apply to the Makefile.am being generated.
+ edit=0
+ while test $edit != $makefile_am_edits; do
+ edit=`expr $edit + 1`
+ eval dir=\"\$makefile_am_edit${edit}_dir\"
+ eval var=\"\$makefile_am_edit${edit}_var\"
+ eval val=\"\$makefile_am_edit${edit}_val\"
+ if test -n "$var"; then
+ if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am"
= "$destfile"; then
+ echo "${var} += ${val}"
+ eval "makefile_am_edit${edit}_var="
+ fi
+ fi
+ done
echo
echo "AM_CPPFLAGS = \\"
echo " -I. -I\$(srcdir) \\"
***************
*** 2857,2864 ****
--- 2896,2949 ----
# Create normal Makefile.ams.
for_test=false
+ # Setup list of Makefile.am edits that are to be performed afterwards.
+ # 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
+ # remembers that ${dir}Makefile.am needs to be edited to that ${var}
mentions
+ # ${value}.
+ 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\"
+ }
+ if test "$makefile_am" = Makefile.am; then
+ sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
+ sourcebase_base=`basename "$sourcebase"`
+ func_note_Makefile_am_edit "$sourcebase_dir" SUBDIRS "$sourcebase_base"
+ fi
+ if test -n "$pobase"; then
+ pobase_dir=`echo "$pobase" | sed -n -e 's,/[^/]*$,/,p'`
+ pobase_base=`basename "$pobase"`
+ func_note_Makefile_am_edit "$pobase_dir" SUBDIRS "$pobase_base"
+ fi
+ if test -n "$inctests"; then
+ 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"
+ fi
+ fi
+ func_note_Makefile_am_edit "" ACLOCAL_AMFLAGS "-I ${m4base}"
+ {
+ # Find the first parent directory of $m4base that contains a Makefile.am.
+ sed_last='s,^.*/\([^/][^/]*\)//*$,\1/,
+ s,//*$,/,'
+ sed_butlast='s,[^/][^/]*//*$,,'
+ dir1="${m4base}/"; dir2=""
+ while test -n "$dir1" && test ! -f "${destdir}/${dir1}Makefile.am"; do
+ dir2=`echo "$dir1" | sed -e "$sed_last"`"$dir2"
+ dir1=`echo "$dir1" | sed -e "$sed_butlast"`
+ done
+ func_note_Makefile_am_edit "$dir1" EXTRA_DIST "${dir2}gnulib-cache.m4"
+ }
+
# Create library makefile.
func_dest_tmpfilename $sourcebase/$makefile_am
+ destfile="$sourcebase/$makefile_am"
modules="$main_modules"
func_emit_lib_Makefile_am > "$tmpfile"
if test -f "$destdir"/$sourcebase/$makefile_am; then
***************
*** 3252,3257 ****
--- 3337,3343 ----
if test -n "$inctests"; then
# Create tests makefile.
func_dest_tmpfilename $testsbase/$makefile_am
+ destfile="$testsbase/$makefile_am"
modules="$testsrelated_modules"
func_emit_tests_Makefile_am > "$tmpfile"
if test -f "$destdir"/$testsbase/$makefile_am; then
***************
*** 3444,3479 ****
echo " - \"include $makefile_name\" from within
\"$testsbase/Makefile.am\","
fi
fi
! if test "$makefile_am" = Makefile.am; then
! sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
! sourcebase_base=`basename "$sourcebase"`
! echo " - mention \"${sourcebase_base}\" in SUBDIRS in
${sourcebase_dir}Makefile.am,"
! fi
! if test -n "$pobase"; then
! pobase_dir=`echo "$pobase" | sed -n -e 's,/[^/]*$,/,p'`
! pobase_base=`basename "$pobase"`
! echo " - mention \"${pobase_base}\" in SUBDIRS in
${pobase_dir}Makefile.am,"
! fi
! if test -n "$inctests"; then
! if test "$makefile_am" = Makefile.am; then
! testsbase_dir=`echo "$testsbase" | sed -n -e 's,/[^/]*$,/,p'`
! testsbase_base=`basename "$testsbase"`
! echo " - mention \"${testsbase_base}\" in SUBDIRS in
${testsbase_dir}Makefile.am,"
fi
! fi
! echo " - mention \"-I ${m4base}\" in ACLOCAL_AMFLAGS in Makefile.am,"
! {
! # Find the first parent directory of $m4base that contains a Makefile.am.
! sed_last='s,^.*/\([^/][^/]*\)//*$,\1/,
! s,//*$,/,'
! sed_butlast='s,[^/][^/]*//*$,,'
! dir1="${m4base}/"; dir2=""
! while test -n "$dir1" && test ! -f "${destdir}/${dir1}Makefile.am"; do
! dir2=`echo "$dir1" | sed -e "$sed_last"`"$dir2"
! dir1=`echo "$dir1" | sed -e "$sed_butlast"`
! done
! echo " - mention ${dir2}gnulib-cache.m4 in EXTRA_DIST in
${dir1}Makefile.am."
! }
echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after
AC_PROG_CC,"
echo " - invoke ${macro_prefix}_INIT in $configure_ac."
}
--- 3530,3545 ----
echo " - \"include $makefile_name\" from within
\"$testsbase/Makefile.am\","
fi
fi
! edit=0
! while test $edit != $makefile_am_edits; do
! edit=`expr $edit + 1`
! eval dir=\"\$makefile_am_edit${edit}_dir\"
! eval var=\"\$makefile_am_edit${edit}_var\"
! eval val=\"\$makefile_am_edit${edit}_val\"
! if test -n "$var"; then
! echo " - mention \"${val}\" in ${var} in ${dir}Makefile.am,"
fi
! done
echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after
AC_PROG_CC,"
echo " - invoke ${macro_prefix}_INIT in $configure_ac."
}
***************
*** 3630,3637 ****
--- 3696,3707 ----
# Create Makefile.ams that are for testing.
for_test=true
+ # No special edits are needed.
+ makefile_am_edits=0
+
# Create $sourcebase/Makefile.am.
mkdir -p "$testdir/$sourcebase"
+ destfile="$sourcebase/Makefile.am"
func_emit_lib_Makefile_am > "$testdir/$sourcebase/Makefile.am"
any_uses_subdirs="$uses_subdirs"
***************
*** 3667,3672 ****
--- 3737,3743 ----
auxdir=`echo "$testsbase/"|sed 's%[^/][^/]*//*%../%g'`"$auxdir"
# Create $testsbase/Makefile.am.
use_libtests=false
+ destfile="$testsbase/Makefile.am"
func_emit_tests_Makefile_am > "$testdir/$testsbase/Makefile.am"
any_uses_subdirs="$any_uses_subdirs$uses_subdirs"
# Create $testsbase/configure.ac.
- mingw and SIGPIPE, new modules 'sigpipe' and 'write', (continued)
- mingw and SIGPIPE, new modules 'sigpipe' and 'write', Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (1/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (2/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (3/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (4/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (5/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (6/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write' (7/7), Bruno Haible, 2008/09/26
- Re: mingw and SIGPIPE, new modules 'sigpipe' and 'write', Simon Josefsson, 2008/09/26
- Re: [PATCH]: Missing tests-base in gnulib-cache.m4, Yoann Vandoorselaere, 2008/09/25
Re: [PATCH]: Missing tests-base in gnulib-cache.m4,
Bruno Haible <=
Re: [PATCH]: Missing tests-base in gnulib-cache.m4, Bruno Haible, 2008/09/25