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/