diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..0a80fdce31f59c062e2abba28776e9521eddff30 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.gz filter=lfs diff=lfs merge=lfs -text diff --git a/.lfsconfig b/.lfsconfig new file mode 100644 index 0000000000000000000000000000000000000000..ccaef69f9570746facf357146189c665760b5926 --- /dev/null +++ b/.lfsconfig @@ -0,0 +1,2 @@ +[lfs] + url = https://artlfs.openeuler.openatom.cn/src-openEuler/SuperLU diff --git a/SuperLU-fix_example_builds.patch b/SuperLU-fix_example_builds.patch new file mode 100644 index 0000000000000000000000000000000000000000..aa1c4b729d3143546c52ce58e5719c4befb9c272 --- /dev/null +++ b/SuperLU-fix_example_builds.patch @@ -0,0 +1,54 @@ +--- a/EXAMPLE/Makefile.orig 2020-10-18 00:23:21.000000000 +0200 ++++ b/EXAMPLE/Makefile 2021-01-29 17:58:26.396762602 +0100 +@@ -101,10 +101,10 @@ + $(LOADER) $(LOADOPTS) $(SLINXEXM3) $(LIBS) -lm -o $@ + + sitersol: $(SITSOL) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(SITSOL) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(SITSOL) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + sitersol1: $(SITSOL1) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(SITSOL1) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(SITSOL1) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + dlinsol: $(DLINEXM) $(SUPERLULIB) + $(LOADER) $(LOADOPTS) $(DLINEXM) $(LIBS) -lm -o $@ +@@ -128,10 +128,10 @@ + $(LOADER) $(LOADOPTS) $(SUPERLUEXM) $(LIBS) -lm -o $@ + + ditersol: $(DITSOL) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(DITSOL) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(DITSOL) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + ditersol1: $(DITSOL1) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(DITSOL1) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(DITSOL1) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + clinsol: $(CLINEXM) $(SUPERLULIB) + $(LOADER) $(LOADOPTS) $(CLINEXM) $(LIBS) -lm -o $@ +@@ -152,10 +152,10 @@ + $(LOADER) $(LOADOPTS) $(CLINXEXM3) $(LIBS) -lm -o $@ + + citersol: $(CITSOL) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(CITSOL) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(CITSOL) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + citersol1: $(CITSOL1) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(CITSOL1) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(CITSOL1) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + zlinsol: $(ZLINEXM) $(SUPERLULIB) + $(LOADER) $(LOADOPTS) $(ZLINEXM) $(LIBS) -lm -o $@ +@@ -176,10 +176,10 @@ + $(LOADER) $(LOADOPTS) $(ZLINXEXM3) $(LIBS) -lm -o $@ + + zitersol: $(ZITSOL) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(ZITSOL) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(ZITSOL) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + zitersol1: $(ZITSOL1) $(SUPERLULIB) +- $(LOADER) $(LOADOPTS) $(ZITSOL1) $(LIBS) -lm -o $@ ++ $(LOADER) $(LOADOPTS) $(ZITSOL1) $(LIBS) $(TPL_BLAS_LIBRARIES) -lm -o $@ + + .c.o: + $(CC) $(CFLAGS) $(CDEFS) $(INCLUDEDIR) -c $< $(VERBOSE) diff --git a/SuperLU.spec b/SuperLU.spec index 10485d12542a0fb1b87465efb9a0b71a9220e54d..869b64eab5e8bae9dca008f2a6de9513ab163ed4 100644 --- a/SuperLU.spec +++ b/SuperLU.spec @@ -1,13 +1,14 @@ Name: SuperLU -Version: 6.0.1 -Release: 4 +Version: 7.0.1 +Release: 1 Summary: Library for the direct solution of large, sparse, nonsymmetric systems of linear equations License: BSD-3-Clause and GPL-2.0-or-later -URL: http://crd-legacy.lbl.gov/~xiaoye/SuperLU/ +URL: https://portal.nersc.gov/project/sparse/superlu/ Source0: https://github.com/xiaoyeli/superlu/archive/v%{version}/superlu-%{version}.tar.gz BuildRequires: openblas-devel openblas-srpm-macros cmake gcc-gfortran csh BuildRequires: chrpath Patch0001: superlu-removemc64.patch +Patch0002: SuperLU-fix_example_builds.patch %description The library is written in C and is callable from either C or Fortran program. It uses MPI, OpenMP and @@ -46,14 +47,15 @@ sed -e 's|-O0|-O2|g' -i SRC/CMakeLists.txt %install %cmake_install -chrpath -d %{buildroot}%{_libdir}/libsuperlu.so.6* +chrpath -d %{buildroot}%{_libdir}/libsuperlu.so.%{version_major}* %check %ctest %files -%doc License.txt -%{_libdir}/libsuperlu.so.6* +%license License.txt +%{_libdir}/libsuperlu.so.%{version_major} +%{_libdir}/libsuperlu.so.%{version_major}.* %files devel %{_includedir}/* @@ -65,6 +67,9 @@ chrpath -d %{buildroot}%{_libdir}/libsuperlu.so.6* %doc DOC EXAMPLE FORTRAN %changelog +* Tue Sep 30 2025 Funda Wang - 7.0.1-1 +- update to 7.0.1 + * Thu Mar 20 2025 Funda Wang - 6.0.1-4 - build with cmake rather than cmake3 diff --git a/SuperLU.yaml b/SuperLU.yaml index 81180378ef78e975759896dfee4c6dddf79e0ec1..9f98b5e8ed5267f51afb8e2557fa12e7af922fc9 100644 --- a/SuperLU.yaml +++ b/SuperLU.yaml @@ -1,4 +1,4 @@ -version_control: git -src_repo: https://github.com/xiaoyeli/superlu +version_control: github +src_repo: xiaoyeli/superlu tag_prefix: ^v separator: . diff --git a/superlu-6.0.1.tar.gz b/superlu-6.0.1.tar.gz deleted file mode 100644 index bc61531950e30b7cce55f3bda60d336f00da65b4..0000000000000000000000000000000000000000 Binary files a/superlu-6.0.1.tar.gz and /dev/null differ diff --git a/superlu-7.0.1.tar.gz b/superlu-7.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..317b6991e0ed7d7ef022a13891671970704817b7 --- /dev/null +++ b/superlu-7.0.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86dcca1e086f8b8079990d07f00eb707fc9ef412cf3b2ce808b37956f0de2cb8 +size 2515612 diff --git a/superlu-removemc64.patch b/superlu-removemc64.patch index 71c935014186487d1b99d09d44aac893a0dd3a00..ff257e27a25ad66d0478c8ed45979c814d0b9264 100644 --- a/superlu-removemc64.patch +++ b/superlu-removemc64.patch @@ -1,7 +1,5 @@ -diff --git a/SRC/mc64ad.c b/SRC/mc64ad.c -index 97fa736..3f6b884 100644 ---- a/SRC/mc64ad.c -+++ b/SRC/mc64ad.c +--- a/SRC/mc64ad.c 2016-05-22 17:58:44.000000000 +0200 ++++ b/SRC/mc64ad.c 2018-04-13 17:13:23.571981656 +0200 @@ -1,2645 +1,16 @@ -/* mc64ad.f -- translated by f2c (version 20100827). - You must link the resulting object file with libf2c: @@ -11,9 +9,7 @@ index 97fa736..3f6b884 100644 - -- in that order, at the end of the command line, as in - cc *.o -lf2c -lm - Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., -+#include -+#include - +- - http://www.netlib.org/f2c/libf2c.zip -*/ - @@ -95,7 +91,7 @@ index 97fa736..3f6b884 100644 -/* If it is negative, these messages are suppressed. */ - -/* ICNTL(4) has default value 0. */ --/* If left at the defaut value, the incoming data is checked for */ +-/* If left at the default value, the incoming data is checked for */ -/* out-of-range indices and duplicates. Setting ICNTL(4) to any */ -/* other will avoid the checks but is likely to cause problems */ -/* later if out-of-range indices or duplicates are present. */ @@ -1555,8 +1551,7 @@ index 97fa736..3f6b884 100644 - irn, double *a, int *iperm, int_t *numx, int_t *w, - int_t *len, int_t *lenl, int_t *lenh, int_t *fc, int_t *iw, - int_t *iw4) -+void mc64id_(int *a) - { +-{ - /* System generated locals */ - int_t i__1, i__2, i__3, i__4; - @@ -1579,10 +1574,7 @@ index 97fa736..3f6b884 100644 -/* *** any of the subroutines. *** */ -/* *** Any problems? Contact ... */ -/* Iain Duff (I.Duff@rl.ac.uk) or Jacko Koster (jak@ii.uib.no) *** */ -+ fprintf(stderr, "SuperLU: MC64 functionality not available (it uses non-free code). Aborting.\n"); -+ abort(); -+} - +- -/* N, NE, IP, IRN, are described in MC64A/AD. */ -/* A is a REAL (DOUBLE PRECISION in the D-version) array of length NE. */ -/* A(K), K=1..NE, must be set to the value of the entry that */ @@ -1875,10 +1867,7 @@ index 97fa736..3f6b884 100644 -/* Subroutine */ int_t mc64qd_(int_t *ip, int_t *lenl, int_t *lenh, - int_t *w, int_t *wlen, double *a, int_t *nval, double * - val) -+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[]) - { +-{ - /* System generated locals */ - int_t i__1, i__2, i__3; - @@ -2657,6 +2646,20 @@ index 97fa736..3f6b884 100644 -} /* mc64wd_ */ - - ++#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(); +} +