Blob Blame History Raw
From 7a3eedcc30e27fbc70b450f1d80d18d113b82940 Mon Sep 17 00:00:00 2001
From: David <davidsch@fedoraproject.org>
Date: Sat, 21 Aug 2021 21:29:43 +0200
Subject: [PATCH 1/2] Fix make install

* Install shared lib, if compiled
* install static lib only if compiled
* fix some path missmatches
* only have soname in single place
---
 make.config.in | 22 +++++++++++++++++-----
 makefile       |  4 ++--
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/make.config.in b/make.config.in
index 8e612acae4..f0f27277f2 100644
--- a/make.config.in
+++ b/make.config.in
@@ -29,6 +29,7 @@ SLEPC_ARCH ?= @SLEPC_ARCH@
 BOUT_INCLUDE_PATH=$(BOUT_TOP)/include
 BOUT_LIB_PATH=$(BOUT_TOP)/lib
 BOUT_CONFIG_FILE=$(BOUT_TOP)/make.config
+SONAME=4.4.0
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@
@@ -175,9 +176,20 @@ endif
 	$(INSTALL_DATA) include/bout/*.hxx $(INSTALL_INCLUDE_PATH)/bout/
 	$(INSTALL_DATA) include/bout/sys/*.hxx $(INSTALL_INCLUDE_PATH)/bout/sys/
 	$(INSTALL_DATA) include/bout/invert/*.hxx $(INSTALL_INCLUDE_PATH)/bout/invert/
+ifneq ("@STATIC_EXTRA@x", "x")
 	$(INSTALL_DATA) lib/libbout++.a $(DESTDIR)@libdir@
 	$(INSTALL_DATA) lib/libpvode.a $(DESTDIR)@libdir@
 	$(INSTALL_DATA) lib/libpvpre.a $(DESTDIR)@libdir@
+endif
+ifneq ("@SHARED_EXTRA@x", "x")
+	$(INSTALL_DATA) lib/libbout++.so.$(SONAME) $(DESTDIR)@libdir@
+	$(INSTALL_DATA) lib/libpvode.so.* $(DESTDIR)@libdir@
+	$(INSTALL_DATA) lib/libpvpre.so.* $(DESTDIR)@libdir@
+	rm -f $(DESTDIR)@libdir@/lib{bout++,pvode,pvpre}.so
+	ln -s libbout++.so.$(SONAME) $(DESTDIR)@libdir@/libbout++.so
+	ln -s libpvode.so.1.0.0 $(DESTDIR)@libdir@/libpvode.so
+	ln -s libpvpre.so.1.0.0 $(DESTDIR)@libdir@/libpvpre.so
+endif
 	$(INSTALL_PROGRAM)  bin/bout-config $(DESTDIR)@bindir@
 	$(INSTALL_PROGRAM)  bin/bout-log-color $(DESTDIR)@bindir@
 	$(INSTALL_DATA)  tools/idllib/*.pro $(DESTDIR)@datadir@/bout++/idllib/
@@ -199,15 +211,15 @@ ifeq ("@OWN_MPARK@", "yes")
 endif
 
 	@# Modify paths in the make.config file
-	sed -i "s|^BOUT_INCLUDE_PATH=.*|BOUT_INCLUDE_PATH=@includedir@/bout++|" $(INSTALL_INCLUDE_PATH)/make.config
-	sed -i "s|^BOUT_LIB_PATH=.*|BOUT_LIB_PATH=@libdir@|" $(INSTALL_INCLUDE_PATH)/make.config
-	sed -i "s|^BOUT_CONFIG_FILE=.*|BOUT_CONFIG_FILE=@includedir@/bout++/make.config|" $(INSTALL_INCLUDE_PATH)/make.config
+	sed -i "s|^BOUT_INCLUDE_PATH=.*|BOUT_INCLUDE_PATH=@includedir@/bout++|" $(DESTDIR)@datadir@/bout++/make.config
+	sed -i "s|^BOUT_LIB_PATH=.*|BOUT_LIB_PATH=@libdir@|" $(DESTDIR)@datadir@/bout++/make.config
+	sed -i "s|^BOUT_CONFIG_FILE=.*|BOUT_CONFIG_FILE=@includedir@/bout++/make.config|" $(DESTDIR)@datadir@/bout++/make.config
 ifeq ("@OWN_MPARK@", "yes")
-	sed -i "s|^MPARK_VARIANT_INCLUDE_PATH=.*|MPARK_VARIANT_INCLUDE_PATH=@includedir@/bout++|" $(INSTALL_INCLUDE_PATH)/make.config
+	sed -i "s|^MPARK_VARIANT_INCLUDE_PATH=.*|MPARK_VARIANT_INCLUDE_PATH=@includedir@/bout++|" $(DESTDIR)@datadir@/bout++/make.config
 endif
 
 #	Set the make.config as released, so the library isn't rebuild. This way the .a file doesn't need to be preserved/installed
-	sed -i '26 i RELEASED                 = yes' $(INSTALL_INCLUDE_PATH)/make.config
+	sed -i '26 i RELEASED                 = yes' $(DESTDIR)@datadir@/bout++/make.config
 
 uninstall:
 	$(PRE_UNINSTALL)     # Pre-uninstall commands follow.
diff --git a/makefile b/makefile
index 59fb5ba21b..39d6b77624 100644
--- a/makefile
+++ b/makefile
@@ -11,12 +11,12 @@ shared: libfast
 	@echo $(BOUT_FLAGS) | grep -i pic > /dev/null 2>&1 || (echo "not compiled with PIC support - reconfigure with --enable-shared" ;exit 1)
 	@#$(CXX) -shared -o $(LIB_SO) $(shell find $(BOUT_TOP)/src -name \*.o -type f -print 2> /dev/null) -L $(BOUT_TOP)/lib -Wl,--whole-archive -lpvode -lpvpre  -Wl,--no-whole-archive
 	@$(RM) $(BOUT_TOP)/lib/*.so*
-	@$(CXX) -shared -Wl,-soname,libbout++.so.4.3.1 -o $(LIB_SO).4.3.1 $(shell find $(BOUT_TOP)/src -name \*.o -type f -print 2> /dev/null)
+	@$(CXX) -shared -Wl,-soname,libbout++.so.$(SONAME) -o $(LIB_SO).$(SONAME) $(shell find $(BOUT_TOP)/src -name \*.o -type f -print 2> /dev/null)
 	@$(CXX) -shared -Wl,-soname,libpvode.so.1.0.0 -o $(BOUT_TOP)/lib/libpvode_.so -L $(BOUT_TOP)/lib -Wl,--whole-archive -lpvode -Wl,--no-whole-archive
 	@$(CXX) -shared -Wl,-soname,libpvpre.so.1.0.0 -o $(BOUT_TOP)/lib/libpvpre_.so -L $(BOUT_TOP)/lib -Wl,--whole-archive -lpvpre -Wl,--no-whole-archive
 	@mv $(BOUT_TOP)/lib/libpvode_.so $(BOUT_TOP)/lib/libpvode.so.1.0.0
 	@mv $(BOUT_TOP)/lib/libpvpre_.so $(BOUT_TOP)/lib/libpvpre.so.1.0.0
-	@ln -s libbout++.so.4.4.0 $(LIB_SO)
+	@ln -s libbout++.so.$(SONAME) $(LIB_SO)
 	@ln -s libpvode.so.1.0.0 lib/libpvode.so
 	@ln -s libpvpre.so.1.0.0 lib/libpvpre.so
 

From bdec71bb0c0c479e7710b804d125a63949239b84 Mon Sep 17 00:00:00 2001
From: David <davidsch@fedoraproject.org>
Date: Sun, 22 Aug 2021 16:29:44 +0200
Subject: [PATCH 2/2] Revert to install to include path

The previous change to datadir was incomplete, and does not resolve the
issue with multilib installs
---
 make.config.in | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/make.config.in b/make.config.in
index f0f27277f2..7d8adad536 100644
--- a/make.config.in
+++ b/make.config.in
@@ -196,7 +196,7 @@ endif
 	$(INSTALL_DATA)  tools/idllib/README $(DESTDIR)@datadir@/bout++/idllib/
 	$(INSTALL_DATA)  tools/pylib/boutdata/*.py $(DESTDIR)@datadir@/bout++/pylib/boutdata/
 	$(INSTALL_DATA)  tools/pylib/boututils/*.py $(DESTDIR)@datadir@/bout++/pylib/boututils/
-	$(INSTALL_DATA)  make.config $(DESTDIR)@datadir@/bout++/
+	$(INSTALL_DATA)  make.config $(INSTALL_INCLUDE_PATH)
 	for mo in $(MO_FILES); do $(MKDIR) $(DESTDIR)@localedir@/`dirname $$mo`; $(INSTALL_DATA) locale/$$mo $(DESTDIR)@localedir@/$$mo; done
 	$(POST_INSTALL)    # Post-install commands follow.
 
@@ -211,21 +211,21 @@ ifeq ("@OWN_MPARK@", "yes")
 endif
 
 	@# Modify paths in the make.config file
-	sed -i "s|^BOUT_INCLUDE_PATH=.*|BOUT_INCLUDE_PATH=@includedir@/bout++|" $(DESTDIR)@datadir@/bout++/make.config
-	sed -i "s|^BOUT_LIB_PATH=.*|BOUT_LIB_PATH=@libdir@|" $(DESTDIR)@datadir@/bout++/make.config
-	sed -i "s|^BOUT_CONFIG_FILE=.*|BOUT_CONFIG_FILE=@includedir@/bout++/make.config|" $(DESTDIR)@datadir@/bout++/make.config
+	sed -i "s|^BOUT_INCLUDE_PATH=.*|BOUT_INCLUDE_PATH=@includedir@/bout++|" $(INSTALL_INCLUDE_PATH)/make.config
+	sed -i "s|^BOUT_LIB_PATH=.*|BOUT_LIB_PATH=@libdir@|" $(INSTALL_INCLUDE_PATH)/make.config
+	sed -i "s|^BOUT_CONFIG_FILE=.*|BOUT_CONFIG_FILE=@includedir@/bout++/make.config|" $(INSTALL_INCLUDE_PATH)/make.config
 ifeq ("@OWN_MPARK@", "yes")
-	sed -i "s|^MPARK_VARIANT_INCLUDE_PATH=.*|MPARK_VARIANT_INCLUDE_PATH=@includedir@/bout++|" $(DESTDIR)@datadir@/bout++/make.config
+	sed -i "s|^MPARK_VARIANT_INCLUDE_PATH=.*|MPARK_VARIANT_INCLUDE_PATH=@includedir@/bout++|" $(INSTALL_INCLUDE_PATH)/make.config
 endif
 
 #	Set the make.config as released, so the library isn't rebuild. This way the .a file doesn't need to be preserved/installed
-	sed -i '26 i RELEASED                 = yes' $(DESTDIR)@datadir@/bout++/make.config
+	sed -i '26 i RELEASED                 = yes' $(INSTALL_INCLUDE_PATH)/make.config
 
 uninstall:
 	$(PRE_UNINSTALL)     # Pre-uninstall commands follow.
 
 	$(NORMAL_UNINSTALL)  # Normal commands follow.
-	$(RM) $(DESTDIR)@datadir@/bout++/make.config
+	$(RM) $(INSTALL_INCLUDE_PATH)/make.config
 	$(RM) -r $(DESTDIR)@datadir@/bout++/pylib/boututils/
 	$(RM) -r $(DESTDIR)@datadir@/bout++/pylib/boutdata/
 	$(RM) -r $(DESTDIR)@datadir@/bout++/idllib/