Release 3.16.0

This commit is contained in:
Antonio Trande 2021-10-16 17:15:19 +02:00
parent 39d86b8af9
commit 9645be1945
4 changed files with 15 additions and 159 deletions

2
.gitignore vendored
View File

@ -40,3 +40,5 @@
/petsc4py-3.15.3.tar.gz
/petsc-with-docs-3.15.4.tar.gz
/petsc4py-3.15.4.tar.gz
/petsc-with-docs-3.16.0.tar.gz
/petsc4py-3.16.0.tar.gz

View File

@ -1,133 +0,0 @@
diff --git a/config/gmakegen.py b/config/gmakegen.py
index cc42a25..ca286ac 100755
--- a/config/gmakegen.py
+++ b/config/gmakegen.py
@@ -1,12 +1,127 @@
#!/usr/bin/env python
import os
-from distutils.sysconfig import parse_makefile
import sys
import logging
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from collections import defaultdict
+
+# Embedded distutils.sysconfig.parse_makefile() from Python 3.9
+# To workaround https://bugs.python.org/issue44351
+import re
+# Regexes needed for parsing Makefile (and similar syntaxes,
+# like old-style Setup files).
+_variable_rx = re.compile(r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)")
+_findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)")
+_findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}")
+
+def parse_makefile(fn, g=None):
+ """Parse a Makefile-style file.
+
+ A dictionary containing name/value pairs is returned. If an
+ optional dictionary is passed in as the second argument, it is
+ used instead of a new dictionary.
+ """
+ from distutils.text_file import TextFile
+ fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1, errors="surrogateescape")
+
+ if g is None:
+ g = {}
+ done = {}
+ notdone = {}
+
+ while True:
+ line = fp.readline()
+ if line is None: # eof
+ break
+ m = _variable_rx.match(line)
+ if m:
+ n, v = m.group(1, 2)
+ v = v.strip()
+ # `$$' is a literal `$' in make
+ tmpv = v.replace('$$', '')
+
+ if "$" in tmpv:
+ notdone[n] = v
+ else:
+ try:
+ v = int(v)
+ except ValueError:
+ # insert literal `$'
+ done[n] = v.replace('$$', '$')
+ else:
+ done[n] = v
+
+ # Variables with a 'PY_' prefix in the makefile. These need to
+ # be made available without that prefix through sysconfig.
+ # Special care is needed to ensure that variable expansion works, even
+ # if the expansion uses the name without a prefix.
+ renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS')
+
+ # do variable interpolation here
+ while notdone:
+ for name in list(notdone):
+ value = notdone[name]
+ m = _findvar1_rx.search(value) or _findvar2_rx.search(value)
+ if m:
+ n = m.group(1)
+ found = True
+ if n in done:
+ item = str(done[n])
+ elif n in notdone:
+ # get it on a subsequent round
+ found = False
+ elif n in os.environ:
+ # do it like make: fall back to environment
+ item = os.environ[n]
+
+ elif n in renamed_variables:
+ if name.startswith('PY_') and name[3:] in renamed_variables:
+ item = ""
+
+ elif 'PY_' + n in notdone:
+ found = False
+
+ else:
+ item = str(done['PY_' + n])
+ else:
+ done[n] = item = ""
+ if found:
+ after = value[m.end():]
+ value = value[:m.start()] + item + after
+ if "$" in after:
+ notdone[name] = value
+ else:
+ try: value = int(value)
+ except ValueError:
+ done[name] = value.strip()
+ else:
+ done[name] = value
+ del notdone[name]
+
+ if name.startswith('PY_') \
+ and name[3:] in renamed_variables:
+
+ name = name[3:]
+ if name not in done:
+ done[name] = value
+ else:
+ # bogus variable reference; just drop it since we can't deal
+ del notdone[name]
+
+ fp.close()
+
+ # strip spurious spaces
+ for k, v in done.items():
+ if isinstance(v, str):
+ done[k] = v.strip()
+
+ # save the results in the global dictionary
+ g.update(done)
+ return g
+
+
AUTODIRS = set('ftn-auto ftn-custom f90-custom'.split()) # Automatically recurse into these, if they exist
SKIPDIRS = set('benchmarks build'.split()) # Skip these during the build
NOWARNDIRS = set('tests tutorials'.split()) # Do not warn about mismatch in these

View File

@ -108,7 +108,7 @@
FCFLAGS="-O0 -g -Wl,-z,now -fPIC -I%{_libdir}/gfortran/modules" \\\
%else \
CFLAGS="$CFLAGS -O3 -fPIC" CXXFLAGS="$CXXFLAGS -O3 -fPIC" FFLAGS="$FFLAGS -O3 -fPIC" LDFLAGS="$LDFLAGS -fPIC" \\\
COPTFLAGS="$CFLAGS" CXXOPTFLAGS="$CXXFLAGS" FOPTFLAGS="$FFLAGS" \\\
COPTFLAGS="$CFLAGS -O3" CXXOPTFLAGS="$CXXFLAGS -O3" FOPTFLAGS="$FFLAGS -O3" \\\
FCFLAGS="$FFLAGS -O3 -fPIC" \\\
%endif \
--CC_LINKER_FLAGS="$LDFLAGS" \\\
@ -134,10 +134,8 @@
--with-mkl_sparse_optimize=0 \\\
--with-mkl_cpardiso=0 \\\
--with-mkl_pardiso=0 \\\
--with-python=0 \\\
%if 0%{?fedora} \
--with-cxxlib-autodetect=0 \\\
%endif \
--with-python=0 \\\
--with-cxxlib-autodetect=1 \\\
%if %{with debug} \
--with-debugging=1 \\\
%else \
@ -176,7 +174,7 @@
FCFLAGS="-O0 -g -Wl,-z,now -fPIC -I${MPI_FORTRAN_MOD_DIR}" \\\
%else \
CFLAGS="$CFLAGS -O3 -fPIC" CXXFLAGS="$CXXFLAGS -O3 -fPIC" FFLAGS="$FFLAGS -O3 -fPIC" LDFLAGS="$LDFLAGS -fPIC" \\\
COPTFLAGS="$CFLAGS" CXXOPTFLAGS="$CXXFLAGS" FOPTFLAGS="$FFLAGS" \\\
COPTFLAGS="$CFLAGS -O3" CXXOPTFLAGS="$CXXFLAGS -O3" FOPTFLAGS="$FFLAGS -O3" \\\
FCFLAGS="$FFLAGS -O3 -fPIC" \\\
%endif \
--CC_LINKER_FLAGS="$LDFLAGS" \\\
@ -206,9 +204,7 @@
--with-petsc4py=1 \\\
--with-petsc4py-test-np="`/usr/bin/getconf _NPROCESSORS_ONLN`" \\\
%endif \
%if 0%{?fedora} \
--with-cxxlib-autodetect=0 \\\
%endif \
--with-cxxlib-autodetect=1 \\\
--with-threadsafety=0 --with-log=1 \\\
%if %{with debug} \
--with-debugging=1 \\\
@ -273,12 +269,12 @@
%global mpichversion %(rpm -qi mpich | awk -F': ' '/Version/ {print $2}')
%global openmpiversion %(rpm -qi openmpi | awk -F': ' '/Version/ {print $2}')
%global majorver 3
%global releasever 3.15
%global releasever 3.16
Name: petsc
Summary: Portable Extensible Toolkit for Scientific Computation
Version: %{releasever}.4
Release: 4%{?dist}
Version: %{releasever}.0
Release: 1%{?dist}
License: BSD
URL: https://petsc.org/
Source0: https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-with-docs-%{version}.tar.gz
@ -297,14 +293,8 @@ Patch3: %{name}-3.13-fix_mumps_includes.patch
Patch4: %{name}-3.13.0-fix_metis64.patch
Patch5: %{name}-3.15.0-fix_sundials_version.patch
Patch6: %{name}-3.14.1-fix_pkgconfig_file.patch
Patch7: %{name}-3.4.1-avoid_fake_MKL_detection.patch
# Embed distutils.sysconfig.parse_makefile() from Python 3.9
# To workaround https://bugs.python.org/issue44351
# Only used on build time
Patch8: %{name}-3.15.0-workaround-broken-parse_makefile.patch
%if %{with superlu}
BuildRequires: SuperLU-devel >= 5.2.0
%endif
@ -577,12 +567,6 @@ Portable Extensible Toolkit for Scientific Computation (developer files).
cp -a petsc4py-%{version}/* %{name}-%{version}/
rm -rf %{name}-%{version}/*.egg-info
rm -rf petsc4py-%{version}
%if 0%{?python3_version_nodots} >= 310
pushd %{name}-%{version}
%patch8 -p1 -b .backup
popd
%endif
%endif
pushd %{name}-%{version}
@ -1171,6 +1155,9 @@ xvfb-run -a make MAKE_NP=$RPM_BUILD_NCPUS all test -C build64 V=1 MPIEXEC='%{_bu
%endif
%changelog
* Sat Oct 16 2021 Antonio Trande <sagitter@fedoraproject.org> - 3.16.0-1
- Release 3.16.0
* Tue Oct 12 2021 Antonio Trande <sagitter@fedoraproject.org> - 3.15.4-4
- Rebuild for openmpi-4.1.2

View File

@ -1,2 +1,2 @@
SHA512 (petsc-with-docs-3.15.4.tar.gz) = b6a1d48aab1c2639a4c1cbd8b313ace253f1c36eedaa3de3508ffbd6060e1def99e2f516ed9bb509307f614b41791d09342e2c2280c0b2c25dda1092b0e569d2
SHA512 (petsc4py-3.15.4.tar.gz) = 150c46b195f4ba56af8ca219a039901eeaa69a39615e84b844a55d20b1f8df3f6ce32ee1e51853e857dd9e1f4230330c2f16b21951ed56bef8e7eeeb8bfae1bd
SHA512 (petsc-with-docs-3.16.0.tar.gz) = ed58dd2f479b4177176f12aea55c8fd48a39e1f5105194896509d5e469095eb04c48405d4c062cc500b19e0b140a6984b482aa2a211b5fefc5be18d7071ec45a
SHA512 (petsc4py-3.16.0.tar.gz) = e20bcb297bce84eb02b5f24fbd914e916e49c64e1588266f832f2b3bbda2b0fb848f00f000f02e11d127cf3ea220a1d13e86d4f06eb7818c00f526663b1db695