From 1c506aa960f51ae0a059d19cfcd6dec26aa79487 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 24 Oct 2015 12:34:24 +0100 Subject: [PATCH] ocaml: Allow 'make install' to be run twice. 'ocamlfind install' doesn't like to install the same package if it is already installed. It will give errors like: ocamlfind: Package guestfs is already installed or: ocamlfind: Conflict with file: /usr/lib64/ocaml/guestfs/mlguestfs.cmxa Fix this by removing the old installed files before running 'ocamlfind install'. An alternative would be to use 'ocamlfind uninstall', but this seems more direct. --- ocaml/Makefile.am | 6 +++++- v2v/test-harness/Makefile.am | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am index ea4137755..ec190e465 100644 --- a/ocaml/Makefile.am +++ b/ocaml/Makefile.am @@ -190,7 +190,9 @@ depend: .depend SUFFIXES = .cmo .cmi .cmx .ml .mli .mll .mly -# Do the installation by hand, because we want to run ocamlfind. +# Run ocamlfind to perform the install. ocamlfind refuses to install +# the package if it is already installed, so remove the old package +# first. data_hook_files = META *.so *.a *.cma *.cmi $(srcdir)/*.mli if HAVE_OCAMLOPT data_hook_files += *.cmx *.cmxa @@ -199,6 +201,8 @@ endif install-data-hook: mkdir -p $(DESTDIR)$(OCAMLLIB) mkdir -p $(DESTDIR)$(OCAMLLIB)/stublibs + rm -rf $(DESTDIR)$(OCAMLLIB)/guestfs + rm -rf $(DESTDIR)$(OCAMLLIB)/stublibs/dllmlguestfs.so* $(OCAMLFIND) install \ -ldconf ignore -destdir $(DESTDIR)$(OCAMLLIB) \ guestfs \ diff --git a/v2v/test-harness/Makefile.am b/v2v/test-harness/Makefile.am index c0723fd00..7bba68908 100644 --- a/v2v/test-harness/Makefile.am +++ b/v2v/test-harness/Makefile.am @@ -100,7 +100,9 @@ endif v2v_test_harness.cmi: $(top_builddir)/ocaml/guestfs.cmi -# Do the installation by hand, because we want to run ocamlfind. +# Run ocamlfind to perform the install. ocamlfind refuses to install +# the package if it is already installed, so remove the old package +# first. data_hook_files = META *.so *.a *.cmi $(srcdir)/*.mli if !HAVE_OCAMLOPT data_hook_files += *.cmo *.cma @@ -111,6 +113,8 @@ endif install-data-hook: mkdir -p $(DESTDIR)$(OCAMLLIB) mkdir -p $(DESTDIR)$(OCAMLLIB)/stublibs + rm -rf $(DESTDIR)$(OCAMLLIB)/v2v_test_harness + rm -rf $(DESTDIR)$(OCAMLLIB)/stublibs/dllv2v_test_harness.so* $(OCAMLFIND) install \ -ldconf ignore -destdir $(DESTDIR)$(OCAMLLIB) \ v2v_test_harness \