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
This commit is contained in:
parent
633723236e
commit
24256be6d6
2 changed files with 44 additions and 19 deletions
|
@ -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"
|
|
@ -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 @@ def build_args(self, spec, prefix):
|
|||
# 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,9 +151,6 @@ def build_args(self, spec, prefix):
|
|||
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"))
|
||||
|
||||
# SIMD scons parameter (pick according to simd spec)
|
||||
|
@ -181,6 +179,10 @@ def build_args(self, spec, prefix):
|
|||
|
||||
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:
|
||||
|
|
Loading…
Reference in a new issue