From 820099f8dbabc0910b4b8e79435c3476887bb8053b0d4612ccf9e7b5b71f7e63 Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Thu, 27 Feb 2014 12:41:42 +0000 Subject: [PATCH 1/2] - Build without ocaml.opt on s390x and ppc64le 0001-ocamlopt.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/libguestfs?expand=0&rev=278 --- 0001-ocamlopt.patch | 567 ++++++++++++++++++++++++++++++++++++++++++++ libguestfs.changes | 6 + libguestfs.spec | 9 +- 3 files changed, 577 insertions(+), 5 deletions(-) create mode 100644 0001-ocamlopt.patch diff --git a/0001-ocamlopt.patch b/0001-ocamlopt.patch new file mode 100644 index 0000000..6dd116c --- /dev/null +++ b/0001-ocamlopt.patch @@ -0,0 +1,567 @@ +From bf074c1343edec1c85079157e9877f79d85c376c Mon Sep 17 00:00:00 2001 +From: Olaf Hering +Date: Wed, 26 Feb 2014 11:08:36 +0100 +Subject: ocamlopt + +Signed-off-by: Olaf Hering +--- + builder/Makefile.am | 50 ++++++++++++++++++++++++++++++++++++++---- + configure.ac | 2 ++ + mllib/Makefile.am | 54 ++++++++++++++++++++++++++++++++++++++++++---- + ocaml/Makefile.am | 32 ++++++++++++++++++++++----- + ocaml/examples/Makefile.am | 25 +++++++++++++++++++-- + resize/Makefile.am | 43 ++++++++++++++++++++++++++++++++---- + sparsify/Makefile.am | 39 +++++++++++++++++++++++++++++---- + sysprep/Makefile.am | 40 ++++++++++++++++++++++++++++++++-- + 8 files changed, 260 insertions(+), 25 deletions(-) + +diff --git a/builder/Makefile.am b/builder/Makefile.am +index b8bf6ac..83ef46b 100644 +--- a/builder/Makefile.am ++++ b/builder/Makefile.am +@@ -43,7 +43,30 @@ SOURCES = \ + if HAVE_OCAML + + # Note this list must be in dependency order. +-OBJECTS = \ ++OBJECTS_bc = \ ++ $(top_builddir)/mllib/libdir.cmo \ ++ $(top_builddir)/mllib/common_gettext.cmo \ ++ $(top_builddir)/mllib/common_utils.cmo \ ++ $(top_builddir)/mllib/urandom.cmo \ ++ $(top_builddir)/mllib/random_seed.cmo \ ++ $(top_builddir)/mllib/hostname.cmo \ ++ $(top_builddir)/mllib/firstboot.cmo \ ++ $(top_builddir)/mllib/perl_edit.cmo \ ++ $(top_builddir)/mllib/crypt-c.o \ ++ $(top_builddir)/mllib/crypt.cmo \ ++ $(top_builddir)/mllib/fsync-c.o \ ++ $(top_builddir)/mllib/fsync.cmo \ ++ $(top_builddir)/mllib/password.cmo \ ++ $(top_builddir)/mllib/config.cmo \ ++ get_kernel.cmo \ ++ downloader.cmo \ ++ sigchecker.cmo \ ++ index_parser.cmo \ ++ list_entries.cmo \ ++ cmdline.cmo \ ++ builder.cmo ++ ++OBJECTS_opt = \ + $(top_builddir)/mllib/libdir.cmx \ + $(top_builddir)/mllib/common_gettext.cmx \ + $(top_builddir)/mllib/common_utils.cmx \ +@@ -66,6 +89,12 @@ OBJECTS = \ + cmdline.cmx \ + builder.cmx + ++if HAVE_OCAMLOPT ++FINAL_BINARY = virt-builder.opt ++else ++FINAL_BINARY = virt-builder.bc ++endif ++ + bin_SCRIPTS = virt-builder + + # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L +@@ -73,7 +102,6 @@ bin_SCRIPTS = virt-builder + # installed copy of libguestfs. + OCAMLPACKAGES = \ + -package str,unix \ +- -I $(top_builddir)/src/.libs \ + -I $(top_builddir)/ocaml \ + -I $(top_builddir)/mllib + if HAVE_OCAML_PKG_GETTEXT +@@ -81,15 +109,29 @@ OCAMLPACKAGES += -package gettext-stub + endif + + OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) +-OCAMLOPTFLAGS = $(OCAMLCFLAGS) ++OCAMLOPTFLAGS = \ ++ -I $(top_builddir)/src/.libs \ ++ $(OCAMLCFLAGS) + +-virt-builder: $(OBJECTS) ++virt-builder.bc: $(OBJECTS_bc) ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ -custom \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '-lncurses -lcrypt' \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++ ++virt-builder.opt: $(OBJECTS_opt) + $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ + mlguestfs.cmxa -linkpkg $^ \ + -cclib '-lncurses -lcrypt' \ + $(OCAML_GCOV_LDFLAGS) \ + -o $@ + ++virt-builder: $(FINAL_BINARY) ++ cp -vf $< $@ ++ + .mli.cmi: + $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ + .ml.cmo: +diff --git a/configure.ac b/configure.ac +index d7430db..d0063e8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1024,6 +1024,8 @@ AS_IF([test "x$enable_ocaml" != "xno"],[ + ]) + AM_CONDITIONAL([HAVE_OCAML], + [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) ++AM_CONDITIONAL([HAVE_OCAMLOPT], ++ [test "x$OCAMLOPT" != "xno" && test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) + AM_CONDITIONAL([HAVE_OCAMLDOC], + [test "x$OCAMLDOC" != "xno"]) + +diff --git a/mllib/Makefile.am b/mllib/Makefile.am +index 8c8d508..4312283 100644 +--- a/mllib/Makefile.am ++++ b/mllib/Makefile.am +@@ -62,7 +62,31 @@ if HAVE_OCAML + # - We're not actually building a functioning program here, we're just + # linking everything together to check all the modules build OK. + # - This list must be in dependency order. +-OBJECTS = \ ++OBJECTS_bc = \ ++ $(top_builddir)/fish/guestfish-progress.o \ ++ $(top_builddir)/fish/guestfish-uri.o \ ++ tty-c.o \ ++ fsync-c.o \ ++ progress-c.o \ ++ uri-c.o \ ++ crypt-c.o \ ++ config.cmo \ ++ libdir.cmo \ ++ common_gettext.cmo \ ++ common_utils.cmo \ ++ urandom.cmo \ ++ random_seed.cmo \ ++ hostname.cmo \ ++ firstboot.cmo \ ++ perl_edit.cmo \ ++ tTY.cmo \ ++ fsync.cmo \ ++ progress.cmo \ ++ uRI.cmo \ ++ crypt.cmo \ ++ password.cmo ++ ++OBJECTS_opt = \ + $(top_builddir)/fish/guestfish-progress.o \ + $(top_builddir)/fish/guestfish-uri.o \ + tty-c.o \ +@@ -86,31 +110,53 @@ OBJECTS = \ + crypt.cmx \ + password.cmx + ++if HAVE_OCAMLOPT ++FINAL_BINARY = dummy.opt ++else ++FINAL_BINARY = dummy.bc ++endif + noinst_SCRIPTS = dummy + + # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L + # option to be passed to gcc, so we don't try linking against an + # installed copy of libguestfs. +-OCAMLPACKAGES = -package str,unix -I $(top_builddir)/src/.libs -I ../ocaml ++OCAMLPACKAGES = \ ++ -package str,unix \ ++ -I $(top_builddir)/ocaml ++ + if HAVE_OCAML_PKG_GETTEXT + OCAMLPACKAGES += -package gettext-stub + endif + + OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) +-OCAMLOPTFLAGS = $(OCAMLCFLAGS) ++OCAMLOPTFLAGS = \ ++ -I $(top_builddir)/src/.libs \ ++ $(OCAMLCFLAGS) + + OCAMLCLIBS = \ + $(LIBXML2_LIBS) -lncurses -lcrypt \ + -L../src/.libs -lutils \ + -L../gnulib/lib/.libs -lgnu + +-dummy: $(OBJECTS) ++dummy.bc: $(OBJECTS_bc) ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ -custom \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '$(OCAMLCLIBS)' \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++ ++dummy.opt: $(OBJECTS_opt) + $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ + mlguestfs.cmxa -linkpkg $^ \ + -cclib '$(OCAMLCLIBS)' \ + $(OCAML_GCOV_LDFLAGS) \ + -o $@ + ++dummy: $(FINAL_BINARY) ++ cp -vf $< $@ ++ + .mli.cmi: + $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ + .ml.cmo: +diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am +index 5dd2c9b..43e0c59 100644 +--- a/ocaml/Makefile.am ++++ b/ocaml/Makefile.am +@@ -37,10 +37,25 @@ CLEANFILES += t/*.cmi t/*.cmo t/*.cmx t/*.o t/*.a t/*.so + + if HAVE_OCAML + ++DATA_HOOK_FILES = META *.so *.a *.cma \ ++ *.cmi $(srcdir)/*.mli ++if HAVE_OCAMLOPT ++DATA_HOOK_FILES += *.cmx *.cmxa ++endif ++ + OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX + OCAMLOPTFLAGS = $(OCAMLCFLAGS) + +-noinst_DATA = mlguestfs.cma mlguestfs.cmxa META ++noinst_DATA = META ++if HAVE_OCAMLOPT ++noinst_DATA += mlguestfs.cma ++noinst_DATA += mlguestfs.cmxa ++endif ++ ++guestfs_deps = guestfs.cmo ++if HAVE_OCAMLOPT ++guestfs_deps += guestfs.cmx ++endif + + # Build the C part into a library, so that automake handles the C + # compilation step for us. Note that we don't directly use this +@@ -55,13 +70,15 @@ CLEANFILES += stamp-mlguestfs + + mlguestfs.cma mlguestfs.cmxa: stamp-mlguestfs + +-stamp-mlguestfs: libguestfsocaml.a guestfs.cmo guestfs.cmx ++stamp-mlguestfs: libguestfsocaml.a $(guestfs_deps) + $(OCAMLMKLIB) -o mlguestfs \ + $(libguestfsocaml_a_OBJECTS) guestfs.cmo \ + -L$(top_builddir)/src/.libs -lguestfs ++if HAVE_OCAMLOPT + $(OCAMLMKLIB) -o mlguestfs \ + $(libguestfsocaml_a_OBJECTS) guestfs.cmx \ + -L$(top_builddir)/src/.libs -lguestfs ++endif + touch $@ + + libguestfsocaml_a_CPPFLAGS = \ +@@ -121,11 +138,16 @@ test_progs_opt += \ + t/guestfs_430_progress_messages.opt + endif + +-test_progs_all = $(test_progs_bc) $(test_progs_opt) ++test_progs_all = $(test_progs_bc) ++bindtests_all = bindtests.bc ++if HAVE_OCAMLOPT ++test_progs_all += $(test_progs_opt) ++bindtests_all += bindtests.opt ++endif + + TESTS = run-bindtests $(test_progs_all) + +-noinst_DATA += bindtests.bc bindtests.opt $(test_progs_all) ++noinst_DATA += $(bindtests_all) $(test_progs_all) + + %.bc: %.cmo mlguestfs.cma + $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ +@@ -171,7 +193,7 @@ install-data-hook: + $(OCAMLFIND) install \ + -ldconf ignore -destdir $(DESTDIR)$(OCAMLLIB) \ + guestfs \ +- META *.so *.a *.cma *.cmx *.cmxa *.cmi $(srcdir)/*.mli ++ $(DATA_HOOK_FILES) + rm $(DESTDIR)$(OCAMLLIB)/guestfs/bindtests.* + rm $(DESTDIR)$(OCAMLLIB)/guestfs/libguestfsocaml.a + +diff --git a/ocaml/examples/Makefile.am b/ocaml/examples/Makefile.am +index 200a0aa..3dadf03 100644 +--- a/ocaml/examples/Makefile.am ++++ b/ocaml/examples/Makefile.am +@@ -47,14 +47,35 @@ if HAVE_OCAML + + noinst_SCRIPTS = create_disk inspect_vm + ++if HAVE_OCAMLOPT ++FINAL_BINARY_create_disk = create_disk.opt ++FINAL_BINARY_inspect_vm = inspect_vm.opt ++else ++FINAL_BINARY_create_disk = create_disk.bc ++FINAL_BINARY_inspect_vm = inspect_vm.bc ++endif + OCAMLFINDFLAGS = -cclib -L$(top_builddir)/src/.libs + +-create_disk: create_disk.ml ++create_disk.bc: create_disk.ml ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLFINDFLAGS) -package unix -linkpkg \ ++ -custom \ ++ -warn-error A -I .. mlguestfs.cma $< -o $@ ++create_disk.opt: create_disk.ml + $(OCAMLFIND) ocamlopt $(OCAMLFINDFLAGS) -package unix -linkpkg \ + -warn-error A -I .. mlguestfs.cmxa $< -o $@ + +-inspect_vm: inspect_vm.ml ++inspect_vm.bc: inspect_vm.ml ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLFINDFLAGS) -package unix -linkpkg \ ++ -custom \ ++ -warn-error A -I .. mlguestfs.cma $< -o $@ ++inspect_vm.opt: inspect_vm.ml + $(OCAMLFIND) ocamlopt $(OCAMLFINDFLAGS) -package unix -linkpkg \ + -warn-error A -I .. mlguestfs.cmxa $< -o $@ + ++create_disk: $(FINAL_BINARY_create_disk) ++ cp -vf $< $@ ++inspect_vm: $(FINAL_BINARY_inspect_vm) ++ cp -vf $< $@ + endif +diff --git a/resize/Makefile.am b/resize/Makefile.am +index 76c26ee..b8a1209 100644 +--- a/resize/Makefile.am ++++ b/resize/Makefile.am +@@ -31,7 +31,23 @@ SOURCES = \ + if HAVE_OCAML + + # Note this list must be in dependency order. +-OBJECTS = \ ++OBJECTS_bc = \ ++ $(top_builddir)/mllib/tty-c.o \ ++ $(top_builddir)/mllib/tTY.cmo \ ++ $(top_builddir)/mllib/fsync-c.o \ ++ $(top_builddir)/mllib/fsync.cmo \ ++ $(top_builddir)/fish/guestfish-progress.o \ ++ $(top_builddir)/mllib/progress-c.o \ ++ $(top_builddir)/mllib/progress.cmo \ ++ $(top_builddir)/fish/guestfish-uri.o \ ++ $(top_builddir)/mllib/uri-c.o \ ++ $(top_builddir)/mllib/uRI.cmo \ ++ $(top_builddir)/mllib/common_gettext.cmo \ ++ $(top_builddir)/mllib/common_utils.cmo \ ++ $(top_builddir)/mllib/config.cmo \ ++ resize.cmo ++ ++OBJECTS_opt = \ + $(top_builddir)/mllib/tty-c.o \ + $(top_builddir)/mllib/tTY.cmx \ + $(top_builddir)/mllib/fsync-c.o \ +@@ -47,6 +63,12 @@ OBJECTS = \ + $(top_builddir)/mllib/config.cmx \ + resize.cmx + ++if HAVE_OCAMLOPT ++FINAL_BINARY = virt-resize.opt ++else ++FINAL_BINARY = virt-resize.bc ++endif ++ + bin_SCRIPTS = virt-resize + + # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L +@@ -54,7 +76,6 @@ bin_SCRIPTS = virt-resize + # installed copy of libguestfs. + OCAMLPACKAGES = \ + -package str,unix \ +- -I $(top_builddir)/src/.libs \ + -I $(top_builddir)/ocaml \ + -I $(top_builddir)/mllib + if HAVE_OCAML_PKG_GETTEXT +@@ -62,20 +83,34 @@ OCAMLPACKAGES += -package gettext-stub + endif + + OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) +-OCAMLOPTFLAGS = $(OCAMLCFLAGS) ++OCAMLOPTFLAGS = \ ++ -I $(top_builddir)/src/.libs \ ++ $(OCAMLCFLAGS) + + OCAMLCLIBS = \ + $(LIBXML2_LIBS) -lncurses \ + -L../src/.libs -lutils \ + -L../gnulib/lib/.libs -lgnu + +-virt-resize: $(OBJECTS) ++virt-resize.bc: $(OBJECTS_bc) ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ -custom \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '$(OCAMLCLIBS)' \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++ ++virt-resize.opt: $(OBJECTS_opt) + $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ + mlguestfs.cmxa -linkpkg $^ \ + -cclib '$(OCAMLCLIBS)' \ + $(OCAML_GCOV_LDFLAGS) \ + -o $@ + ++virt-resize: $(FINAL_BINARY) ++ cp -vf $< $@ ++ + .mli.cmi: + $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ + .ml.cmo: +diff --git a/sparsify/Makefile.am b/sparsify/Makefile.am +index 98d9c70..645eb11 100644 +--- a/sparsify/Makefile.am ++++ b/sparsify/Makefile.am +@@ -32,7 +32,19 @@ SOURCES = \ + if HAVE_OCAML + + # Note this list must be in dependency order. +-OBJECTS = \ ++OBJECTS_bc = \ ++ $(top_builddir)/fish/guestfish-progress.o \ ++ $(top_builddir)/mllib/tty-c.o \ ++ $(top_builddir)/mllib/progress-c.o \ ++ $(top_builddir)/mllib/common_gettext.cmo \ ++ $(top_builddir)/mllib/common_utils.cmo \ ++ $(top_builddir)/mllib/tTY.cmo \ ++ $(top_builddir)/mllib/progress.cmo \ ++ $(top_builddir)/mllib/config.cmo \ ++ statvfs-c.o \ ++ sparsify.cmo ++ ++OBJECTS_opt = \ + $(top_builddir)/fish/guestfish-progress.o \ + $(top_builddir)/mllib/tty-c.o \ + $(top_builddir)/mllib/progress-c.o \ +@@ -44,6 +56,12 @@ OBJECTS = \ + statvfs-c.o \ + sparsify.cmx + ++if HAVE_OCAMLOPT ++FINAL_BINARY = virt-sparsify.opt ++else ++FINAL_BINARY = virt-sparsify.bc ++endif ++ + bin_SCRIPTS = virt-sparsify + + # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L +@@ -51,7 +69,6 @@ bin_SCRIPTS = virt-sparsify + # installed copy of libguestfs. + OCAMLPACKAGES = \ + -package str,unix \ +- -I $(top_builddir)/src/.libs \ + -I $(top_builddir)/ocaml \ + -I $(top_builddir)/mllib + if HAVE_OCAML_PKG_GETTEXT +@@ -59,15 +76,29 @@ OCAMLPACKAGES += -package gettext-stub + endif + + OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) +-OCAMLOPTFLAGS = $(OCAMLCFLAGS) ++OCAMLOPTFLAGS = \ ++ -I $(top_builddir)/src/.libs \ ++ $(OCAMLCFLAGS) + +-virt-sparsify: $(OBJECTS) ++virt-sparsify.bc: $(OBJECTS_bc) ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ -custom \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib -lncurses \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++ ++virt-sparsify.opt: $(OBJECTS_opt) + $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ + mlguestfs.cmxa -linkpkg $^ \ + -cclib -lncurses \ + $(OCAML_GCOV_LDFLAGS) \ + -o $@ + ++virt-sparsify: $(FINAL_BINARY) ++ cp -vf $< $@ ++ + .mli.cmi: + $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ + .ml.cmo: +diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am +index 24654cb..cc9e958 100644 +--- a/sysprep/Makefile.am ++++ b/sysprep/Makefile.am +@@ -81,7 +81,25 @@ SOURCES = \ + if HAVE_OCAML + + # Note this list must be in dependency order. +-OBJECTS = \ ++OBJECTS_bc = \ ++ $(top_builddir)/mllib/common_gettext.cmo \ ++ $(top_builddir)/mllib/common_utils.cmo \ ++ $(top_builddir)/fish/guestfish-uri.o \ ++ $(top_builddir)/mllib/uri-c.o \ ++ $(top_builddir)/mllib/uRI.cmo \ ++ $(top_builddir)/mllib/crypt-c.o \ ++ $(top_builddir)/mllib/crypt.cmo \ ++ $(top_builddir)/mllib/urandom.cmo \ ++ $(top_builddir)/mllib/password.cmo \ ++ $(top_builddir)/mllib/random_seed.cmo \ ++ $(top_builddir)/mllib/hostname.cmo \ ++ $(top_builddir)/mllib/firstboot.cmo \ ++ $(top_builddir)/mllib/config.cmo \ ++ sysprep_operation.cmo \ ++ $(patsubst %,sysprep_operation_%.cmo,$(operations)) \ ++ main.cmo ++ ++OBJECTS_opt = \ + $(top_builddir)/mllib/common_gettext.cmx \ + $(top_builddir)/mllib/common_utils.cmx \ + $(top_builddir)/fish/guestfish-uri.o \ +@@ -99,6 +117,12 @@ OBJECTS = \ + $(patsubst %,sysprep_operation_%.cmx,$(operations)) \ + main.cmx + ++if HAVE_OCAMLOPT ++FINAL_BINARY = virt-sysprep.opt ++else ++FINAL_BINARY = virt-sysprep.bc ++endif ++ + bin_SCRIPTS = virt-sysprep + + # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L +@@ -121,13 +145,25 @@ OCAMLCLIBS = \ + -L../src/.libs -lutils \ + -L../gnulib/lib/.libs -lgnu + +-virt-sysprep: $(OBJECTS) ++virt-sysprep.bc: $(OBJECTS_bc) ++ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ ++ $(OCAMLFIND) ocamlc $(OCAMLOPTFLAGS) \ ++ -custom \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '$(OCAMLCLIBS)' \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++ ++virt-sysprep.opt: $(OBJECTS_opt) + $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ + mlguestfs.cmxa -linkpkg $^ \ + -cclib '$(OCAMLCLIBS)' \ + $(OCAML_GCOV_LDFLAGS) \ + -o $@ + ++virt-sysprep: $(FINAL_BINARY) ++ cp -vf $< $@ ++ + .mli.cmi: + $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ + .ml.cmo: diff --git a/libguestfs.changes b/libguestfs.changes index c57c156..567bbab 100644 --- a/libguestfs.changes +++ b/libguestfs.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Feb 27 13:40:20 CET 2014 - ohering@suse.de + +- Build without ocaml.opt on s390x and ppc64le + 0001-ocamlopt.patch + ------------------------------------------------------------------- Thu Feb 13 00:41:23 CET 2014 - ohering@suse.de diff --git a/libguestfs.spec b/libguestfs.spec index 3e45e55..bf9cc35 100644 --- a/libguestfs.spec +++ b/libguestfs.spec @@ -85,7 +85,7 @@ Release: 0 %ifarch ia64 %ix86 x86_64 %define kernel_binary /boot/vmlinuz %endif -%ifarch ppc ppc64 sparc64 +%ifarch ppc ppc64 ppc64le sparc64 %define kernel_binary /boot/vmlinux %endif %ifarch s390 s390x @@ -99,7 +99,7 @@ Release: 0 # Name: libguestfs %if "%{?_ignore_exclusive_arch}" == "" -ExclusiveArch: x86_64 ppc64 +ExclusiveArch: x86_64 ppc64 ppc64le s390x %endif BuildRequires: aaa_base BuildRequires: attr-devel @@ -134,9 +134,6 @@ BuildRequires: readline-devel # Required to build tools, its independent from bindings BuildRequires: ocaml BuildRequires: ocaml-findlib -%if %suse_version > 1310 -BuildRequires: ocaml(ocaml.opt) -%endif %define _configure_ocaml --enable-ocaml %endif # @@ -155,6 +152,7 @@ Summary: Compatibility package for guestfs-tools License: GPL-2.0 Group: System/Filesystems Patch1000: 1000-force-virtio_blk-in-old-guest-kernel.patch +Patch1: 0001-ocamlopt.patch Source0: %{name}-%{version}.tar.xz Source42: libguestfs.mkinitrd.tar.bz2 Source789653: Pod-Simple-3.23.tar.xz @@ -462,6 +460,7 @@ virtual machines. %prep : _ignore_exclusive_arch '%{?_ignore_exclusive_arch}' %setup -q -a 789653 -a 42 +%patch1 -p1 %patch1000 -p1 %build From d2d5635662358debe45430d041501e47f529be39711223e9e238ac21cb42b8f6 Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Fri, 28 Feb 2014 15:26:04 +0000 Subject: [PATCH 2/2] use backport of upstream commit f75142c577255b30f2a8e1d27baa5fd185594197 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libguestfs?expand=0&rev=279 --- 0001-ocamlopt.patch | 541 +++++++++++++++++--------------------------- 1 file changed, 203 insertions(+), 338 deletions(-) diff --git a/0001-ocamlopt.patch b/0001-ocamlopt.patch index 6dd116c..b37cb39 100644 --- a/0001-ocamlopt.patch +++ b/0001-ocamlopt.patch @@ -1,111 +1,71 @@ -From bf074c1343edec1c85079157e9877f79d85c376c Mon Sep 17 00:00:00 2001 +From 26cb4963efe2345f5dcbb16e66b127012dd5289a Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Wed, 26 Feb 2014 11:08:36 +0100 Subject: ocamlopt Signed-off-by: Olaf Hering --- - builder/Makefile.am | 50 ++++++++++++++++++++++++++++++++++++++---- + builder/Makefile.am | 18 +++++++++++++++- configure.ac | 2 ++ - mllib/Makefile.am | 54 ++++++++++++++++++++++++++++++++++++++++++---- - ocaml/Makefile.am | 32 ++++++++++++++++++++++----- - ocaml/examples/Makefile.am | 25 +++++++++++++++++++-- - resize/Makefile.am | 43 ++++++++++++++++++++++++++++++++---- - sparsify/Makefile.am | 39 +++++++++++++++++++++++++++++---- - sysprep/Makefile.am | 40 ++++++++++++++++++++++++++++++++-- - 8 files changed, 260 insertions(+), 25 deletions(-) + mllib/Makefile.am | 54 ++++++++++++++++++++++++++++++++-------------- + ocaml/Makefile.am | 35 +++++++++++++++++++++--------- + ocaml/examples/Makefile.am | 13 +++++++++++ + resize/Makefile.am | 18 +++++++++++++++- + sparsify/Makefile.am | 18 +++++++++++++++- + sysprep/Makefile.am | 18 +++++++++++++++- + 8 files changed, 146 insertions(+), 30 deletions(-) diff --git a/builder/Makefile.am b/builder/Makefile.am -index b8bf6ac..83ef46b 100644 +index b8bf6ac..80646c1 100644 --- a/builder/Makefile.am +++ b/builder/Makefile.am -@@ -43,7 +43,30 @@ SOURCES = \ +@@ -43,7 +43,7 @@ SOURCES = \ if HAVE_OCAML # Note this list must be in dependency order. -OBJECTS = \ -+OBJECTS_bc = \ -+ $(top_builddir)/mllib/libdir.cmo \ -+ $(top_builddir)/mllib/common_gettext.cmo \ -+ $(top_builddir)/mllib/common_utils.cmo \ -+ $(top_builddir)/mllib/urandom.cmo \ -+ $(top_builddir)/mllib/random_seed.cmo \ -+ $(top_builddir)/mllib/hostname.cmo \ -+ $(top_builddir)/mllib/firstboot.cmo \ -+ $(top_builddir)/mllib/perl_edit.cmo \ -+ $(top_builddir)/mllib/crypt-c.o \ -+ $(top_builddir)/mllib/crypt.cmo \ -+ $(top_builddir)/mllib/fsync-c.o \ -+ $(top_builddir)/mllib/fsync.cmo \ -+ $(top_builddir)/mllib/password.cmo \ -+ $(top_builddir)/mllib/config.cmo \ -+ get_kernel.cmo \ -+ downloader.cmo \ -+ sigchecker.cmo \ -+ index_parser.cmo \ -+ list_entries.cmo \ -+ cmdline.cmo \ -+ builder.cmo -+ -+OBJECTS_opt = \ ++deps = \ $(top_builddir)/mllib/libdir.cmx \ $(top_builddir)/mllib/common_gettext.cmx \ $(top_builddir)/mllib/common_utils.cmx \ -@@ -66,6 +89,12 @@ OBJECTS = \ +@@ -66,6 +66,12 @@ OBJECTS = \ cmdline.cmx \ builder.cmx +if HAVE_OCAMLOPT -+FINAL_BINARY = virt-builder.opt ++OBJECTS = $(deps) +else -+FINAL_BINARY = virt-builder.bc ++OBJECTS = $(patsubst %.cmx,%.cmo,$(deps)) +endif + bin_SCRIPTS = virt-builder # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L -@@ -73,7 +102,6 @@ bin_SCRIPTS = virt-builder - # installed copy of libguestfs. - OCAMLPACKAGES = \ - -package str,unix \ -- -I $(top_builddir)/src/.libs \ - -I $(top_builddir)/ocaml \ - -I $(top_builddir)/mllib - if HAVE_OCAML_PKG_GETTEXT -@@ -81,15 +109,29 @@ OCAMLPACKAGES += -package gettext-stub - endif - +@@ -83,12 +89,22 @@ endif OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) --OCAMLOPTFLAGS = $(OCAMLCFLAGS) -+OCAMLOPTFLAGS = \ -+ -I $(top_builddir)/src/.libs \ -+ $(OCAMLCFLAGS) + OCAMLOPTFLAGS = $(OCAMLCFLAGS) --virt-builder: $(OBJECTS) -+virt-builder.bc: $(OBJECTS_bc) -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ -+ -custom \ -+ mlguestfs.cma -linkpkg $^ \ -+ -cclib '-lncurses -lcrypt' \ -+ $(OCAML_GCOV_LDFLAGS) \ -+ -o $@ -+ -+virt-builder.opt: $(OBJECTS_opt) ++if HAVE_OCAMLOPT + virt-builder: $(OBJECTS) $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ mlguestfs.cmxa -linkpkg $^ \ -cclib '-lncurses -lcrypt' \ $(OCAML_GCOV_LDFLAGS) \ -o $@ ++else ++virt-builder: $(OBJECTS) ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '-lncurses -lcrypt' \ ++ -custom \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++endif -+virt-builder: $(FINAL_BINARY) -+ cp -vf $< $@ -+ .mli.cmi: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ - .ml.cmo: diff --git a/configure.ac b/configure.ac -index d7430db..d0063e8 100644 +index d7430db..e57bbf7 100644 --- a/configure.ac +++ b/configure.ac @@ -1024,6 +1024,8 @@ AS_IF([test "x$enable_ocaml" != "xno"],[ @@ -113,114 +73,113 @@ index d7430db..d0063e8 100644 AM_CONDITIONAL([HAVE_OCAML], [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) +AM_CONDITIONAL([HAVE_OCAMLOPT], -+ [test "x$OCAMLOPT" != "xno" && test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) ++ [test "x$OCAMLOPT" != "xno" && test "x$OCAMLFIND" != "xno"]) AM_CONDITIONAL([HAVE_OCAMLDOC], [test "x$OCAMLDOC" != "xno"]) diff --git a/mllib/Makefile.am b/mllib/Makefile.am -index 8c8d508..4312283 100644 +index 8c8d508..a685310 100644 --- a/mllib/Makefile.am +++ b/mllib/Makefile.am -@@ -62,7 +62,31 @@ if HAVE_OCAML +@@ -62,6 +62,22 @@ if HAVE_OCAML # - We're not actually building a functioning program here, we're just # linking everything together to check all the modules build OK. # - This list must be in dependency order. --OBJECTS = \ -+OBJECTS_bc = \ -+ $(top_builddir)/fish/guestfish-progress.o \ -+ $(top_builddir)/fish/guestfish-uri.o \ -+ tty-c.o \ -+ fsync-c.o \ -+ progress-c.o \ -+ uri-c.o \ -+ crypt-c.o \ -+ config.cmo \ -+ libdir.cmo \ -+ common_gettext.cmo \ -+ common_utils.cmo \ -+ urandom.cmo \ -+ random_seed.cmo \ -+ hostname.cmo \ -+ firstboot.cmo \ -+ perl_edit.cmo \ -+ tTY.cmo \ -+ fsync.cmo \ -+ progress.cmo \ -+ uRI.cmo \ -+ crypt.cmo \ -+ password.cmo ++ocaml_modules = config \ ++ libdir \ ++ common_gettext \ ++ common_utils \ ++ urandom \ ++ random_seed \ ++ hostname \ ++ firstboot \ ++ perl_edit \ ++ tTY \ ++ fsync \ ++ progress \ ++ uRI \ ++ crypt \ ++ password + -+OBJECTS_opt = \ + OBJECTS = \ $(top_builddir)/fish/guestfish-progress.o \ $(top_builddir)/fish/guestfish-uri.o \ - tty-c.o \ -@@ -86,31 +110,53 @@ OBJECTS = \ - crypt.cmx \ - password.cmx - +@@ -69,22 +85,13 @@ OBJECTS = \ + fsync-c.o \ + progress-c.o \ + uri-c.o \ +- crypt-c.o \ +- config.cmx \ +- libdir.cmx \ +- common_gettext.cmx \ +- common_utils.cmx \ +- urandom.cmx \ +- random_seed.cmx \ +- hostname.cmx \ +- firstboot.cmx \ +- perl_edit.cmx \ +- tTY.cmx \ +- fsync.cmx \ +- progress.cmx \ +- uRI.cmx \ +- crypt.cmx \ +- password.cmx ++ crypt-c.o ++ +if HAVE_OCAMLOPT -+FINAL_BINARY = dummy.opt ++OBJECTS += $(patsubst %,%.cmx,$(ocaml_modules)) +else -+FINAL_BINARY = dummy.bc ++OBJECTS += $(patsubst %,%.cmo,$(ocaml_modules)) +endif + noinst_SCRIPTS = dummy - # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L - # option to be passed to gcc, so we don't try linking against an - # installed copy of libguestfs. --OCAMLPACKAGES = -package str,unix -I $(top_builddir)/src/.libs -I ../ocaml -+OCAMLPACKAGES = \ -+ -package str,unix \ -+ -I $(top_builddir)/ocaml -+ - if HAVE_OCAML_PKG_GETTEXT - OCAMLPACKAGES += -package gettext-stub - endif - - OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) --OCAMLOPTFLAGS = $(OCAMLCFLAGS) -+OCAMLOPTFLAGS = \ -+ -I $(top_builddir)/src/.libs \ -+ $(OCAMLCFLAGS) - - OCAMLCLIBS = \ - $(LIBXML2_LIBS) -lncurses -lcrypt \ - -L../src/.libs -lutils \ +@@ -105,11 +112,20 @@ OCAMLCLIBS = \ -L../gnulib/lib/.libs -lgnu --dummy: $(OBJECTS) -+dummy.bc: $(OBJECTS_bc) -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ -+ -custom \ -+ mlguestfs.cma -linkpkg $^ \ -+ -cclib '$(OCAMLCLIBS)' \ -+ $(OCAML_GCOV_LDFLAGS) \ -+ -o $@ -+ -+dummy.opt: $(OBJECTS_opt) + dummy: $(OBJECTS) ++if HAVE_OCAMLOPT $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ mlguestfs.cmxa -linkpkg $^ \ -cclib '$(OCAMLCLIBS)' \ $(OCAML_GCOV_LDFLAGS) \ -o $@ ++else ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '$(OCAMLCLIBS)' \ ++ -custom \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++endif -+dummy: $(FINAL_BINARY) -+ cp -vf $< $@ -+ .mli.cmi: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ - .ml.cmo: +@@ -142,9 +158,15 @@ DEFAULT_INCLUDES = \ + + check_SCRIPTS = common_utils_tests + ++if HAVE_OCAMLOPT + common_utils_tests: common_gettext.cmx common_utils.cmx common_utils_tests.cmx + $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ + mlguestfs.cmxa -linkpkg $^ -cclib -lncurses -o $@ ++else ++common_utils_tests: common_gettext.cmo common_utils.cmo common_utils_tests.cmo ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ mlguestfs.cma -linkpkg $^ -cclib -lncurses -o $@ ++endif + + TESTS_ENVIRONMENT = $(top_builddir)/run --test + diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am -index 5dd2c9b..43e0c59 100644 +index 5dd2c9b..698e13a 100644 --- a/ocaml/Makefile.am +++ b/ocaml/Makefile.am -@@ -37,10 +37,25 @@ CLEANFILES += t/*.cmi t/*.cmo t/*.cmx t/*.o t/*.a t/*.so +@@ -37,10 +37,18 @@ CLEANFILES += t/*.cmi t/*.cmo t/*.cmx t/*.o t/*.a t/*.so if HAVE_OCAML -+DATA_HOOK_FILES = META *.so *.a *.cma \ -+ *.cmi $(srcdir)/*.mli ++DATA_HOOK_FILES = META *.so *.a *.cma *.cmi $(srcdir)/*.mli +if HAVE_OCAMLOPT +DATA_HOOK_FILES += *.cmx *.cmxa +endif @@ -229,56 +188,56 @@ index 5dd2c9b..43e0c59 100644 OCAMLOPTFLAGS = $(OCAMLCFLAGS) -noinst_DATA = mlguestfs.cma mlguestfs.cmxa META -+noinst_DATA = META ++noinst_DATA = mlguestfs.cma META +if HAVE_OCAMLOPT -+noinst_DATA += mlguestfs.cma -+noinst_DATA += mlguestfs.cmxa -+endif -+ -+guestfs_deps = guestfs.cmo -+if HAVE_OCAMLOPT -+guestfs_deps += guestfs.cmx ++noinst_DATA += mlguestfs.cmxa +endif # Build the C part into a library, so that automake handles the C # compilation step for us. Note that we don't directly use this -@@ -55,13 +70,15 @@ CLEANFILES += stamp-mlguestfs - - mlguestfs.cma mlguestfs.cmxa: stamp-mlguestfs +@@ -51,18 +59,15 @@ noinst_LIBRARIES = libguestfsocaml.a + # 'libmlguestfs.a' and if run at the same time, they will stomp on or + # corrupt each others copy. Hence we have to serialize the calls. +-CLEANFILES += stamp-mlguestfs +- +-mlguestfs.cma mlguestfs.cmxa: stamp-mlguestfs +- -stamp-mlguestfs: libguestfsocaml.a guestfs.cmo guestfs.cmx -+stamp-mlguestfs: libguestfsocaml.a $(guestfs_deps) ++mlguestfs.cma: libguestfsocaml.a guestfs.cmo $(OCAMLMKLIB) -o mlguestfs \ $(libguestfsocaml_a_OBJECTS) guestfs.cmo \ -L$(top_builddir)/src/.libs -lguestfs -+if HAVE_OCAMLOPT ++ ++mlguestfs.cmxa: libguestfsocaml.a guestfs.cmx $(OCAMLMKLIB) -o mlguestfs \ $(libguestfsocaml_a_OBJECTS) guestfs.cmx \ -L$(top_builddir)/src/.libs -lguestfs -+endif - touch $@ +- touch $@ libguestfsocaml_a_CPPFLAGS = \ -@@ -121,11 +138,16 @@ test_progs_opt += \ + -DGUESTFS_PRIVATE=1 \ +@@ -121,11 +126,17 @@ test_progs_opt += \ t/guestfs_430_progress_messages.opt endif -test_progs_all = $(test_progs_bc) $(test_progs_opt) +test_progs_all = $(test_progs_bc) -+bindtests_all = bindtests.bc +if HAVE_OCAMLOPT +test_progs_all += $(test_progs_opt) -+bindtests_all += bindtests.opt +endif TESTS = run-bindtests $(test_progs_all) -noinst_DATA += bindtests.bc bindtests.opt $(test_progs_all) -+noinst_DATA += $(bindtests_all) $(test_progs_all) ++noinst_DATA += bindtests.bc $(test_progs_all) ++if HAVE_OCAMLOPT ++noinst_DATA += bindtests.opt ++endif %.bc: %.cmo mlguestfs.cma $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -@@ -171,7 +193,7 @@ install-data-hook: +@@ -171,10 +182,14 @@ install-data-hook: $(OCAMLFIND) install \ -ldconf ignore -destdir $(DESTDIR)$(OCAMLLIB) \ guestfs \ @@ -287,281 +246,187 @@ index 5dd2c9b..43e0c59 100644 rm $(DESTDIR)$(OCAMLLIB)/guestfs/bindtests.* rm $(DESTDIR)$(OCAMLLIB)/guestfs/libguestfsocaml.a + CLEANFILES += $(noinst_DATA) + + endif ++ ++# Tell version 3.79 and up of GNU make to not build goals in this ++# directory in parallel. ++.NOTPARALLEL: diff --git a/ocaml/examples/Makefile.am b/ocaml/examples/Makefile.am -index 200a0aa..3dadf03 100644 +index 200a0aa..472e180 100644 --- a/ocaml/examples/Makefile.am +++ b/ocaml/examples/Makefile.am -@@ -47,14 +47,35 @@ if HAVE_OCAML +@@ -49,6 +49,7 @@ noinst_SCRIPTS = create_disk inspect_vm - noinst_SCRIPTS = create_disk inspect_vm - -+if HAVE_OCAMLOPT -+FINAL_BINARY_create_disk = create_disk.opt -+FINAL_BINARY_inspect_vm = inspect_vm.opt -+else -+FINAL_BINARY_create_disk = create_disk.bc -+FINAL_BINARY_inspect_vm = inspect_vm.bc -+endif OCAMLFINDFLAGS = -cclib -L$(top_builddir)/src/.libs --create_disk: create_disk.ml -+create_disk.bc: create_disk.ml -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLFINDFLAGS) -package unix -linkpkg \ -+ -custom \ -+ -warn-error A -I .. mlguestfs.cma $< -o $@ -+create_disk.opt: create_disk.ml ++if HAVE_OCAMLOPT + create_disk: create_disk.ml $(OCAMLFIND) ocamlopt $(OCAMLFINDFLAGS) -package unix -linkpkg \ -warn-error A -I .. mlguestfs.cmxa $< -o $@ - --inspect_vm: inspect_vm.ml -+inspect_vm.bc: inspect_vm.ml -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLFINDFLAGS) -package unix -linkpkg \ -+ -custom \ -+ -warn-error A -I .. mlguestfs.cma $< -o $@ -+inspect_vm.opt: inspect_vm.ml +@@ -56,5 +57,17 @@ create_disk: create_disk.ml + inspect_vm: inspect_vm.ml $(OCAMLFIND) ocamlopt $(OCAMLFINDFLAGS) -package unix -linkpkg \ -warn-error A -I .. mlguestfs.cmxa $< -o $@ ++else ++ ++# This avoids: ++# Error: Error on dynamically loaded library: ../dllmlguestfs.so: libguestfs.so.0: cannot open shared object file: No such file or directory ++create_disk: create_disk.ml ++ $(top_builddir)/run $(OCAMLFIND) ocamlc $(OCAMLFINDFLAGS) -package unix -linkpkg \ ++ -warn-error A -I .. mlguestfs.cma $< -o $@ ++ ++inspect_vm: inspect_vm.ml ++ $(top_builddir)/run $(OCAMLFIND) ocamlc $(OCAMLFINDFLAGS) -package unix -linkpkg \ ++ -warn-error A -I .. mlguestfs.cma $< -o $@ ++endif -+create_disk: $(FINAL_BINARY_create_disk) -+ cp -vf $< $@ -+inspect_vm: $(FINAL_BINARY_inspect_vm) -+ cp -vf $< $@ endif diff --git a/resize/Makefile.am b/resize/Makefile.am -index 76c26ee..b8a1209 100644 +index 76c26ee..ef35bf9 100644 --- a/resize/Makefile.am +++ b/resize/Makefile.am -@@ -31,7 +31,23 @@ SOURCES = \ +@@ -31,7 +31,7 @@ SOURCES = \ if HAVE_OCAML # Note this list must be in dependency order. -OBJECTS = \ -+OBJECTS_bc = \ -+ $(top_builddir)/mllib/tty-c.o \ -+ $(top_builddir)/mllib/tTY.cmo \ -+ $(top_builddir)/mllib/fsync-c.o \ -+ $(top_builddir)/mllib/fsync.cmo \ -+ $(top_builddir)/fish/guestfish-progress.o \ -+ $(top_builddir)/mllib/progress-c.o \ -+ $(top_builddir)/mllib/progress.cmo \ -+ $(top_builddir)/fish/guestfish-uri.o \ -+ $(top_builddir)/mllib/uri-c.o \ -+ $(top_builddir)/mllib/uRI.cmo \ -+ $(top_builddir)/mllib/common_gettext.cmo \ -+ $(top_builddir)/mllib/common_utils.cmo \ -+ $(top_builddir)/mllib/config.cmo \ -+ resize.cmo -+ -+OBJECTS_opt = \ ++deps = \ $(top_builddir)/mllib/tty-c.o \ $(top_builddir)/mllib/tTY.cmx \ $(top_builddir)/mllib/fsync-c.o \ -@@ -47,6 +63,12 @@ OBJECTS = \ +@@ -47,6 +47,12 @@ OBJECTS = \ $(top_builddir)/mllib/config.cmx \ resize.cmx +if HAVE_OCAMLOPT -+FINAL_BINARY = virt-resize.opt ++OBJECTS = $(deps) +else -+FINAL_BINARY = virt-resize.bc ++OBJECTS = $(patsubst %.cmx,%.cmo,$(deps)) +endif + bin_SCRIPTS = virt-resize # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L -@@ -54,7 +76,6 @@ bin_SCRIPTS = virt-resize - # installed copy of libguestfs. - OCAMLPACKAGES = \ - -package str,unix \ -- -I $(top_builddir)/src/.libs \ - -I $(top_builddir)/ocaml \ - -I $(top_builddir)/mllib - if HAVE_OCAML_PKG_GETTEXT -@@ -62,20 +83,34 @@ OCAMLPACKAGES += -package gettext-stub - endif - - OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) --OCAMLOPTFLAGS = $(OCAMLCFLAGS) -+OCAMLOPTFLAGS = \ -+ -I $(top_builddir)/src/.libs \ -+ $(OCAMLCFLAGS) - - OCAMLCLIBS = \ - $(LIBXML2_LIBS) -lncurses \ +@@ -69,12 +75,22 @@ OCAMLCLIBS = \ -L../src/.libs -lutils \ -L../gnulib/lib/.libs -lgnu --virt-resize: $(OBJECTS) -+virt-resize.bc: $(OBJECTS_bc) -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ -+ -custom \ -+ mlguestfs.cma -linkpkg $^ \ -+ -cclib '$(OCAMLCLIBS)' \ -+ $(OCAML_GCOV_LDFLAGS) \ -+ -o $@ -+ -+virt-resize.opt: $(OBJECTS_opt) ++if HAVE_OCAMLOPT + virt-resize: $(OBJECTS) $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ mlguestfs.cmxa -linkpkg $^ \ -cclib '$(OCAMLCLIBS)' \ $(OCAML_GCOV_LDFLAGS) \ -o $@ ++else ++virt-resize: $(OBJECTS) ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '$(OCAMLCLIBS)' \ ++ -custom \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++endif -+virt-resize: $(FINAL_BINARY) -+ cp -vf $< $@ -+ .mli.cmi: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ - .ml.cmo: diff --git a/sparsify/Makefile.am b/sparsify/Makefile.am -index 98d9c70..645eb11 100644 +index 98d9c70..bf6caf0 100644 --- a/sparsify/Makefile.am +++ b/sparsify/Makefile.am -@@ -32,7 +32,19 @@ SOURCES = \ +@@ -32,7 +32,7 @@ SOURCES = \ if HAVE_OCAML # Note this list must be in dependency order. -OBJECTS = \ -+OBJECTS_bc = \ -+ $(top_builddir)/fish/guestfish-progress.o \ -+ $(top_builddir)/mllib/tty-c.o \ -+ $(top_builddir)/mllib/progress-c.o \ -+ $(top_builddir)/mllib/common_gettext.cmo \ -+ $(top_builddir)/mllib/common_utils.cmo \ -+ $(top_builddir)/mllib/tTY.cmo \ -+ $(top_builddir)/mllib/progress.cmo \ -+ $(top_builddir)/mllib/config.cmo \ -+ statvfs-c.o \ -+ sparsify.cmo -+ -+OBJECTS_opt = \ ++deps = \ $(top_builddir)/fish/guestfish-progress.o \ $(top_builddir)/mllib/tty-c.o \ $(top_builddir)/mllib/progress-c.o \ -@@ -44,6 +56,12 @@ OBJECTS = \ +@@ -44,6 +44,12 @@ OBJECTS = \ statvfs-c.o \ sparsify.cmx +if HAVE_OCAMLOPT -+FINAL_BINARY = virt-sparsify.opt ++OBJECTS = $(deps) +else -+FINAL_BINARY = virt-sparsify.bc ++OBJECTS = $(patsubst %.cmx,%.cmo,$(deps)) +endif + bin_SCRIPTS = virt-sparsify # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L -@@ -51,7 +69,6 @@ bin_SCRIPTS = virt-sparsify - # installed copy of libguestfs. - OCAMLPACKAGES = \ - -package str,unix \ -- -I $(top_builddir)/src/.libs \ - -I $(top_builddir)/ocaml \ - -I $(top_builddir)/mllib - if HAVE_OCAML_PKG_GETTEXT -@@ -59,15 +76,29 @@ OCAMLPACKAGES += -package gettext-stub - endif - +@@ -61,12 +67,22 @@ endif OCAMLCFLAGS = -g -warn-error CDEFLMPSUVYZX $(OCAMLPACKAGES) --OCAMLOPTFLAGS = $(OCAMLCFLAGS) -+OCAMLOPTFLAGS = \ -+ -I $(top_builddir)/src/.libs \ -+ $(OCAMLCFLAGS) + OCAMLOPTFLAGS = $(OCAMLCFLAGS) --virt-sparsify: $(OBJECTS) -+virt-sparsify.bc: $(OBJECTS_bc) -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ -+ -custom \ -+ mlguestfs.cma -linkpkg $^ \ -+ -cclib -lncurses \ -+ $(OCAML_GCOV_LDFLAGS) \ -+ -o $@ -+ -+virt-sparsify.opt: $(OBJECTS_opt) ++if HAVE_OCAMLOPT + virt-sparsify: $(OBJECTS) $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ mlguestfs.cmxa -linkpkg $^ \ -cclib -lncurses \ $(OCAML_GCOV_LDFLAGS) \ -o $@ ++else ++virt-sparsify: $(OBJECTS) ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib -lncurses \ ++ -custom \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++endif -+virt-sparsify: $(FINAL_BINARY) -+ cp -vf $< $@ -+ .mli.cmi: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ - .ml.cmo: diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am -index 24654cb..cc9e958 100644 +index 24654cb..352735b 100644 --- a/sysprep/Makefile.am +++ b/sysprep/Makefile.am -@@ -81,7 +81,25 @@ SOURCES = \ +@@ -81,7 +81,7 @@ SOURCES = \ if HAVE_OCAML # Note this list must be in dependency order. -OBJECTS = \ -+OBJECTS_bc = \ -+ $(top_builddir)/mllib/common_gettext.cmo \ -+ $(top_builddir)/mllib/common_utils.cmo \ -+ $(top_builddir)/fish/guestfish-uri.o \ -+ $(top_builddir)/mllib/uri-c.o \ -+ $(top_builddir)/mllib/uRI.cmo \ -+ $(top_builddir)/mllib/crypt-c.o \ -+ $(top_builddir)/mllib/crypt.cmo \ -+ $(top_builddir)/mllib/urandom.cmo \ -+ $(top_builddir)/mllib/password.cmo \ -+ $(top_builddir)/mllib/random_seed.cmo \ -+ $(top_builddir)/mllib/hostname.cmo \ -+ $(top_builddir)/mllib/firstboot.cmo \ -+ $(top_builddir)/mllib/config.cmo \ -+ sysprep_operation.cmo \ -+ $(patsubst %,sysprep_operation_%.cmo,$(operations)) \ -+ main.cmo -+ -+OBJECTS_opt = \ ++deps = \ $(top_builddir)/mllib/common_gettext.cmx \ $(top_builddir)/mllib/common_utils.cmx \ $(top_builddir)/fish/guestfish-uri.o \ -@@ -99,6 +117,12 @@ OBJECTS = \ +@@ -99,6 +99,12 @@ OBJECTS = \ $(patsubst %,sysprep_operation_%.cmx,$(operations)) \ main.cmx +if HAVE_OCAMLOPT -+FINAL_BINARY = virt-sysprep.opt ++OBJECTS = $(deps) +else -+FINAL_BINARY = virt-sysprep.bc ++OBJECTS = $(patsubst %.cmx,%.cmo,$(deps)) +endif + bin_SCRIPTS = virt-sysprep # -I $(top_builddir)/src/.libs is a hack which forces corresponding -L -@@ -121,13 +145,25 @@ OCAMLCLIBS = \ +@@ -121,12 +127,22 @@ OCAMLCLIBS = \ -L../src/.libs -lutils \ -L../gnulib/lib/.libs -lgnu --virt-sysprep: $(OBJECTS) -+virt-sysprep.bc: $(OBJECTS_bc) -+ $(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute \ -+ $(OCAMLFIND) ocamlc $(OCAMLOPTFLAGS) \ -+ -custom \ -+ mlguestfs.cma -linkpkg $^ \ -+ -cclib '$(OCAMLCLIBS)' \ -+ $(OCAML_GCOV_LDFLAGS) \ -+ -o $@ -+ -+virt-sysprep.opt: $(OBJECTS_opt) ++if HAVE_OCAMLOPT + virt-sysprep: $(OBJECTS) $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \ mlguestfs.cmxa -linkpkg $^ \ -cclib '$(OCAMLCLIBS)' \ $(OCAML_GCOV_LDFLAGS) \ -o $@ ++else ++virt-sysprep: $(OBJECTS) ++ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \ ++ mlguestfs.cma -linkpkg $^ \ ++ -cclib '$(OCAMLCLIBS)' \ ++ -custom \ ++ $(OCAML_GCOV_LDFLAGS) \ ++ -o $@ ++endif -+virt-sysprep: $(FINAL_BINARY) -+ cp -vf $< $@ -+ .mli.cmi: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@ - .ml.cmo: