Richard W.M. Jones
2017-Jul-13 14:38 UTC
[Libguestfs] [PATCH v2] common/mlstdutils: Build a bytecode version of this library.
Even if ocamlopt is available, always build a bytecode version of ‘common/mlstdutils’. Furthermore, because this library is pure OCaml, we should not be using ‘ocamlmklib’. We should use ‘ocaml{c,opt} -a’ instead. This doesn't make any difference for native code, but for bytecode it was building a broken library. The original reason for making this change is because the generator is always built as bytecode, and it depended on ‘../common/mlstdutils/guestfs_config.cmo’ and ‘../common/mlstdutils/std_utils.cmo’. On native code platforms these were not built before the generator and so the generator races to build the .cmi and .cmo files. Since the generator doesn't have correct dependencies covering the ‘common/mlstdutils’ directory you can get a broken link on fast machines: File "../common/mlstdutils/std_utils.ml", line 1: Error: Corrupted compiled interface ../common/mlstdutils/guestfs_config.cmi make[2]: *** [Makefile:1993: ../common/mlstdutils/std_utils.cmo] Error 2 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory '/builddir/build/BUILD/libguestfs-1.37.17/generator' --- common/mlstdutils/Makefile.am | 11 ++++++++--- generator/Makefile.am | 9 ++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/common/mlstdutils/Makefile.am b/common/mlstdutils/Makefile.am index 9e0b34d42..67441f769 100644 --- a/common/mlstdutils/Makefile.am +++ b/common/mlstdutils/Makefile.am @@ -48,7 +48,9 @@ else MLSTDUTILS_CMA = mlstdutils.cmxa endif -noinst_DATA = $(MLSTDUTILS_CMA) +# Just for this library, we need to build both bytecode and native +# code because the generator always requires the bytecode version. +noinst_DATA = mlstdutils.cma mlstdutils.cmxa libmlstdutils_a_SOURCES = dummy.c libmlstdutils_a_CPPFLAGS = \ @@ -79,8 +81,11 @@ endif libmlstdutils_a_DEPENDENCIES = $(OBJECTS) -$(MLSTDUTILS_CMA): $(OBJECTS) - $(OCAMLFIND) mklib $(OCAMLPACKAGES) $(OBJECTS) -o mlstdutils +mlstdutils.cma: $(BOBJECTS) + $(OCAMLFIND) ocamlc $(OCAMLPACKAGES) -a $^ -o $@ + +mlstdutils.cmxa: $(XOBJECTS) + $(OCAMLFIND) ocamlopt $(OCAMLPACKAGES) -a $^ -o $@ # This OCaml module has to be generated by make (configure will put # unexpanded prefix macro in). diff --git a/generator/Makefile.am b/generator/Makefile.am index 3f54ad51d..d4a21fe97 100644 --- a/generator/Makefile.am +++ b/generator/Makefile.am @@ -115,8 +115,6 @@ sources = \ # In build dependency order. objects = \ $(OCAML_BYTES_COMPAT_CMO) \ - ../common/mlstdutils/guestfs_config.cmo \ - ../common/mlstdutils/std_utils.cmo \ types.cmo \ utils.cmo \ proc_nr.cmo \ @@ -180,7 +178,12 @@ noinst_PROGRAM = generator if HAVE_OCAML generator: $(objects) - $(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) -linkpkg $^ -o $@ +# We need the recursive make here because the generator is +# rebuilt in ‘make clean’. + $(MAKE) -C $(top_builddir)/common/mlstdutils mlstdutils.cma + $(OCAMLFIND) ocamlc $(OCAMLFLAGS) \ + $(OCAMLPACKAGES) -linkpkg mlstdutils.cma \ + $^ -o $@ # Dependencies. depend: .depend -- 2.13.2
Richard Jones
2017-Jul-13 15:22 UTC
[Libguestfs] check-release success (was: Re: [PATCH v2] common/mlstdutils: Build a bytecode version of this library.)
0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/php' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/php' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/php' Making check in erlang make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/erlang' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/erlang' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/erlang' PASS: tests/010-load.erl PASS: tests/030-config.erl PASS: run-bindtests PASS: tests/070-optargs.erl PASS: tests/060-readdir.erl PASS: tests/050-lvcreate.erl ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 6 # PASS: 6 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/erlang' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/erlang' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/erlang' Making check in erlang/examples make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/erlang/examples' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/erlang/examples' Making check in lua make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/lua' ln -sf .libs/libluaguestfs.so guestfs.so make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/lua' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/lua' PASS: tests/010-load.lua PASS: run-bindtests PASS: tests/025-create-flags.lua PASS: tests/015-globals.lua PASS: tests/020-create.lua PASS: tests/030-config.lua PASS: tests/027-create-multiple.lua PASS: tests/070-optargs.lua PASS: tests/900-errors.lua PASS: tests/400-events.lua PASS: tests/060-readdir.lua PASS: tests/050-lvcreate.lua PASS: tests/400-progress.lua ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 13 # PASS: 13 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/lua' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/lua' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/lua' Making check in lua/examples make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/lua/examples' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/lua/examples' Making check in gobject make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' make check-am make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' make check-TESTS make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' make[4]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' SKIP: run-tests PASS: run-tests-retvalues PASS: run-live-tests ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 3 # PASS: 2 # SKIP: 1 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[4]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/gobject' Making check in csharp make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/csharp' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/csharp' Making check in common/mlutils make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' make c_utils_unit_tests make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' OCAMLOPT c_utils_unit_tests.cmx CC c_utils_unit_tests-dummy.o GEN c_utils_unit_tests make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' PASS: c_utils_unit_tests ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlutils' Making check in common/mlprogress make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlprogress' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlprogress' Making check in common/mlvisit make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' make visit_tests make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' CC dummy.o OCAMLOPT visit_tests.cmx File "visit_tests.ml", line 111, characters 25-31: Warning 52: Code should not depend on the actual values of this constructor's arguments. They are only for information and may change in future versions. (See manual section 8.5) File "visit_tests.ml", line 119, characters 16-23: Warning 52: Code should not depend on the actual values of this constructor's arguments. They are only for information and may change in future versions. (See manual section 8.5) GEN visit_tests make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' PASS: visit_tests ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlvisit' Making check in common/mlxml make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlxml' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/common/mlxml' Making check in mllib make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' make getopt_tests common_utils_tests JSON_tests make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' CC getopt_tests-dummy.o OCAMLOPT getopt_tests.cmx CC common_utils_tests-dummy.o OCAMLOPT common_utils_tests.cmx CC dummy.o OCAMLOPT JSON_tests.cmx GEN getopt_tests GEN JSON_tests GEN common_utils_tests make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' PASS: JSON_tests PASS: common_utils_tests PASS: test-getopt.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 3 # PASS: 3 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/mllib' Making check in customize make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/customize' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/customize' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/customize' rm -f test-firstboot-rhel-4.9.sh test-firstboot-rhel-4.9.sh-t rm -f test-firstboot-rhel-5.11.sh test-firstboot-rhel-5.11.sh-t rm -f test-firstboot-rhel-6.8.sh test-firstboot-rhel-6.8.sh-t f=`echo "test-firstboot-rhel-4.9.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-rhel-4.9.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-rhel-4.9.sh-t f=`echo "test-firstboot-rhel-5.11.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-rhel-5.11.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-rhel-5.11.sh-t f=`echo "test-firstboot-rhel-6.8.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-rhel-6.8.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-rhel-6.8.sh-t chmod 0755 test-firstboot-rhel-5.11.sh-t chmod 0755 test-firstboot-rhel-4.9.sh-t chmod 0755 test-firstboot-rhel-6.8.sh-t mv test-firstboot-rhel-4.9.sh-t test-firstboot-rhel-4.9.sh mv test-firstboot-rhel-5.11.sh-t test-firstboot-rhel-5.11.sh mv test-firstboot-rhel-6.8.sh-t test-firstboot-rhel-6.8.sh rm -f test-firstboot-rhel-7.2.sh test-firstboot-rhel-7.2.sh-t rm -f test-firstboot-debian-6.sh test-firstboot-debian-6.sh-t rm -f test-firstboot-debian-7.sh test-firstboot-debian-7.sh-t f=`echo "test-firstboot-rhel-7.2.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-rhel-7.2.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-rhel-7.2.sh-t f=`echo "test-firstboot-debian-6.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-debian-6.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-debian-6.sh-t f=`echo "test-firstboot-debian-7.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-debian-7.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-debian-7.sh-t chmod 0755 test-firstboot-debian-6.sh-t chmod 0755 test-firstboot-rhel-7.2.sh-t mv test-firstboot-debian-6.sh-t test-firstboot-debian-6.sh mv test-firstboot-rhel-7.2.sh-t test-firstboot-rhel-7.2.sh rm -f test-firstboot-debian-8.sh test-firstboot-debian-8.sh-t rm -f test-firstboot-fedora-25.sh test-firstboot-fedora-25.sh-t f=`echo "test-firstboot-debian-8.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-debian-8.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-debian-8.sh-t chmod 0755 test-firstboot-debian-7.sh-t f=`echo "test-firstboot-fedora-25.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-fedora-25.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-fedora-25.sh-t mv test-firstboot-debian-7.sh-t test-firstboot-debian-7.sh rm -f test-firstboot-fedora-26.sh test-firstboot-fedora-26.sh-t chmod 0755 test-firstboot-debian-8.sh-t f=`echo "test-firstboot-fedora-26.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-fedora-26.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-fedora-26.sh-t chmod 0755 test-firstboot-fedora-25.sh-t mv test-firstboot-debian-8.sh-t test-firstboot-debian-8.sh mv test-firstboot-fedora-25.sh-t test-firstboot-fedora-25.sh rm -f test-firstboot-ubuntu-10.04.sh test-firstboot-ubuntu-10.04.sh-t chmod 0755 test-firstboot-fedora-26.sh-t f=`echo "test-firstboot-ubuntu-10.04.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-ubuntu-10.04.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-ubuntu-10.04.sh-t mv test-firstboot-fedora-26.sh-t test-firstboot-fedora-26.sh rm -f test-firstboot-ubuntu-12.04.sh test-firstboot-ubuntu-12.04.sh-t rm -f test-firstboot-ubuntu-14.04.sh test-firstboot-ubuntu-14.04.sh-t f=`echo "test-firstboot-ubuntu-12.04.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-ubuntu-12.04.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-ubuntu-12.04.sh-t f=`echo "test-firstboot-ubuntu-14.04.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-ubuntu-14.04.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-ubuntu-14.04.sh-t chmod 0755 test-firstboot-ubuntu-10.04.sh-t chmod 0755 test-firstboot-ubuntu-12.04.sh-t chmod 0755 test-firstboot-ubuntu-14.04.sh-t mv test-firstboot-ubuntu-10.04.sh-t test-firstboot-ubuntu-10.04.sh mv test-firstboot-ubuntu-12.04.sh-t test-firstboot-ubuntu-12.04.sh mv test-firstboot-ubuntu-14.04.sh-t test-firstboot-ubuntu-14.04.sh rm -f test-firstboot-ubuntu-16.04.sh test-firstboot-ubuntu-16.04.sh-t rm -f test-password-centos-7.2.sh test-password-centos-7.2.sh-t f=`echo "test-firstboot-ubuntu-16.04.sh" | /usr/bin/sed 's/test-firstboot-\(.*\).sh/\1/'`; \ echo 'script=test-firstboot-ubuntu-16.04.sh exec $srcdir/test-firstboot.sh' "$f" > test-firstboot-ubuntu-16.04.sh-t f=`echo "test-password-centos-7.2.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-centos-7.2.sh exec $srcdir/test-password.pl' "$f" > test-password-centos-7.2.sh-t rm -f test-password-debian-6.sh test-password-debian-6.sh-t f=`echo "test-password-debian-6.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-debian-6.sh exec $srcdir/test-password.pl' "$f" > test-password-debian-6.sh-t chmod 0755 test-password-centos-7.2.sh-t chmod 0755 test-password-debian-6.sh-t mv test-password-centos-7.2.sh-t test-password-centos-7.2.sh chmod 0755 test-firstboot-ubuntu-16.04.sh-t mv test-password-debian-6.sh-t test-password-debian-6.sh mv test-firstboot-ubuntu-16.04.sh-t test-firstboot-ubuntu-16.04.sh rm -f test-password-debian-7.sh test-password-debian-7.sh-t rm -f test-password-debian-8.sh test-password-debian-8.sh-t f=`echo "test-password-debian-7.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-debian-7.sh exec $srcdir/test-password.pl' "$f" > test-password-debian-7.sh-t f=`echo "test-password-debian-8.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-debian-8.sh exec $srcdir/test-password.pl' "$f" > test-password-debian-8.sh-t rm -f test-password-fedora-25.sh test-password-fedora-25.sh-t f=`echo "test-password-fedora-25.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-fedora-25.sh exec $srcdir/test-password.pl' "$f" > test-password-fedora-25.sh-t chmod 0755 test-password-debian-8.sh-t mv test-password-debian-8.sh-t test-password-debian-8.sh chmod 0755 test-password-debian-7.sh-t mv test-password-debian-7.sh-t test-password-debian-7.sh rm -f test-password-rhel-3.9.sh test-password-rhel-3.9.sh-t f=`echo "test-password-rhel-3.9.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-rhel-3.9.sh exec $srcdir/test-password.pl' "$f" > test-password-rhel-3.9.sh-t chmod 0755 test-password-fedora-25.sh-t rm -f test-password-rhel-4.9.sh test-password-rhel-4.9.sh-t mv test-password-fedora-25.sh-t test-password-fedora-25.sh f=`echo "test-password-rhel-4.9.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-rhel-4.9.sh exec $srcdir/test-password.pl' "$f" > test-password-rhel-4.9.sh-t chmod 0755 test-password-rhel-3.9.sh-t rm -f test-password-rhel-5.11.sh test-password-rhel-5.11.sh-t mv test-password-rhel-3.9.sh-t test-password-rhel-3.9.sh chmod 0755 test-password-rhel-4.9.sh-t f=`echo "test-password-rhel-5.11.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-rhel-5.11.sh exec $srcdir/test-password.pl' "$f" > test-password-rhel-5.11.sh-t mv test-password-rhel-4.9.sh-t test-password-rhel-4.9.sh rm -f test-password-rhel-6.9.sh test-password-rhel-6.9.sh-t rm -f test-password-rhel-7.2.sh test-password-rhel-7.2.sh-t chmod 0755 test-password-rhel-5.11.sh-t f=`echo "test-password-rhel-6.9.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-rhel-6.9.sh exec $srcdir/test-password.pl' "$f" > test-password-rhel-6.9.sh-t f=`echo "test-password-rhel-7.2.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-rhel-7.2.sh exec $srcdir/test-password.pl' "$f" > test-password-rhel-7.2.sh-t mv test-password-rhel-5.11.sh-t test-password-rhel-5.11.sh chmod 0755 test-password-rhel-6.9.sh-t mv test-password-rhel-6.9.sh-t test-password-rhel-6.9.sh rm -f test-password-ubuntu-10.04.sh test-password-ubuntu-10.04.sh-t chmod 0755 test-password-rhel-7.2.sh-t f=`echo "test-password-ubuntu-10.04.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-ubuntu-10.04.sh exec $srcdir/test-password.pl' "$f" > test-password-ubuntu-10.04.sh-t rm -f test-password-ubuntu-12.04.sh test-password-ubuntu-12.04.sh-t mv test-password-rhel-7.2.sh-t test-password-rhel-7.2.sh f=`echo "test-password-ubuntu-12.04.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-ubuntu-12.04.sh exec $srcdir/test-password.pl' "$f" > test-password-ubuntu-12.04.sh-t rm -f test-password-ubuntu-14.04.sh test-password-ubuntu-14.04.sh-t f=`echo "test-password-ubuntu-14.04.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-ubuntu-14.04.sh exec $srcdir/test-password.pl' "$f" > test-password-ubuntu-14.04.sh-t chmod 0755 test-password-ubuntu-12.04.sh-t chmod 0755 test-password-ubuntu-10.04.sh-t chmod 0755 test-password-ubuntu-14.04.sh-t mv test-password-ubuntu-12.04.sh-t test-password-ubuntu-12.04.sh mv test-password-ubuntu-10.04.sh-t test-password-ubuntu-10.04.sh mv test-password-ubuntu-14.04.sh-t test-password-ubuntu-14.04.sh rm -f test-password-ubuntu-16.04.sh test-password-ubuntu-16.04.sh-t rm -f test-settings-rhel-4.9.sh test-settings-rhel-4.9.sh-t f=`echo "test-password-ubuntu-16.04.sh" | /usr/bin/sed 's/test-password-\(.*\).sh/\1/'`; \ echo 'script=test-password-ubuntu-16.04.sh exec $srcdir/test-password.pl' "$f" > test-password-ubuntu-16.04.sh-t f=`echo "test-settings-rhel-4.9.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-rhel-4.9.sh exec $srcdir/test-settings.sh' "$f" > test-settings-rhel-4.9.sh-t rm -f test-settings-rhel-5.11.sh test-settings-rhel-5.11.sh-t f=`echo "test-settings-rhel-5.11.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-rhel-5.11.sh exec $srcdir/test-settings.sh' "$f" > test-settings-rhel-5.11.sh-t chmod 0755 test-password-ubuntu-16.04.sh-t mv test-password-ubuntu-16.04.sh-t test-password-ubuntu-16.04.sh rm -f test-settings-rhel-6.8.sh test-settings-rhel-6.8.sh-t f=`echo "test-settings-rhel-6.8.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-rhel-6.8.sh exec $srcdir/test-settings.sh' "$f" > test-settings-rhel-6.8.sh-t chmod 0755 test-settings-rhel-4.9.sh-t chmod 0755 test-settings-rhel-5.11.sh-t mv test-settings-rhel-4.9.sh-t test-settings-rhel-4.9.sh chmod 0755 test-settings-rhel-6.8.sh-t mv test-settings-rhel-5.11.sh-t test-settings-rhel-5.11.sh mv test-settings-rhel-6.8.sh-t test-settings-rhel-6.8.sh rm -f test-settings-rhel-7.2.sh test-settings-rhel-7.2.sh-t rm -f test-settings-debian-6.sh test-settings-debian-6.sh-t f=`echo "test-settings-rhel-7.2.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-rhel-7.2.sh exec $srcdir/test-settings.sh' "$f" > test-settings-rhel-7.2.sh-t rm -f test-settings-debian-7.sh test-settings-debian-7.sh-t f=`echo "test-settings-debian-6.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-debian-6.sh exec $srcdir/test-settings.sh' "$f" > test-settings-debian-6.sh-t f=`echo "test-settings-debian-7.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-debian-7.sh exec $srcdir/test-settings.sh' "$f" > test-settings-debian-7.sh-t chmod 0755 test-settings-rhel-7.2.sh-t chmod 0755 test-settings-debian-7.sh-t mv test-settings-rhel-7.2.sh-t test-settings-rhel-7.2.sh mv test-settings-debian-7.sh-t test-settings-debian-7.sh chmod 0755 test-settings-debian-6.sh-t rm -f test-settings-debian-8.sh test-settings-debian-8.sh-t rm -f test-settings-fedora-25.sh test-settings-fedora-25.sh-t mv test-settings-debian-6.sh-t test-settings-debian-6.sh f=`echo "test-settings-debian-8.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-debian-8.sh exec $srcdir/test-settings.sh' "$f" > test-settings-debian-8.sh-t f=`echo "test-settings-fedora-25.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-fedora-25.sh exec $srcdir/test-settings.sh' "$f" > test-settings-fedora-25.sh-t chmod 0755 test-settings-debian-8.sh-t rm -f test-settings-ubuntu-10.04.sh test-settings-ubuntu-10.04.sh-t mv test-settings-debian-8.sh-t test-settings-debian-8.sh f=`echo "test-settings-ubuntu-10.04.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-ubuntu-10.04.sh exec $srcdir/test-settings.sh' "$f" > test-settings-ubuntu-10.04.sh-t rm -f test-settings-ubuntu-12.04.sh test-settings-ubuntu-12.04.sh-t chmod 0755 test-settings-fedora-25.sh-t f=`echo "test-settings-ubuntu-12.04.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-ubuntu-12.04.sh exec $srcdir/test-settings.sh' "$f" > test-settings-ubuntu-12.04.sh-t mv test-settings-fedora-25.sh-t test-settings-fedora-25.sh chmod 0755 test-settings-ubuntu-10.04.sh-t rm -f test-settings-ubuntu-14.04.sh test-settings-ubuntu-14.04.sh-t mv test-settings-ubuntu-10.04.sh-t test-settings-ubuntu-10.04.sh chmod 0755 test-settings-ubuntu-12.04.sh-t f=`echo "test-settings-ubuntu-14.04.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-ubuntu-14.04.sh exec $srcdir/test-settings.sh' "$f" > test-settings-ubuntu-14.04.sh-t mv test-settings-ubuntu-12.04.sh-t test-settings-ubuntu-12.04.sh rm -f test-settings-ubuntu-16.04.sh test-settings-ubuntu-16.04.sh-t f=`echo "test-settings-ubuntu-16.04.sh" | /usr/bin/sed 's/test-settings-\(.*\).sh/\1/'`; \ echo 'script=test-settings-ubuntu-16.04.sh exec $srcdir/test-settings.sh' "$f" > test-settings-ubuntu-16.04.sh-t chmod 0755 test-settings-ubuntu-14.04.sh-t mv test-settings-ubuntu-14.04.sh-t test-settings-ubuntu-14.04.sh chmod 0755 test-settings-ubuntu-16.04.sh-t mv test-settings-ubuntu-16.04.sh-t test-settings-ubuntu-16.04.sh SKIP: test-firstboot-rhel-5.11.sh SKIP: test-firstboot-rhel-6.8.sh SKIP: test-firstboot-rhel-4.9.sh PASS: test-virt-customize-docs.sh SKIP: test-firstboot-debian-6.sh SKIP: test-firstboot-rhel-7.2.sh SKIP: test-firstboot-debian-7.sh SKIP: test-firstboot-debian-8.sh SKIP: test-firstboot-fedora-25.sh SKIP: test-firstboot-fedora-26.sh SKIP: test-firstboot-ubuntu-10.04.sh SKIP: test-firstboot-ubuntu-12.04.sh SKIP: test-firstboot-ubuntu-14.04.sh SKIP: test-firstboot-ubuntu-16.04.sh SKIP: test-password-centos-7.2.sh SKIP: test-password-debian-6.sh SKIP: test-password-debian-8.sh SKIP: test-password-debian-7.sh SKIP: test-password-fedora-25.sh SKIP: test-password-rhel-3.9.sh SKIP: test-password-rhel-4.9.sh SKIP: test-password-rhel-5.11.sh SKIP: test-password-rhel-6.9.sh SKIP: test-password-rhel-7.2.sh SKIP: test-password-ubuntu-10.04.sh SKIP: test-password-ubuntu-12.04.sh SKIP: test-password-ubuntu-14.04.sh SKIP: test-password-ubuntu-16.04.sh SKIP: test-settings-rhel-4.9.sh SKIP: test-settings-rhel-5.11.sh SKIP: test-settings-rhel-6.8.sh SKIP: test-settings-rhel-7.2.sh SKIP: test-settings-debian-6.sh SKIP: test-settings-debian-7.sh SKIP: test-settings-debian-8.sh SKIP: test-settings-fedora-25.sh SKIP: test-settings-ubuntu-10.04.sh SKIP: test-settings-ubuntu-12.04.sh SKIP: test-settings-ubuntu-14.04.sh SKIP: test-settings-ubuntu-16.04.sh PASS: test-virt-customize.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 41 # PASS: 2 # SKIP: 39 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/customize' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/customize' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/customize' Making check in builder make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder' make yajl_tests debian.xz fedora.xz ubuntu.xz windows.xz fedora.qcow2 fedora.qcow2.xz make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder' CC yajl_tests-yajl-c.o OCAMLOPT yajl_tests.cmx rm -f debian.xz debian.xz-t rm -f fedora.xz fedora.xz-t xz --best -c ../test-data/phony-guests/debian.img > debian.xz-t xz --best -c ../test-data/phony-guests/fedora.img > fedora.xz-t rm -f ubuntu.xz ubuntu.xz-t xz --best -c ../test-data/phony-guests/ubuntu.img > ubuntu.xz-t rm -f windows.xz windows.xz-t xz --best -c ../test-data/phony-guests/windows.img > windows.xz-t rm -f fedora.qcow2 fedora.qcow2-t qemu-img convert -f raw -O qcow2 ../test-data/phony-guests/fedora.img fedora.qcow2-t mv fedora.qcow2-t fedora.qcow2 GEN yajl_tests rm -f fedora.qcow2.xz fedora.qcow2.xz-t xz --best -c fedora.qcow2 > fedora.qcow2.xz-t mv fedora.qcow2.xz-t fedora.qcow2.xz mv ubuntu.xz-t ubuntu.xz mv windows.xz-t windows.xz mv debian.xz-t debian.xz mv fedora.xz-t fedora.xz make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder' rm -f test-console-centos-7.2.sh test-console-centos-7.2.sh-t rm -f test-console-rhel-6.8.sh test-console-rhel-6.8.sh-t f=`echo "test-console-centos-7.2.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-centos-7.2.sh exec $srcdir/test-console.sh' "$f" > test-console-centos-7.2.sh-t f=`echo "test-console-rhel-6.8.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-rhel-6.8.sh exec $srcdir/test-console.sh' "$f" > test-console-rhel-6.8.sh-t chmod 0755 test-console-centos-7.2.sh-t chmod 0755 test-console-rhel-6.8.sh-t mv test-console-centos-7.2.sh-t test-console-centos-7.2.sh mv test-console-rhel-6.8.sh-t test-console-rhel-6.8.sh rm -f test-console-rhel-7.2.sh test-console-rhel-7.2.sh-t rm -f test-console-debian-7.sh test-console-debian-7.sh-t f=`echo "test-console-rhel-7.2.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-rhel-7.2.sh exec $srcdir/test-console.sh' "$f" > test-console-rhel-7.2.sh-t f=`echo "test-console-debian-7.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-debian-7.sh exec $srcdir/test-console.sh' "$f" > test-console-debian-7.sh-t chmod 0755 test-console-rhel-7.2.sh-t chmod 0755 test-console-debian-7.sh-t mv test-console-rhel-7.2.sh-t test-console-rhel-7.2.sh mv test-console-debian-7.sh-t test-console-debian-7.sh rm -f test-console-debian-8.sh test-console-debian-8.sh-t rm -f test-console-fedora-24.sh test-console-fedora-24.sh-t f=`echo "test-console-debian-8.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-debian-8.sh exec $srcdir/test-console.sh' "$f" > test-console-debian-8.sh-t f=`echo "test-console-fedora-24.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-fedora-24.sh exec $srcdir/test-console.sh' "$f" > test-console-fedora-24.sh-t chmod 0755 test-console-fedora-24.sh-t chmod 0755 test-console-debian-8.sh-t mv test-console-fedora-24.sh-t test-console-fedora-24.sh mv test-console-debian-8.sh-t test-console-debian-8.sh rm -f test-console-ubuntu-12.04.sh test-console-ubuntu-12.04.sh-t rm -f test-console-ubuntu-14.04.sh test-console-ubuntu-14.04.sh-t f=`echo "test-console-ubuntu-12.04.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-ubuntu-12.04.sh exec $srcdir/test-console.sh' "$f" > test-console-ubuntu-12.04.sh-t f=`echo "test-console-ubuntu-14.04.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-ubuntu-14.04.sh exec $srcdir/test-console.sh' "$f" > test-console-ubuntu-14.04.sh-t chmod 0755 test-console-ubuntu-14.04.sh-t mv test-console-ubuntu-14.04.sh-t test-console-ubuntu-14.04.sh chmod 0755 test-console-ubuntu-12.04.sh-t rm -f test-console-ubuntu-16.04.sh test-console-ubuntu-16.04.sh-t mv test-console-ubuntu-12.04.sh-t test-console-ubuntu-12.04.sh f=`echo "test-console-ubuntu-16.04.sh" | /usr/bin/sed 's/test-console-\(.*\).sh/\1/'`; \ echo 'script=test-console-ubuntu-16.04.sh exec $srcdir/test-console.sh' "$f" > test-console-ubuntu-16.04.sh-t chmod 0755 test-console-ubuntu-16.04.sh-t mv test-console-ubuntu-16.04.sh-t test-console-ubuntu-16.04.sh PASS: test-virt-index-validate.sh SKIP: test-virt-builder-planner.sh PASS: test-virt-builder-docs.sh PASS: test-virt-builder-list.sh PASS: test-virt-builder-list-simplestreams.sh PASS: yajl_tests SKIP: test-console-centos-7.2.sh SKIP: test-console-rhel-6.8.sh SKIP: test-console-rhel-7.2.sh SKIP: test-console-debian-7.sh SKIP: test-console-debian-8.sh SKIP: test-console-fedora-24.sh SKIP: test-console-ubuntu-12.04.sh SKIP: test-console-ubuntu-16.04.sh SKIP: test-console-ubuntu-14.04.sh PASS: test-virt-builder.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 16 # PASS: 6 # SKIP: 10 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder' Making check in builder/templates make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder/templates' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder/templates' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/builder/templates' PASS: validate.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder/templates' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder/templates' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/builder/templates' Making check in get-kernel make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/get-kernel' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/get-kernel' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/get-kernel' PASS: test-virt-get-kernel-docs.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/get-kernel' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/get-kernel' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/get-kernel' Making check in resize make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/resize' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/resize' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/resize' PASS: test-virt-resize-docs.sh PASS: test-virt-resize.pl ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 2 # PASS: 2 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/resize' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/resize' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/resize' Making check in sparsify make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/sparsify' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/sparsify' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/sparsify' PASS: test-virt-sparsify-docs.sh PASS: test-virt-sparsify-in-place.sh PASS: test-virt-sparsify.sh PASS: test-virt-sparsify-in-place-fstrim-unsupported.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 4 # PASS: 4 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/sparsify' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/sparsify' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/sparsify' Making check in sysprep make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/sysprep' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/sysprep' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/sysprep' PASS: test-virt-sysprep-docs.sh PASS: test-virt-sysprep-passwords.sh PASS: test-virt-sysprep-backup-files.sh PASS: test-virt-sysprep.sh PASS: test-virt-sysprep-script.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 5 # PASS: 5 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/sysprep' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/sysprep' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/sysprep' Making check in v2v make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' make v2v_unit_tests windows.vmdk make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' CC v2v_unit_tests-libvirt_utils-c.o CC v2v_unit_tests-qemuopts-c.o rm -f windows.vmdk windows.vmdk-t OCAMLOPT v2v_unit_tests.cmx if [ -s ../test-data/phony-guests/windows.img ]; then \ qemu-img convert -f raw ../test-data/phony-guests/windows.img -O vmdk windows.vmdk-t; \ mv windows.vmdk-t windows.vmdk; \ else \ touch windows.vmdk; \ fi GEN v2v_unit_tests make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' PASS: test-v2v-docs.sh PASS: test-v2v-i-ova-bad-sha256.sh PASS: test-v2v-i-ova-good-checksums.sh PASS: test-v2v-i-ova-bad-sha1.sh PASS: test-v2v-i-ova-formats.sh PASS: test-v2v-i-ova-gz.sh PASS: test-v2v-i-ova-invalid-manifest1.sh PASS: test-v2v-i-ova-invalid-manifest2.sh PASS: test-v2v-i-ova-subfolders.sh PASS: test-v2v-i-ova-tar.sh PASS: test-v2v-i-ova-two-disks.sh PASS: test-v2v-copy-to-local.sh PASS: test-v2v-i-vmx.sh PASS: v2v_unit_tests PASS: test-v2v-bad-networks-and-bridges.sh PASS: test-v2v-machine-readable.sh PASS: test-v2v-i-disk.sh PASS: test-v2v-i-ova.sh PASS: test-v2v-cdrom.sh PASS: test-v2v-windows-conversion.sh PASS: test-v2v-floppy.sh PASS: test-v2v-virtio-win-iso.sh PASS: test-v2v-networks-and-bridges.sh PASS: test-v2v-in-place.sh PASS: test-v2v-o-glance.sh PASS: test-v2v-o-null.sh PASS: test-v2v-o-libvirt.sh PASS: test-v2v-no-copy.sh PASS: test-v2v-o-qemu.sh PASS: test-v2v-o-rhv.sh PASS: test-v2v-print-source.sh PASS: test-v2v-o-vdsm-options.sh rm -f test-v2v-conversion-of-centos-6.sh test-v2v-conversion-of-centos-6.sh-t f=`echo "test-v2v-conversion-of-centos-6.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-centos-6.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-centos-6.sh-t chmod 0755 test-v2v-conversion-of-centos-6.sh-t mv test-v2v-conversion-of-centos-6.sh-t test-v2v-conversion-of-centos-6.sh rm -f test-v2v-conversion-of-centos-7.0.sh test-v2v-conversion-of-centos-7.0.sh-t f=`echo "test-v2v-conversion-of-centos-7.0.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-centos-7.0.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-centos-7.0.sh-t chmod 0755 test-v2v-conversion-of-centos-7.0.sh-t mv test-v2v-conversion-of-centos-7.0.sh-t test-v2v-conversion-of-centos-7.0.sh rm -f test-v2v-conversion-of-debian-6.sh test-v2v-conversion-of-debian-6.sh-t f=`echo "test-v2v-conversion-of-debian-6.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-debian-6.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-debian-6.sh-t chmod 0755 test-v2v-conversion-of-debian-6.sh-t mv test-v2v-conversion-of-debian-6.sh-t test-v2v-conversion-of-debian-6.sh rm -f test-v2v-conversion-of-debian-7.sh test-v2v-conversion-of-debian-7.sh-t f=`echo "test-v2v-conversion-of-debian-7.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-debian-7.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-debian-7.sh-t chmod 0755 test-v2v-conversion-of-debian-7.sh-t mv test-v2v-conversion-of-debian-7.sh-t test-v2v-conversion-of-debian-7.sh rm -f test-v2v-conversion-of-debian-8.sh test-v2v-conversion-of-debian-8.sh-t f=`echo "test-v2v-conversion-of-debian-8.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-debian-8.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-debian-8.sh-t chmod 0755 test-v2v-conversion-of-debian-8.sh-t mv test-v2v-conversion-of-debian-8.sh-t test-v2v-conversion-of-debian-8.sh rm -f test-v2v-conversion-of-fedora-20.sh test-v2v-conversion-of-fedora-20.sh-t f=`echo "test-v2v-conversion-of-fedora-20.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-fedora-20.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-fedora-20.sh-t chmod 0755 test-v2v-conversion-of-fedora-20.sh-t mv test-v2v-conversion-of-fedora-20.sh-t test-v2v-conversion-of-fedora-20.sh rm -f test-v2v-conversion-of-fedora-23.sh test-v2v-conversion-of-fedora-23.sh-t f=`echo "test-v2v-conversion-of-fedora-23.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-fedora-23.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-fedora-23.sh-t chmod 0755 test-v2v-conversion-of-fedora-23.sh-t mv test-v2v-conversion-of-fedora-23.sh-t test-v2v-conversion-of-fedora-23.sh rm -f test-v2v-conversion-of-rhel-5.10.sh test-v2v-conversion-of-rhel-5.10.sh-t f=`echo "test-v2v-conversion-of-rhel-5.10.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-rhel-5.10.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-rhel-5.10.sh-t chmod 0755 test-v2v-conversion-of-rhel-5.10.sh-t mv test-v2v-conversion-of-rhel-5.10.sh-t test-v2v-conversion-of-rhel-5.10.sh rm -f test-v2v-conversion-of-rhel-6.8.sh test-v2v-conversion-of-rhel-6.8.sh-t f=`echo "test-v2v-conversion-of-rhel-6.8.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-rhel-6.8.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-rhel-6.8.sh-t chmod 0755 test-v2v-conversion-of-rhel-6.8.sh-t mv test-v2v-conversion-of-rhel-6.8.sh-t test-v2v-conversion-of-rhel-6.8.sh rm -f test-v2v-conversion-of-rhel-7.0.sh test-v2v-conversion-of-rhel-7.0.sh-t f=`echo "test-v2v-conversion-of-rhel-7.0.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-rhel-7.0.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-rhel-7.0.sh-t chmod 0755 test-v2v-conversion-of-rhel-7.0.sh-t mv test-v2v-conversion-of-rhel-7.0.sh-t test-v2v-conversion-of-rhel-7.0.sh rm -f test-v2v-conversion-of-rhel-7.2.sh test-v2v-conversion-of-rhel-7.2.sh-t f=`echo "test-v2v-conversion-of-rhel-7.2.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-rhel-7.2.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-rhel-7.2.sh-t chmod 0755 test-v2v-conversion-of-rhel-7.2.sh-t mv test-v2v-conversion-of-rhel-7.2.sh-t test-v2v-conversion-of-rhel-7.2.sh rm -f test-v2v-conversion-of-ubuntu-10.04.sh test-v2v-conversion-of-ubuntu-10.04.sh-t f=`echo "test-v2v-conversion-of-ubuntu-10.04.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-ubuntu-10.04.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-ubuntu-10.04.sh-t chmod 0755 test-v2v-conversion-of-ubuntu-10.04.sh-t mv test-v2v-conversion-of-ubuntu-10.04.sh-t test-v2v-conversion-of-ubuntu-10.04.sh rm -f test-v2v-conversion-of-ubuntu-12.04.sh test-v2v-conversion-of-ubuntu-12.04.sh-t f=`echo "test-v2v-conversion-of-ubuntu-12.04.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-ubuntu-12.04.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-ubuntu-12.04.sh-t PASS: test-v2v-oa-option.sh rm -f test-v2v-conversion-of-ubuntu-14.04.sh test-v2v-conversion-of-ubuntu-14.04.sh-t f=`echo "test-v2v-conversion-of-ubuntu-14.04.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-ubuntu-14.04.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-ubuntu-14.04.sh-t chmod 0755 test-v2v-conversion-of-ubuntu-14.04.sh-t chmod 0755 test-v2v-conversion-of-ubuntu-12.04.sh-t mv test-v2v-conversion-of-ubuntu-14.04.sh-t test-v2v-conversion-of-ubuntu-14.04.sh mv test-v2v-conversion-of-ubuntu-12.04.sh-t test-v2v-conversion-of-ubuntu-12.04.sh rm -f test-v2v-conversion-of-ubuntu-16.04.sh test-v2v-conversion-of-ubuntu-16.04.sh-t f=`echo "test-v2v-conversion-of-ubuntu-16.04.sh" | /usr/bin/sed 's/test-v2v-conversion-of-\(.*\).sh/\1/'`; \ echo 'script=test-v2v-conversion-of-ubuntu-16.04.sh exec $srcdir/test-v2v-conversion-of.sh' "$f" > test-v2v-conversion-of-ubuntu-16.04.sh-t chmod 0755 test-v2v-conversion-of-ubuntu-16.04.sh-t mv test-v2v-conversion-of-ubuntu-16.04.sh-t test-v2v-conversion-of-ubuntu-16.04.sh SKIP: test-v2v-trim.sh SKIP: test-v2v-i-ova-as-root.sh SKIP: test-v2v-conversion-of-centos-6.sh SKIP: test-v2v-conversion-of-centos-7.0.sh PASS: test-v2v-of-option.sh SKIP: test-v2v-conversion-of-debian-6.sh SKIP: test-v2v-conversion-of-debian-7.sh SKIP: test-v2v-conversion-of-debian-8.sh SKIP: test-v2v-conversion-of-fedora-20.sh SKIP: test-v2v-conversion-of-fedora-23.sh SKIP: test-v2v-conversion-of-rhel-5.10.sh SKIP: test-v2v-conversion-of-rhel-6.8.sh SKIP: test-v2v-conversion-of-rhel-7.0.sh SKIP: test-v2v-conversion-of-rhel-7.2.sh SKIP: test-v2v-conversion-of-ubuntu-10.04.sh SKIP: test-v2v-conversion-of-ubuntu-12.04.sh SKIP: test-v2v-conversion-of-ubuntu-14.04.sh SKIP: test-v2v-conversion-of-ubuntu-16.04.sh PASS: test-v2v-on-option.sh PASS: test-v2v-sound.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 53 # PASS: 36 # SKIP: 17 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/v2v' Making check in v2v/test-harness make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/v2v/test-harness' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/v2v/test-harness' Making check in dib make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/dib' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/dib' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/dib' PASS: test-virt-dib-docs.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/dib' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/dib' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/dib' Making check in tools make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/tools' for f in tools/virt-list-filesystems tools/virt-list-partitions tools/virt-tar tools/virt-win-reg; do echo $f; done > ../po/POTFILES-pl make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/tools' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/tools' PASS: test-virt-list-filesystems.sh PASS: test-virt-tar.sh ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 2 # PASS: 2 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/tools' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/tools' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/tools' Making check in fuse make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' make test-fuse test-guestmount-fd test-guestunmount-fd make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' CC test_fuse-test-fuse.o CC test_guestmount_fd-test-guestmount-fd.o CC test_guestunmount_fd-test-guestunmount-fd.o CCLD test-guestunmount-fd CCLD test-guestmount-fd CCLD test-fuse make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' make check-TESTS make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' make[3]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' SKIP: test-fuse-umount-race.sh PASS: test-guestunmount-not-mounted.sh PASS: test-docs.sh SKIP: /var/tmp/tmpQlMgeV/libguestfs/fuse/.libs/lt-test-guestmount-fd PASS: /var/tmp/tmpQlMgeV/libguestfs/fuse/.libs/lt-test-guestunmount-fd PASS: /var/tmp/tmpQlMgeV/libguestfs/fuse/.libs/lt-test-fuse ===========================================================================Testsuite summary for libguestfs 1.37.17 ===========================================================================# TOTAL: 6 # PASS: 4 # SKIP: 2 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ===========================================================================make[3]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/fuse' Making check in utils/boot-analysis make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/utils/boot-analysis' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/utils/boot-analysis' Making check in utils/boot-benchmark make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/utils/boot-benchmark' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/utils/boot-benchmark' Making check in utils/qemu-boot make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/utils/qemu-boot' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/utils/qemu-boot' Making check in utils/qemu-speed-test make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/utils/qemu-speed-test' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/utils/qemu-speed-test' Making check in po-docs make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs' Making check in ja make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs/ja' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs/ja' Making check in uk make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs/uk' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs/uk' make[2]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs' make[2]: Nothing to be done for 'check-am'. make[2]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs/po-docs' make[1]: Entering directory '/var/tmp/tmpQlMgeV/libguestfs' make[1]: Leaving directory '/var/tmp/tmpQlMgeV/libguestfs'
Pino Toscano
2017-Jul-24 11:03 UTC
Re: [Libguestfs] [PATCH v2] common/mlstdutils: Build a bytecode version of this library.
On Thursday, 13 July 2017 16:38:14 CEST Richard W.M. Jones wrote:> Even if ocamlopt is available, always build a bytecode version of > ‘common/mlstdutils’. > > Furthermore, because this library is pure OCaml, we should not be > using ‘ocamlmklib’. We should use ‘ocaml{c,opt} -a’ instead. This > doesn't make any difference for native code, but for bytecode it was > building a broken library. > > The original reason for making this change is because the generator is > always built as bytecode, and it depended on > ‘../common/mlstdutils/guestfs_config.cmo’ and > ‘../common/mlstdutils/std_utils.cmo’. On native code platforms these > were not built before the generator and so the generator races to > build the .cmi and .cmo files. Since the generator doesn't have > correct dependencies covering the ‘common/mlstdutils’ directory you > can get a broken link on fast machines: > > File "../common/mlstdutils/std_utils.ml", line 1: > Error: Corrupted compiled interface > ../common/mlstdutils/guestfs_config.cmi > make[2]: *** [Makefile:1993: ../common/mlstdutils/std_utils.cmo] Error 2 > make[2]: *** Waiting for unfinished jobs.... > make[2]: Leaving directory '/builddir/build/BUILD/libguestfs-1.37.17/generator' > --- > common/mlstdutils/Makefile.am | 11 ++++++++--- > generator/Makefile.am | 9 ++++++--- > 2 files changed, 14 insertions(+), 6 deletions(-) > > diff --git a/common/mlstdutils/Makefile.am b/common/mlstdutils/Makefile.am > index 9e0b34d42..67441f769 100644 > --- a/common/mlstdutils/Makefile.am > +++ b/common/mlstdutils/Makefile.am > @@ -48,7 +48,9 @@ else > MLSTDUTILS_CMA = mlstdutils.cmxa > endif > > -noinst_DATA = $(MLSTDUTILS_CMA) > +# Just for this library, we need to build both bytecode and native > +# code because the generator always requires the bytecode version. > +noinst_DATA = mlstdutils.cma mlstdutils.cmxa > > libmlstdutils_a_SOURCES = dummy.c > libmlstdutils_a_CPPFLAGS = \ > @@ -79,8 +81,11 @@ endif > > libmlstdutils_a_DEPENDENCIES = $(OBJECTS) > > -$(MLSTDUTILS_CMA): $(OBJECTS) > - $(OCAMLFIND) mklib $(OCAMLPACKAGES) $(OBJECTS) -o mlstdutils > +mlstdutils.cma: $(BOBJECTS) > + $(OCAMLFIND) ocamlc $(OCAMLPACKAGES) -a $^ -o $@ > + > +mlstdutils.cmxa: $(XOBJECTS) > + $(OCAMLFIND) ocamlopt $(OCAMLPACKAGES) -a $^ -o $@ > > # This OCaml module has to be generated by make (configure will put > # unexpanded prefix macro in). > diff --git a/generator/Makefile.am b/generator/Makefile.am > index 3f54ad51d..d4a21fe97 100644 > --- a/generator/Makefile.am > +++ b/generator/Makefile.am > @@ -115,8 +115,6 @@ sources = \ > # In build dependency order. > objects = \ > $(OCAML_BYTES_COMPAT_CMO) \ > - ../common/mlstdutils/guestfs_config.cmo \ > - ../common/mlstdutils/std_utils.cmo \Most probably also $(OCAML_BYTES_COMPAT_CMO) should be removed, since it's part of mlstdutils too. This also means the variable itself can go.> types.cmo \ > utils.cmo \ > proc_nr.cmo \ > @@ -180,7 +178,12 @@ noinst_PROGRAM = generator > if HAVE_OCAML > > generator: $(objects) > - $(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) -linkpkg $^ -o $@ > +# We need the recursive make here because the generator is > +# rebuilt in ‘make clean’. > + $(MAKE) -C $(top_builddir)/common/mlstdutils mlstdutils.cma > + $(OCAMLFIND) ocamlc $(OCAMLFLAGS) \ > + $(OCAMLPACKAGES) -linkpkg mlstdutils.cma \ > + $^ -o $@Hm it is (i.e. rebuilt on clean)? I don't remember this behaviour, and issuing `make clean` in generator just removes files here. -- Pino Toscano
Richard W.M. Jones
2017-Jul-24 11:07 UTC
Re: [Libguestfs] [PATCH v2] common/mlstdutils: Build a bytecode version of this library.
On Mon, Jul 24, 2017 at 01:03:00PM +0200, Pino Toscano wrote:> On Thursday, 13 July 2017 16:38:14 CEST Richard W.M. Jones wrote: > > Even if ocamlopt is available, always build a bytecode version of > > ‘common/mlstdutils’. > > > > Furthermore, because this library is pure OCaml, we should not be > > using ‘ocamlmklib’. We should use ‘ocaml{c,opt} -a’ instead. This > > doesn't make any difference for native code, but for bytecode it was > > building a broken library. > > > > The original reason for making this change is because the generator is > > always built as bytecode, and it depended on > > ‘../common/mlstdutils/guestfs_config.cmo’ and > > ‘../common/mlstdutils/std_utils.cmo’. On native code platforms these > > were not built before the generator and so the generator races to > > build the .cmi and .cmo files. Since the generator doesn't have > > correct dependencies covering the ‘common/mlstdutils’ directory you > > can get a broken link on fast machines: > > > > File "../common/mlstdutils/std_utils.ml", line 1: > > Error: Corrupted compiled interface > > ../common/mlstdutils/guestfs_config.cmi > > make[2]: *** [Makefile:1993: ../common/mlstdutils/std_utils.cmo] Error 2 > > make[2]: *** Waiting for unfinished jobs.... > > make[2]: Leaving directory '/builddir/build/BUILD/libguestfs-1.37.17/generator' > > --- > > common/mlstdutils/Makefile.am | 11 ++++++++--- > > generator/Makefile.am | 9 ++++++--- > > 2 files changed, 14 insertions(+), 6 deletions(-) > > > > diff --git a/common/mlstdutils/Makefile.am b/common/mlstdutils/Makefile.am > > index 9e0b34d42..67441f769 100644 > > --- a/common/mlstdutils/Makefile.am > > +++ b/common/mlstdutils/Makefile.am > > @@ -48,7 +48,9 @@ else > > MLSTDUTILS_CMA = mlstdutils.cmxa > > endif > > > > -noinst_DATA = $(MLSTDUTILS_CMA) > > +# Just for this library, we need to build both bytecode and native > > +# code because the generator always requires the bytecode version. > > +noinst_DATA = mlstdutils.cma mlstdutils.cmxa > > > > libmlstdutils_a_SOURCES = dummy.c > > libmlstdutils_a_CPPFLAGS = \ > > @@ -79,8 +81,11 @@ endif > > > > libmlstdutils_a_DEPENDENCIES = $(OBJECTS) > > > > -$(MLSTDUTILS_CMA): $(OBJECTS) > > - $(OCAMLFIND) mklib $(OCAMLPACKAGES) $(OBJECTS) -o mlstdutils > > +mlstdutils.cma: $(BOBJECTS) > > + $(OCAMLFIND) ocamlc $(OCAMLPACKAGES) -a $^ -o $@ > > + > > +mlstdutils.cmxa: $(XOBJECTS) > > + $(OCAMLFIND) ocamlopt $(OCAMLPACKAGES) -a $^ -o $@ > > > > # This OCaml module has to be generated by make (configure will put > > # unexpanded prefix macro in). > > diff --git a/generator/Makefile.am b/generator/Makefile.am > > index 3f54ad51d..d4a21fe97 100644 > > --- a/generator/Makefile.am > > +++ b/generator/Makefile.am > > @@ -115,8 +115,6 @@ sources = \ > > # In build dependency order. > > objects = \ > > $(OCAML_BYTES_COMPAT_CMO) \ > > - ../common/mlstdutils/guestfs_config.cmo \ > > - ../common/mlstdutils/std_utils.cmo \ > > Most probably also $(OCAML_BYTES_COMPAT_CMO) should be removed, since > it's part of mlstdutils too. This also means the variable itself can > go.I'll try that.> > types.cmo \ > > utils.cmo \ > > proc_nr.cmo \ > > @@ -180,7 +178,12 @@ noinst_PROGRAM = generator > > if HAVE_OCAML > > > > generator: $(objects) > > - $(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) -linkpkg $^ -o $@ > > +# We need the recursive make here because the generator is > > +# rebuilt in ‘make clean’. > > + $(MAKE) -C $(top_builddir)/common/mlstdutils mlstdutils.cma > > + $(OCAMLFIND) ocamlc $(OCAMLFLAGS) \ > > + $(OCAMLPACKAGES) -linkpkg mlstdutils.cma \ > > + $^ -o $@ > > Hm it is (i.e. rebuilt on clean)? I don't remember this behaviour, and > issuing `make clean` in generator just removes files here.If you do 'make clean' at the top level then the generator gets rebuilt (because of generator_built dependencies in other directories). This could be a bug, but it's not this bug ... Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
Possibly Parallel Threads
- [PATCH] common/mlstdutils: Always build bytecode version of this library.
- [PATCH v3] common/mlstdutils: Build a bytecode version of this
- [PATCH v4] common/mlstdutils: Build a bytecode version of this
- [PATCH] common/mlstdutils: Implement StringSet.
- [PATCH] common/mlstdutils: Fix parallel builds of bytes.ml.