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
Seemingly Similar Threads
- [PATCH v3] common/mlstdutils: Build a bytecode version of this library.
- [PATCH v4] common/mlstdutils: Build a bytecode version of this library.
- [PATCH v2] common/mlstdutils: Build a bytecode version of this library.
- [PATCH v6 04/41] mllib: Split ‘Common_utils’ into ‘Std_utils’ + ‘Common_utils’.
- [PATCH 2/2] ocaml: fix build with Bytes fallback