summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorGregor Daiß <G-071@users.noreply.github.com>2023-08-11 07:55:44 +0200
committerGitHub <noreply@github.com>2023-08-11 07:55:44 +0200
commit24256be6d6e6b3e9a9bdd645017c1ce1fdce6bd2 (patch)
tree6ce09e7a1d2157814f848b5298e6623f25db90f5 /var
parent633723236ea1ea84e9cfa4356e95d6e0b20a0a29 (diff)
downloadspack-24256be6d6e6b3e9a9bdd645017c1ce1fdce6bd2.tar.gz
spack-24256be6d6e6b3e9a9bdd645017c1ce1fdce6bd2.tar.bz2
spack-24256be6d6e6b3e9a9bdd645017c1ce1fdce6bd2.tar.xz
spack-24256be6d6e6b3e9a9bdd645017c1ce1fdce6bd2.zip
sgpp: fix build issues (#39086)
* fix(sgpp): Fix installation phase scons args * fix(sgpp): Workaround for distutils deprecation The distutils deprecation warning in Python 3.10 - 3.11 caused problems within the SGpp SConfigure checks by causing failures when looking for Python.h. This commit works around this by adding a patch that simply disables the warning. It also puts limits on the python dependency version until distutils is removed from SGpp. * fix(sgpp): cleanup and simplify * fix(sgpp): Fix style
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/sgpp/disable_disutils_deprecation_warning.patch23
-rw-r--r--var/spack/repos/builtin/packages/sgpp/package.py40
2 files changed, 44 insertions, 19 deletions
diff --git a/var/spack/repos/builtin/packages/sgpp/disable_disutils_deprecation_warning.patch b/var/spack/repos/builtin/packages/sgpp/disable_disutils_deprecation_warning.patch
new file mode 100644
index 0000000000..32fc5bc235
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sgpp/disable_disutils_deprecation_warning.patch
@@ -0,0 +1,23 @@
+diff --git a/site_scons/SGppConfigure.py b/site_scons/SGppConfigure.py
+index e5f54931f..2b0adc82a 100644
+--- a/site_scons/SGppConfigure.py
++++ b/site_scons/SGppConfigure.py
+@@ -3,7 +3,8 @@
+ # use, please see the copyright notice provided with SG++ or at
+ # sgpp.sparsegrids.org
+
+-
++import warnings
++warnings.filterwarnings("ignore", category=DeprecationWarning)
+ import distutils.sysconfig
+ import errno
+ import os
+@@ -311,6 +312,8 @@ def checkPython(config):
+ raise Exception("Python 3 is required for SGpp python support!")
+
+ pythonpath = getOutput(["python3", "-c",
++ "import warnings; "
++ "warnings.filterwarnings(\"ignore\", category=DeprecationWarning); "
+ "import distutils.sysconfig; "
+ "print(distutils.sysconfig.get_python_inc())"])
+ package = "python3-dev"
diff --git a/var/spack/repos/builtin/packages/sgpp/package.py b/var/spack/repos/builtin/packages/sgpp/package.py
index 716bc6fcd0..4aa479aaf0 100644
--- a/var/spack/repos/builtin/packages/sgpp/package.py
+++ b/var/spack/repos/builtin/packages/sgpp/package.py
@@ -22,6 +22,10 @@ class Sgpp(SConsPackage):
version("3.4.0", sha256="450d4002850b0a48c561abe221b634261ca44eee111ca605c3e80797182f40b3")
version("3.3.0", sha256="ca4d5b79f315b425ce69b04940c141451a76848bf1bd7b96067217304c68e2d4")
version("3.2.0", sha256="dab83587fd447f92ed8546eacaac6b8cbe65b8db5e860218c0fa2e42f776962d")
+ # Note: Older versions of SGpp required Python 2 (and offered Python 2 bindings) and have
+ # thus been removed from this list as Spack now requires Python 3.
+ # The last spack release with support for Python 2 is v0.19 - there, the spack package
+ # still supports SGpp versions 3.1.0 and 3.0.0 if required.
# Patches with bugfixes that are necessary to build old SGpp versions
# with spack. Patches are submitted upstream, but need to applied
@@ -42,8 +46,13 @@ class Sgpp(SConsPackage):
# Fixes compilation with AVX512 and datadriven
# Fixed in SGpp in PR https://github.com/SGpp/SGpp/pull/229
patch("avx512_datadriven_compilation.patch", when="@:3.3.0+datadriven")
+ # Continue despite distutils deprecation warning!
+ # distutils will be removed in future SGpp versions. See
+ # https://github.com/SGpp/SGpp/issues/263 for associated issue!
+ # TODO Once distutils is removed from SGpp, limit patch to @:3.4.0
+ patch("disable_disutils_deprecation_warning.patch", when="^python@3.10:3.11")
- variant("python", default=True, description="Provide Python bindings for SGpp", when="@3.2:")
+ variant("python", default=True, description="Provide Python bindings for SGpp")
variant("optimization", default=True, description="Builds the optimization module of SGpp")
variant("pde", default=True, description="Builds the datadriven module of SGpp")
variant("quadrature", default=True, description="Builds the datadriven module of SGpp")
@@ -56,22 +65,17 @@ class Sgpp(SConsPackage):
)
variant("mpi", default=False, description="Enables support for MPI-distributed operations")
- # Java variant deactivated due to spack issue #987
- # variant('java', default=False,
- # description='Provide Java bindings for SGpp')
- # depends_on('swig@3:', when='+java', type=('build'))
- # extends('openjdk', when='+java')
-
# Mandatory dependencies
- depends_on("scons", type=("build"))
- depends_on("scons@3:", when="@3.2.0:", type=("build"))
+ depends_on("scons@3:", type=("build"))
depends_on("zlib-api", type=("link"))
# Python dependencies
extends("python", when="+python")
depends_on("py-pip", when="+python", type="build")
depends_on("py-wheel", when="+python", type="build")
- depends_on("py-setuptools", when="+python", type=("build"))
- depends_on("python@3.7:", when="+python", type=("build", "run"))
+ # TODO allow newer versions once distutils is removed from SGpp
+ depends_on("py-setuptools@:59", type=("build"))
+ # TODO allow newer versions once distutils is removed from SGpp
+ depends_on("python@3.7:3.11", type=("build", "run"))
depends_on("swig@3:", when="+python", type=("build"))
depends_on("py-numpy@1.17:", when="+python", type=("build", "run"))
depends_on("py-scipy@1.3:", when="+python", type=("build", "run"))
@@ -105,7 +109,6 @@ class Sgpp(SConsPackage):
conflicts("+misc", when="-solver")
conflicts("+misc", when="-optimization")
conflicts("+misc", when="-pde")
- conflicts("+misc", when="@1.0.0:3.1.0", msg="The misc module was introduced in version 3.2.0")
# Combigrid module requirements (for 3.2.0 or older)
# newer combigrids have no dependencies
conflicts("+combigrid", when="@1.0.0:3.2.0~optimization")
@@ -138,9 +141,7 @@ class Sgpp(SConsPackage):
# Generate swig bindings?
self.args.append("SG_PYTHON={0}".format("1" if "+python" in spec else "0"))
- # Java variant deactivated due to spack issue #987
- # self.args.append('SG_JAVA={0}'.format(
- # '1' if '+java' in spec else '0'))
+ # Java bindings are now deprecated within SGpp
self.args.append("SG_JAVA=0")
# Which modules to build?
@@ -150,10 +151,7 @@ class Sgpp(SConsPackage):
self.args.append("SG_DATADRIVEN={0}".format("1" if "+datadriven" in spec else "0"))
self.args.append("SG_COMBIGRID={0}".format("1" if "+combigrid" in spec else "0"))
self.args.append("SG_SOLVER={0}".format("1" if "+solver" in spec else "0"))
-
- # Misc flag did not exist in older versions
- if not spec.satisfies("@1.0.0:3.2.0"):
- self.args.append("SG_MISC={0}".format("1" if "+misc" in spec else "0"))
+ self.args.append("SG_MISC={0}".format("1" if "+misc" in spec else "0"))
# SIMD scons parameter (pick according to simd spec)
if "avx512" in self.spec.target:
@@ -181,6 +179,10 @@ class Sgpp(SConsPackage):
return self.args
+ def install_args(self, spec, prefix):
+ # SGpp expects the same args for the install and build commands
+ return self.args
+
@run_after("install")
def python_install(self):
if "+python" in self.spec: