[slepc] 04/06: patch: enable soname and library name extensions

Drew Parsons dparsons at moszumanska.debian.org
Mon Oct 12 05:13:06 UTC 2015


This is an automated email from the git hooks/post-receive script.

dparsons pushed a commit to branch master
in repository slepc.

commit 2d53861c9f3b820af2c0e89ce622e3829754ac89
Author: Drew Parsons <dparsons at debian.org>
Date:   Mon Oct 12 12:57:41 2015 +0800

    patch: enable soname and library name extensions
    
    Allows the builds with and without complex number support to be
    easily distinguished.
---
 debian/patches/series           |   1 +
 debian/patches/soname_extension | 120 ++++++++++++++++++++++++++++++++++++++++
 debian/rules                    |  12 ++--
 3 files changed, 129 insertions(+), 4 deletions(-)

diff --git a/debian/patches/series b/debian/patches/series
index 8c3b10e..4b26b06 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@
 #petsc31.patch
 #petsc-shlib-link.patch
 double_colon_patch
+soname_extension
diff --git a/debian/patches/soname_extension b/debian/patches/soname_extension
new file mode 100644
index 0000000..2c619b7
--- /dev/null
+++ b/debian/patches/soname_extension
@@ -0,0 +1,120 @@
+Index: slepc/gmakefile
+===================================================================
+--- slepc.orig/gmakefile
++++ slepc/gmakefile
+@@ -28,14 +28,14 @@ libname_function = $(call SONAME_FUNCTIO
+ basename_all = $(basename $(basename $(basename $(basename $(1)))))
+ sl_linker_args = $(call SL_LINKER_FUNCTION,$(call basename_all,$@),$(libslepc_abi_version),$(libslepc_lib_version))
+ 
+-libslepc_shared  := $(LIBDIR)/libslepc.$(SL_LINKER_SUFFIX)
+-libslepc_soname  := $(call soname_function,$(LIBDIR)/libslepc)
+-libslepc_libname := $(call libname_function,$(LIBDIR)/libslepc)
+-libslepc_static  := $(LIBDIR)/libslepc.$(AR_LIB_SUFFIX)
+-libslepcpkgs_shared  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg).$(SL_LINKER_SUFFIX))
+-libslepcpkgs_soname  := $(foreach pkg, $(pkgs), $(call soname_function,$(LIBDIR)/libslepc$(pkg)))
+-libslepcpkgs_libname := $(foreach pkg, $(pkgs), $(call libname_function,$(LIBDIR)/libslepc$(pkg)))
+-libslepcpkgs_static  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg).$(AR_LIB_SUFFIX))
++libslepc_shared  := $(LIBDIR)/libslepc$(SLEPC_LIB_EXT).$(SL_LINKER_SUFFIX)
++libslepc_soname  := $(call soname_function,$(LIBDIR)/libslepc$(SLEPC_LIB_EXT))
++libslepc_libname := $(call libname_function,$(LIBDIR)/libslepc$(SLEPC_LIB_EXT))
++libslepc_static  := $(LIBDIR)/libslepc$(SLEPC_LIB_EXT).$(AR_LIB_SUFFIX)
++libslepcpkgs_shared  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT).$(SL_LINKER_SUFFIX))
++libslepcpkgs_soname  := $(foreach pkg, $(pkgs), $(call soname_function,$(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT)))
++libslepcpkgs_libname := $(foreach pkg, $(pkgs), $(call libname_function,$(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT)))
++libslepcpkgs_static  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT).$(AR_LIB_SUFFIX))
+ 
+ ifeq ($(PETSC_WITH_EXTERNAL_LIB),)
+   libslepcall_shared  := $(libslepcpkgs_shared)
+@@ -118,7 +118,7 @@ endef
+ 	$(if $(findstring win32fe lib,$(AR)),$(ARCHIVE_RECIPE_WIN32FE_LIB),$(ARCHIVE_RECIPE_DEFAULT))
+ 
+ # with-single-library=0
+-libpkg = $(foreach pkg, $1, $(LIBDIR)/libslepc$(pkg).$(SL_LINKER_SUFFIX))
++libpkg = $(foreach pkg, $1, $(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT).$(SL_LINKER_SUFFIX))
+ define pkg_template
+   $(LIBDIR)/libslepc$(1).$(AR_LIB_SUFFIX)  : $(call concatlang,$(1))
+   $(call libname_function,$(LIBDIR)/libslepc$(1)) : $(call concatlang,$(1))
+Index: slepc/lib/slepc/conf/slepc_variables
+===================================================================
+--- slepc.orig/lib/slepc/conf/slepc_variables
++++ slepc/lib/slepc/conf/slepc_variables
+@@ -39,13 +39,13 @@ CCPPFLAGS	= ${SLEPC_CCPPFLAGS}
+ FCPPFLAGS	= ${SLEPC_FCPPFLAGS}
+ 
+ # Variables for the different SLEPc modules
+-SLEPC_SYS_LIB_BASIC = -lslepcsys
+-SLEPC_MFN_LIB_BASIC = -lslepcmfn ${SLEPC_SYS_LIB_BASIC}
+-SLEPC_EPS_LIB_BASIC = -lslepceps ${SLEPC_SYS_LIB_BASIC}
+-SLEPC_SVD_LIB_BASIC = -lslepcsvd ${SLEPC_EPS_LIB_BASIC}
+-SLEPC_PEP_LIB_BASIC = -lslepcpep ${SLEPC_EPS_LIB_BASIC}
+-SLEPC_NEP_LIB_BASIC = -lslepcnep ${SLEPC_PEP_LIB_BASIC}
+-SLEPC_LIB_BASIC     = -lslepcnep -lslepcpep -lslepcmfn ${SLEPC_SVD_LIB_BASIC}
++SLEPC_SYS_LIB_BASIC = -lslepcsys$(SLEPC_LIB_EXT)
++SLEPC_MFN_LIB_BASIC = -lslepcmfn$(SLEPC_LIB_EXT) ${SLEPC_SYS_LIB_BASIC}
++SLEPC_EPS_LIB_BASIC = -lslepceps$(SLEPC_LIB_EXT) ${SLEPC_SYS_LIB_BASIC}
++SLEPC_SVD_LIB_BASIC = -lslepcsvd$(SLEPC_LIB_EXT) ${SLEPC_EPS_LIB_BASIC}
++SLEPC_PEP_LIB_BASIC = -lslepcpep$(SLEPC_LIB_EXT) ${SLEPC_EPS_LIB_BASIC}
++SLEPC_NEP_LIB_BASIC = -lslepcnep$(SLEPC_LIB_EXT) ${SLEPC_PEP_LIB_BASIC}
++SLEPC_LIB_BASIC     = -lslepcnep$(SLEPC_LIB_EXT) -lslepcpep$(SLEPC_LIB_EXT) -lslepcmfn$(SLEPC_LIB_EXT) ${SLEPC_SVD_LIB_BASIC}
+ 
+ SLEPC_SYS_LIB   = ${SLEPC_C_SH_LIB_PATH} -L${SLEPC_LIB_DIR} ${SLEPC_SYS_LIB_BASIC} ${SLEPC_EXTERNAL_LIB} ${PETSC_KSP_LIB}
+ SLEPC_MFN_LIB   = ${SLEPC_C_SH_LIB_PATH} -L${SLEPC_LIB_DIR} ${SLEPC_MFN_LIB_BASIC} ${SLEPC_EXTERNAL_LIB} ${PETSC_KSP_LIB}
+@@ -58,7 +58,7 @@ SLEPC_LIB       = ${SLEPC_C_SH_LIB_PATH}
+ SLEPC_EXTERNAL_LIB  = ${ARPACK_LIB} ${BLZPACK_LIB} ${TRLAN_LIB} ${PRIMME_LIB} ${BLOPEX_LIB} ${FEAST_LIB}
+ 
+ # Redefine variable used to build shared libraries
+-SHLIBS = libslepcsys libslepcmfn libslepceps libslepcsvd libslepcpep libslepcnep
++SHLIBS = libslepcsys$(SLEPC_LIB_EXT) libslepcmfn$(SLEPC_LIB_EXT) libslepceps$(SLEPC_LIB_EXT) libslepcsvd$(SLEPC_LIB_EXT) libslepcpep$(SLEPC_LIB_EXT) libslepcnep$(SLEPC_LIB_EXT)
+ 
+ # Include definitions customized by configuration
+ include ${SLEPC_DIR}/${PETSC_ARCH}/lib/slepc/conf/slepcvariables
+Index: slepc/config/configure.py
+===================================================================
+--- slepc.orig/config/configure.py
++++ slepc/config/configure.py
+@@ -94,7 +94,7 @@ def WritePkgconfigFile(pkgconfig,version
+   pkgconfig.write('Cflags: -I'+os.path.join(prefixdir,'include'))
+   if not isinstall:
+     pkgconfig.write(' -I'+os.path.join(sdir,'include'))
+-  pkgconfig.write('\nLibs: -L%s -lslepc\n' % os.path.join(prefixdir,'lib'))
++  pkgconfig.write('\nLibs: -L%s -lslepc%s\n' % (os.path.join(prefixdir,'lib'), slepc.slepcLibExt))
+ 
+ def WriteCMakeConfigFile(cmakeconf):
+   ''' Write the contents of the CMake configuration file '''
+@@ -295,11 +295,12 @@ if not petsc.havepackage:
+ 
+ # Single library installation
+ if petsc.singlelib:
+-  slepcvars.write('SHLIBS = libslepc\n')
+-  slepcvars.write('LIBNAME = '+os.path.join('${INSTALL_LIB_DIR}','libslepc.${AR_LIB_SUFFIX}')+'\n')
++  slepcvars.write('SHLIBS = libslepc'+slepc.slepcLibExt+'\n')
++  slepcvars.write('LIBNAME = '+os.path.join('${INSTALL_LIB_DIR}','libslepc'+slepc.slepcLibExt+'.${AR_LIB_SUFFIX}')+'\n')
++  slepcvars.write('SLEPC_LIB_EXT = '+slepc.slepcLibExt+'\n')
+   for module in ['SYS','MFN','EPS','SVD','PEP','NEP']:
+-    slepcvars.write('SLEPC_'+module+'_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc ${SLEPC_EXTERNAL_LIB} ${PETSC_KSP_LIB}\n')
+-  slepcvars.write('SLEPC_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc ${SLEPC_EXTERNAL_LIB} ${PETSC_KSP_LIB}\n')
++    slepcvars.write('SLEPC_'+module+'_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc'+slepc.slepcLibExt+' ${SLEPC_EXTERNAL_LIB} ${PETSC_KSP_LIB}\n')
++  slepcvars.write('SLEPC_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc'+slepc.slepcLibExt+' ${SLEPC_EXTERNAL_LIB} ${PETSC_KSP_LIB}\n')
+ 
+ # Check for external packages and for missing LAPACK functions
+ for pkg in checkpackages:
+Index: slepc/config/packages/slepc.py
+===================================================================
+--- slepc.orig/config/packages/slepc.py
++++ slepc/config/packages/slepc.py
+@@ -29,6 +29,7 @@ class SLEPc:
+     self.cmake     = argdb.PopBool('with-cmake')
+     self.prefixdir = argdb.PopPath('prefix')[0]
+     self.isinstall = not self.prefixdir==''
++    self.slepcLibExt = argdb.PopString('shared-library-extension')[0]
+     self.datadir   = argdb.PopPath('DATAFILESPATH')[0]
+ 
+   def ShowHelp(self):
+@@ -36,6 +37,7 @@ class SLEPc:
+   --with-clean=<bool>          : Delete prior build files including externalpackages
+   --with-cmake=<bool>          : Enable builds with CMake (disabled by default)
+   --prefix=<dir>               : Specify location to install SLEPc (e.g., /usr/local)
++  --shared-library-extension=<string>   : Extension to name of shared library
+   --DATAFILESPATH=<dir>        : Specify location of datafiles (for SLEPc developers)'''
+ 
+   def InitDir(self):
diff --git a/debian/rules b/debian/rules
index 88fd2a1..aed2818 100755
--- a/debian/rules
+++ b/debian/rules
@@ -148,7 +148,8 @@ override_dh_auto_test:
 override_dh_auto_install:
 	PETSC_DIR=$(PETSC_DIR_REAL) \
           ./configure --prefix=$(SLEPC_DIR_PREFIX)  \
-            --with-arpack=1
+            --with-arpack=1 \
+            --shared-library-extension=_real
 	dh_auto_build -p$(SLEPC_VERSIONED_DEV_PACKAGE) -- \
             PETSC_DIR=$(PETSC_DIR_REAL)
 	dh_auto_install -p$(SLEPC_VERSIONED_DEV_PACKAGE) --destdir=$(PACKAGE_INSTALL_DIR) --  \
@@ -160,7 +161,8 @@ override_dh_auto_install:
 	
 	PETSC_DIR=$(PETSC_DIR_REAL_DEBUG) \
           ./configure --prefix=$(SLEPC_DIR_DEBUG_PREFIX)  \
-          --with-arpack=1 --with-arpack-dir=/usr/lib/debug/usr/lib --with-arpack-flags=-lparpack,-larpack
+          --with-arpack=1 --with-arpack-dir=/usr/lib/debug/usr/lib --with-arpack-flags=-lparpack,-larpack \
+          --shared-library-extension=_real
 	dh_auto_build -p$(SLEPC_DEBUG_PACKAGE) -- \
           PETSC_DIR=$(PETSC_DIR_REAL_DEBUG)
 	dh_auto_install -p$(SLEPC_DEBUG_PACKAGE) --destdir=$(PACKAGE_DEBUG_INSTALL_DIR) --  \
@@ -170,7 +172,8 @@ override_dh_auto_install:
 	
 	PETSC_DIR=$(PETSC_DIR_COMPLEX) \
           ./configure --prefix=$(SLEPC_COMPLEX_DIR_PREFIX)  \
-          --with-arpack=1 
+          --with-arpack=1 \
+          --shared-library-extension=_complex
 	dh_auto_build -p$(SLEPC_COMPLEX_VERSIONED_DEV_PACKAGE)  --  \
           PETSC_DIR=$(PETSC_DIR_COMPLEX)
 	dh_auto_install -p$(SLEPC_COMPLEX_VERSIONED_DEV_PACKAGE) --destdir=$(PACKAGE_COMPLEX_INSTALL_DIR) --  \
@@ -180,7 +183,8 @@ override_dh_auto_install:
 	
 	PETSC_DIR=$(PETSC_DIR_COMPLEX_DEBUG) \
           ./configure --prefix=$(SLEPC_COMPLEX_DEBUG_DIR_PREFIX)  \
-          --with-arpack=1 --with-arpack-dir=/usr/lib/debug/usr/lib --with-arpack-flags=-lparpack,-larpack
+          --with-arpack=1 --with-arpack-dir=/usr/lib/debug/usr/lib --with-arpack-flags=-lparpack,-larpack \
+          --shared-library-extension=_complex
 	dh_auto_build -p$(SLEPC_COMPLEX_DEBUG_PACKAGE)  --  \
           PETSC_DIR=$(PETSC_DIR_COMPLEX_DEBUG)
 	dh_auto_install -p$(SLEPC_COMPLEX_DEBUG_PACKAGE) --destdir=$(PACKAGE_COMPLEX_DEBUG_INSTALL_DIR) --  \

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/slepc.git



More information about the debian-science-commits mailing list