Facing issue while building "libguestfs- 1.36.10" on RHEL - 6 server. Steps to Reproduce: we are using below build steps to build libguestfs ******************************************************************************* %configure --disable-appliance --disable-daemon --without-libvirt --with-qemu="qemu-kvm qemu-system-x86_64 qemu" --enable-python --prefix=%{_prefix} --with-python-installdir=%{_libdir64}/python3.5/site-packages make %{?_smp_mflags} make install DESTDIR=$RPM_BUILD_ROOT ******************************************************************************* Actual results: ******************************************************************************* CC ../common/visit/libmllib_a-visit.o CC ../common/options/libmllib_a-decrypt.o CC ../common/options/libmllib_a-keys.o CC ../common/options/libmllib_a-uri.o CC ../common/progress/libmllib_a-progress.o OCAMLOPT stringMap.cmx OCAMLOPT getopt.cmx OCAMLOPT unix_utils.cmx OCAMLOPT progress.cmx OCAMLOPT URI.cmx OCAMLOPT visit.cmx OCAMLOPT planner.cmx OCAMLCMI regedit.cmi OCAMLOPT JSON.cmx OCAMLCMI xpath_helpers.cmi OCAMLOPT common_utils.cmx /tmp/camlasmc0ac26.s: Assembler messages: /tmp/camlasmc0ac26.s: Error: .size expression for camlCommon_utils__human_size_593 does not evaluate to a constant /tmp/camlasmc0ac26.s: Error: .size expression for camlCommon_utils__size_scaled_586 does not evaluate to a constant /tmp/camlasmc0ac26.s: Error: .size expression for camlCommon_utils__size_scaled_571 does not evaluate to a constant /tmp/camlasmc0ac26.s: Error: .size expression for camlCommon_utils__fun_1268 does not evaluate to a constant File "common_utils.ml", line 1, characters 0-1: Error: Assembler error, input left in file /tmp/camlasmc0ac26.s make[2]: *** [common_utils.cmx] Error 2 make[2]: Leaving directory `/root/rpmbuild/BUILD/libguestfs-1.36.10/mllib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/rpmbuild/BUILD/libguestfs-1.36.10' make: *** [all] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.Zn51EF (%build) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.Zn51EF (%build) ******************************************************************************* Expected results: 1. Our request is to build and install libguestfs - 1.36.10 on RHEL6 servers. So we have tried to build the same with above mentioned build steps but facing some issue which is related to Ocaml. Please find below installed version of ocaml in our server [ default version provided by RedHat repository ] [root@abinaya-libguest-r6 ~]$ rpm -qa | grep ocaml ocaml-runtime-3.11.2-5.el6.x86_64 ocaml-findlib-1.2.5-5.el6.x86_64 ocaml-hivex-1.3.3-4.3.el6.x86_64 ocaml-3.11.2-5.el6.x86_64 As per my understanding this libguestfs - 1.36.10 needs ocaml 3.12 and higher but still i couldn't get any official doc for the dependencies. Additional info: We have done successful build on RHEL7 now the issue is only on RHEL6. Please let us know some workaround for this issue. Thanks in Advance!.
The requirements are documented here: http://libguestfs.org/guestfs-building.1.html#full-list-of-requirements OCaml 4.01 is required now so it's going to be some effort to make this work on RHEL 6. You may have more luck going back a few releases. For example libguestfs 1.36 requires OCaml 3.11.
OK, I misread the subject line. Anyway yes it should work, it's a strange compiler error. Could you capture the assembly file?
It's probably the same as this bug: https://bugzilla.redhat.com/show_bug.cgi?id=691896 It requires a small OCaml compiler patch.
Hi Richard, Thanks for the update. So if my understand correct you are suggesting us to apply some patch on libguestfs 1.36.10 to fix the ocaml issue. Am I right?
No, you have to patch the OCaml compiler. Please read bug 691896 in detail.
Hi Richard, As per my understanding the patch which all are mentioned in (https://bugzilla.redhat.com/show_bug.cgi?id=691896) for Fedora ocaml 3.12. On our case the issue is in RedHat 6 ocaml, the version is 3.11. Can you please confirm, do we have the patch for RedHat 6 Ocaml-3.11.
Yes you will need to backport this patch: http://caml.inria.fr/cgi-bin/viewvc.cgi?diff_format=u&view=revision&revision=10981 (same as https://github.com/ocaml/ocaml/commit/80384c6d8401cdd897e7ff4c75a7a7b1a12b5585 ) to OCaml in RHEL 6.
Hi Richard, Thanks for the update. As per your suggestion we have build ocaml with your patch and now issue seems different. ********************************************************************************************************************************** ocamlfind mklib -package str,unix -I ../common/utils/.libs -I ../lib/.libs -I ../gnulib/lib/.libs -I ../ocaml -I . \ guestfs_config.cmx ../mllib/bytes.cmx stringMap.cmx common_gettext.cmx getopt.cmx unix_utils.cmx common_utils.cmx progress.cmx URI.cmx visit.cmx planner.cmx registry.cmx regedit.cmx JSON.cmx curl.cmx checksums.cmx xml.cmx xpath_helpers.cmx ../common/visit/libmllib_a-visit.o ../common/options/libmllib_a-decrypt.o ../common/options/libmllib_a-keys.o ../common/options/libmllib_a-uri.o ../common/progress/libmllib_a-progress.o libmllib_a-common_utils-c.o libmllib_a-getopt-c.o libmllib_a-progress-c.o libmllib_a-unix_utils-c.o libmllib_a-uri-c.o libmllib_a-visit-c.o libmllib_a-xml-c.o -o mllib Usage: ocamlfind query [-help | other options] <package_name> ... or: ocamlfind ocamlc [-help | other options] <file> ... or: ocamlfind ocamlcp [-help | other options] <file> ... or: ocamlfind ocamlmktop [-help | other options] <file> ... or: ocamlfind ocamlopt [-help | other options] <file> ... or: ocamlfind ocamldep [-help | other options] <file> ... or: ocamlfind ocamlbrowser [-help | other options] or: ocamlfind ocamldoc [-help | other options] <file> ... or: ocamlfind install [-help | other options] <package_name> <file> ... or: ocamlfind remove [-help | other options] <package_name> or: ocamlfind printconf [-help] [variable] or: ocamlfind list or: ocamlfind pkg/cmd arg ... Select toolchain with: ocamlfind -toolchain <t> <command> Abbreviations: e.g. ocamlfind opt instead of ocamlfind ocamlopt make[2]: *** [mllib.cmxa] Error 2 make[2]: Leaving directory `/root/rpmbuild_lib/BUILD/libguestfs-1.36.10/mllib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/rpmbuild_lib/BUILD/libguestfs-1.36.10' make: *** [all] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.3eUENW (%build) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.3eUENW (%build) [root@abinaya-libguest-r6 rpmbuild_lib]$ ********************************************************************************************************************************** Can you help us here too. Regards, Abinaya
Yes indeed. Looks like the ocamlfind mklib subcommand wasn't added to findlib until 2011, and the version of ocaml-findlib in RHEL 6 is older than this. https://github.com/savonet/findlib/commit/410fa1c081459b28ea4e87ef8c7becdbe9534a5c Basically this is a bit of a fool's errand I'm afraid. You need to use a version of RHEL which is supported by libguestfs, and RHEL 6 ain't.
As Rich explained in comment 10, RHEL 6 is no more a supported platform. If you really want to build newer versions of libguestfs on RHEL 6 (which is not recommended), then you must backport all the newer versions of the toolchain. In any case, not a libguestfs issue.