diff --git a/.SuperLU.metadata b/.SuperLU.metadata new file mode 100644 index 0000000..311ed17 --- /dev/null +++ b/.SuperLU.metadata @@ -0,0 +1 @@ +281576edaa24f9fde5f35e28a99bff4d9703dd19 SOURCES/superlu_5.2.0.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..069f3df --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/superlu_5.2.0.tar.gz diff --git a/SOURCES/superlu-5x-add-fpic.patch b/SOURCES/superlu-5x-add-fpic.patch new file mode 100644 index 0000000..ab1e0cc --- /dev/null +++ b/SOURCES/superlu-5x-add-fpic.patch @@ -0,0 +1,12 @@ +--- SuperLU_5.1.1/MAKE_INC/make.linux.orig 2016-03-26 08:43:03.038994570 -0400 ++++ SuperLU_5.1.1/MAKE_INC/make.linux 2016-03-26 08:44:09.141092611 -0400 +@@ -46,7 +46,8 @@ + RANLIB = ranlib + + CC = gcc +-CFLAGS = -O3 -g ++FPIC = -fPIC ++CFLAGS = -O3 $(FPIC) + NOOPTS = + FORTRAN = gfortran #g77 + FFLAGS = -O2 -g -fopenmp diff --git a/SOURCES/superlu-5x-build-shared-lib3.patch b/SOURCES/superlu-5x-build-shared-lib3.patch new file mode 100644 index 0000000..88e7aa3 --- /dev/null +++ b/SOURCES/superlu-5x-build-shared-lib3.patch @@ -0,0 +1,39 @@ +--- SuperLU_5.1.1/SRC/Makefile.orig 2016-03-26 08:47:18.885503561 -0400 ++++ SuperLU_5.1.1/SRC/Makefile 2016-03-26 08:52:10.512497969 -0400 +@@ -98,7 +98,7 @@ + ilu_zcolumn_dfs.o ilu_zpanel_dfs.o ilu_zcopy_to_ucol.o \ + ilu_zpivotL.o zdiagonal.o zlacon2.o dzsum1.o izmax1.o + +-all: single double complex complex16 ++all: sharedlib + + single: $(SLUSRC) $(ALLAUX) $(SCAUX) + $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) $(SLUSRC) $(ALLAUX) $(SCAUX) +@@ -116,17 +116,23 @@ + $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) $(ZLUSRC) $(ALLAUX) $(DZLAUX) + $(RANLIB) $(SUPERLULIB) + ++sharedlib: $(ALLAUX) $(LAAUX) $(SLASRC) $(DLASRC) $(CLASRC) $(ZLASRC) $(SCLAUX) $(DZLAUX) $(SLUSRC) $(DLUSRC) $(CLUSRC) $(ZLUSRC) ++ $(CC) $(CFLAGS) $(LIBS) -shared -Wl,-soname,libsuperlu.so.5.1 -o libsuperlu.so.5.1 \ ++ $(ALLAUX) $(LAAUX) $(SLASRC) $(DLASRC) $(CLASRC) $(ZLASRC) $(SCLAUX) \ ++ $(DZLAUX) $(SLUSRC) $(DLUSRC) $(CLUSRC) $(ZLUSRC) ++ ln -sf libsuperlu.so.5.1 libsuperlu.so ++ + + ################################## + # Do not optimize these routines # + ################################## +-smach.o: smach.c ; $(CC) -c $(NOOPTS) $(CDEFS) $< +-dmach.o: dmach.c ; $(CC) -c $(NOOPTS) $(CDEFS) $< +-superlu_timer.o: superlu_timer.c ; $(CC) -c $(NOOPTS) $< ++slamch.o: slamch.c ; $(CC) $(FPIC) $(LIBS) -c $(NOOPTS) $(CDEFS) $< ++dlamch.o: dlamch.c ; $(CC) $(FPIC) $(LIBS) -c $(NOOPTS) $(CDEFS) $< ++superlu_timer.o: superlu_timer.c ; $(CC) $(FPIC) $(LIBS) -c $(NOOPTS) $< + ################################## + + .c.o: +- $(CC) $(CFLAGS) $(CDEFS) $(BLASDEF) -c $< $(VERBOSE) ++ $(CC) $(CFLAGS) $(CDEFS) $(BLASDEF) $(LIBS) -c $< $(VERBOSE) + + .f.o: + $(FORTRAN) $(FFLAGS) -c $< diff --git a/SOURCES/superlu-5x-fix-testsuite.patch b/SOURCES/superlu-5x-fix-testsuite.patch new file mode 100644 index 0000000..798690b --- /dev/null +++ b/SOURCES/superlu-5x-fix-testsuite.patch @@ -0,0 +1,50 @@ +--- SuperLU_5.1.1/TESTING/Makefile.orig 2016-03-26 08:56:10.347188385 -0400 ++++ SuperLU_5.1.1/TESTING/Makefile 2016-03-26 08:58:39.763126530 -0400 +@@ -52,9 +52,9 @@ + + single: ./stest stest.out + +-./stest: $(SLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) ++./stest: $(SLINTST) $(ALINTST) $(TMGLIB) + $(LOADER) $(LOADOPTS) $(SLINTST) $(ALINTST) \ +- $(TMGLIB) $(SUPERLULIB) $(BLASLIB) -lm -o $@ ++ $(TMGLIB) -Wl,-rpath,../SRC $(SUPERLULIB) $(BLASLIB) -lm -o $@ + + stest.out: stest stest.csh + @echo Testing SINGLE PRECISION linear equation routines +@@ -62,9 +62,9 @@ + + double: ./dtest dtest.out + +-./dtest: $(DLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) ++./dtest: $(DLINTST) $(ALINTST) $(TMGLIB) + $(LOADER) $(LOADOPTS) $(DLINTST) $(ALINTST) \ +- $(TMGLIB) $(SUPERLULIB) $(BLASLIB) -lm -o $@ ++ $(TMGLIB) -Wl,-rpath,../SRC $(SUPERLULIB) $(BLASLIB) -lm -o $@ + + dtest.out: dtest dtest.csh + @echo Testing DOUBLE PRECISION linear equation routines +@@ -72,9 +72,9 @@ + + complex: ./ctest ctest.out + +-./ctest: $(CLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) ++./ctest: $(CLINTST) $(ALINTST) $(TMGLIB) + $(LOADER) $(LOADOPTS) $(CLINTST) $(ALINTST) \ +- $(TMGLIB) $(SUPERLULIB) $(BLASLIB) -lm -o $@ ++ $(TMGLIB) -Wl,-rpath,../SRC $(SUPERLULIB) $(BLASLIB) -lm -o $@ + + ctest.out: ctest ctest.csh + @echo Testing SINGLE COMPLEX linear equation routines +@@ -82,9 +82,9 @@ + + complex16: ./ztest ztest.out + +-./ztest: $(ZLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) ++./ztest: $(ZLINTST) $(ALINTST) $(TMGLIB) + $(LOADER) $(LOADOPTS) $(ZLINTST) $(ALINTST) \ +- $(TMGLIB) $(SUPERLULIB) $(BLASLIB) -lm -o $@ ++ $(TMGLIB) -Wl,-rpath,../SRC $(SUPERLULIB) $(BLASLIB) -lm -o $@ + + ztest.out: ztest ztest.csh + @echo Testing DOUBLE COMPLEX linear equation routines diff --git a/SOURCES/superlu-removemc64.patch b/SOURCES/superlu-removemc64.patch new file mode 100644 index 0000000..00d36af --- /dev/null +++ b/SOURCES/superlu-removemc64.patch @@ -0,0 +1,25 @@ +Description: Provide stubs for the two functions whose implementation is nonfree +Author: Sébastien Villemot +Forwarded: not-needed +Last-Update: 2013-11-27 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- /dev/null ++++ b/SRC/mc64ad.c +@@ -0,0 +1,16 @@ ++#include ++#include ++ ++void mc64id_(int *a) ++{ ++ fprintf(stderr, "SuperLU: MC64 functionality not available (it uses non-free code). Aborting.\n"); ++ abort(); ++} ++ ++void mc64ad_(int *a, int *b, int *c, int d[], int e[], double f[], ++ int *g, int h[], int *i, int j[], int *k, double l[], ++ int m[], int n[]) ++{ ++ fprintf(stderr, "SuperLU: MC64 functionality not available (it uses non-free code). Aborting.\n"); ++ abort(); ++} diff --git a/SPECS/SuperLU.spec b/SPECS/SuperLU.spec new file mode 100644 index 0000000..08e66fb --- /dev/null +++ b/SPECS/SuperLU.spec @@ -0,0 +1,209 @@ +%global genname superlu +%global libver 5.1 + +## The RPM macro for the linker flags does not exist on EPEL +%if 0%{?rhel} < 7 +%{!?__global_ldflags: %global __global_ldflags -Wl,-z,relro} +%endif + +Name: SuperLU +Version: 5.2.0 +Release: 7%{?dist} +Summary: Subroutines to solve sparse linear systems +%{?el5:Group: System/Libraries} + +License: BSD and GPLV2+ +URL: http://crd-legacy.lbl.gov/~xiaoye/SuperLU/ +Source0: http://crd-legacy.lbl.gov/~xiaoye/SuperLU/%{genname}_%{version}.tar.gz +# Build with -fPIC +Patch0: %{genname}-5x-add-fpic.patch +# Build shared library +Patch1: %{genname}-5x-build-shared-lib3.patch +# Fixes testsuite +Patch3: %{genname}-5x-fix-testsuite.patch +# remove non-free mc64 functionality +# patch obtained from the debian package +Patch4: %{genname}-removemc64.patch + +%{?el5:BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)} +BuildRequires: atlas-devel +BuildRequires: csh + +%description +SuperLU contains a set of subroutines to solve a sparse linear system +A*X=B. It uses Gaussian elimination with partial pivoting (GEPP). +The columns of A may be preordered before factorization; the +preordering for sparsity is completely separate from the factorization. + +%package devel +Summary: Header files and libraries for SuperLU development +%{?el5:Group: Development/Libraries} +Requires: %{name}%{?_isa} = %{version}-%{release} +%{?el5:Requires: pkgconfig} + +%description devel +The %{name}-devel package contains the header files +and libraries for use with %{name} package. + +%package doc +Summary: Documentation and Examples for SuperLU +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description doc +The %{name}-doc package contains all the help documentation along with C +and FORTRAN examples. + +%prep +%setup -q -n %{name}_%{version} +%patch0 -p1 +%patch1 -p1 +%patch3 -p1 +%patch4 + +rm -fr SRC/mc64ad.f.bak +find . -type f | sed -e "/TESTING/d" | xargs chmod a-x +# Remove the shippped executables from EXAMPLE +find EXAMPLE -type f | while read file +do + [ "$(file $file | awk '{print $2}')" = ELF ] && rm $file || : +done +cp -p MAKE_INC/make.linux make.inc +sed -i -e "s|-O3|$RPM_OPT_FLAGS|" \ + -e "s|\$(SUPERLULIB) ||" \ + -e "s|\$(HOME)/Dropbox/Codes/%{name}/%{name}|%{_builddir}/%{name}_%{version}|" \ + -e 's!lib/libsuperlu_5.1.a$!SRC/libsuperlu.so!' \ + -e 's!-shared!& %{__global_ldflags}!' \ +%if 0%{?rhel} && 0%{?rhel} < 7 + -e "s|-L/usr/lib -lblas|-L%{_libdir}/atlas -lf77blas|" \ +%else + -e "s|-L/usr/lib -lblas|-L%{_libdir}/atlas -lsatlas|" \ +%endif + make.inc + +%build +make %{?_smp_mflags} superlulib +make -C TESTING + +%install +%{?el5:rm -rf %{buildroot}} +mkdir -p %{buildroot}%{_libdir} +mkdir -p %{buildroot}%{_includedir}/%{name} +install -p SRC/libsuperlu.so.%{libver} %{buildroot}%{_libdir} +install -p SRC/*.h %{buildroot}%{_includedir}/%{name} +chmod -x %{buildroot}%{_includedir}/%{name}/*.h +cp -Pp SRC/libsuperlu.so %{buildroot}%{_libdir} + +%check +pushd TESTING +for _test in c d s z +do + chmod +x ${_test}test.csh + ./${_test}test.csh +done +popd + +%{?el5:%clean} +%{?el5:rm -rf %{buildroot}} + +%ldconfig_scriptlets + +%files +%doc README +%license License.txt +%{_libdir}/libsuperlu.so.%{libver} + +%files devel +%{_includedir}/%{name}/ +%{_libdir}/libsuperlu.so + +%files doc +%doc DOC EXAMPLE FORTRAN + +%changelog +* Thu Feb 15 2018 Antonio Trande - 5.2.0-7 +- Use %%ldconfig_scriptlets + +* Wed Feb 07 2018 Fedora Release Engineering - 5.2.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Oct 21 2017 Mukundan Ragavan - 5.2.0-5 +- Fix lib linking in EPEL (added conditionals; Thanks Antonio Trande)) +- Use license macro + +* Wed Aug 02 2017 Fedora Release Engineering - 5.2.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 5.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 5.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Apr 14 2016 Mukundan Ragavan - 5.2.0-1 +- Update to 5.2.0 +- spec file cleanup + +* Mon Mar 28 2016 Mukundan Ragavan - 5.1.1-2 +- Added -doc subpackage +- Added GPLv2 in the license field + +* Mon Mar 21 2016 Mukundan Ragavan - 5.1.1-1 +- Update to 5.1.1 +- Remove format security patch - not needed anymore +- Edit patches to be version specific +- Renamed patch4 to be consistent with others +- Minor spec file housekeeping + +* Wed Feb 03 2016 Fedora Release Engineering - 4.3-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 16 2015 Fedora Release Engineering - 4.3-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Jan 25 2015 Mukundan Ragavan - 4.3-12 +- Fix spec file errors and remove backup files +- fixes 1084707 + +* Fri Aug 15 2014 Fedora Release Engineering - 4.3-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jul 13 2014 Mukundan Ragavan - 4.3-10 +- Removed non-free files, fixes bz#1114264 + +* Fri Jun 06 2014 Fedora Release Engineering - 4.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Jan 06 2014 Björn Esser - 4.3-8 +- fixed FTBFS if "-Werror=format-security" flag is used (#1037343) +- devel-pkg must Requires: %%{name}%%{?_isa} +- apply proper LDFLAGS +- added needed bits for el5 +- reenable testsuite using Patch3 + +* Fri Oct 4 2013 Orion Poplawski - 4.3-7 +- Rebuild for atlas 3.10 +- Handle UnversionedDocDirs change + +* Fri Aug 02 2013 Fedora Release Engineering - 4.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Mar 25 2013 Shakthi Kannan 4.3-5 +- Ship SuperLU examples + +* Wed Feb 13 2013 Fedora Release Engineering - 4.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Aug 25 2012 Shakthi Kannan 4.3-3 +- Use README in main package and DOC in devel package +- chmod a-x on SRC/qselect.c +- Remove -latlas linking in prep section +- Added Patch comments +- Use name RPM macro in patch name + +* Wed Feb 01 2012 Shakthi Kannan 4.3-2 +- Use atlas library instead of blas. +- Use RPM_OPT_FLAGS and LIBS when building sources. +- Use macros as required for name and version. + +* Fri Jan 06 2012 Shakthi Kannan 4.3-1 +- First release.