summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew W Elble <aweits@rit.edu>2023-05-13 22:14:50 -0400
committerGitHub <noreply@github.com>2023-05-13 21:14:50 -0500
commit6e07bf149d8568ea8b3c81f8c2a4c255a41b25e6 (patch)
treedf71b8daa04d074911a8b81de82f6a4cb19ae219
parent811cd5e7efa459ac07028aea43340e0d79fb819b (diff)
downloadspack-6e07bf149d8568ea8b3c81f8c2a4c255a41b25e6.tar.gz
spack-6e07bf149d8568ea8b3c81f8c2a4c255a41b25e6.tar.bz2
spack-6e07bf149d8568ea8b3c81f8c2a4c255a41b25e6.tar.xz
spack-6e07bf149d8568ea8b3c81f8c2a4c255a41b25e6.zip
freecad: new package w/ dependencies/updates (#37557)
* freecad: new package w/ dependencies/updates * review * symbols/debug variants only when autotools
-rw-r--r--var/spack/repos/builtin/packages/coin3d/package.py37
-rw-r--r--var/spack/repos/builtin/packages/flann/package.py4
-rw-r--r--var/spack/repos/builtin/packages/freecad/package.py59
-rw-r--r--var/spack/repos/builtin/packages/med/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-pivy/package.py29
-rw-r--r--var/spack/repos/builtin/packages/py-pyside2/package.py9
-rw-r--r--var/spack/repos/builtin/packages/salome-med/package.py10
7 files changed, 152 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/coin3d/package.py b/var/spack/repos/builtin/packages/coin3d/package.py
index 529e3f5c4c..2626248e34 100644
--- a/var/spack/repos/builtin/packages/coin3d/package.py
+++ b/var/spack/repos/builtin/packages/coin3d/package.py
@@ -7,17 +7,24 @@ from spack.package import *
from spack.pkg.builtin.boost import Boost
-class Coin3d(AutotoolsPackage):
+class Coin3d(AutotoolsPackage, CMakePackage):
"""Coin is an OpenGL-based, 3D graphics library that has its roots in the
Open Inventor 2.1 API, which Coin still is compatible with."""
homepage = "https://github.com/coin3d/coin"
- url = "https://github.com/coin3d/coin/archive/Coin-4.0.0.tar.gz"
+ url = "https://github.com/coin3d/coin/releases/download/Coin-4.0.0/coin-4.0.0-src.tar.gz"
+ version("4.0.0", sha256="e4f4bd57804b8ed0e017424ad2e45c112912a928b83f86c89963df9015251476")
version("3.1.0", sha256="70dd5ef39406e1d9e05eeadd54a5b51884a143e127530876a97744ca54173dc3")
version("3.0.0", sha256="d5c2eb0ecaa5c83d93daf0e9e275e58a6a8dfadc74c873d51b0c939011f81bfa")
version("2.0.0", sha256="6d26435aa962d085b7accd306a0b478069a7de1bc5ca24e22344971852dd097c")
+ build_system(
+ conditional("cmake", when="@4.0.0:"),
+ conditional("autotools", when="@:3.1.0"),
+ default="cmake",
+ )
+
depends_on("boost@1.45.0:", type="build")
# TODO: replace this with an explicit list of components of Boost,
@@ -40,9 +47,31 @@ class Coin3d(AutotoolsPackage):
variant("framework", default=False, description="Do 'UNIX-style' installation on Mac OS X")
variant("shared", default=True, description="Build shared library (off: build static library)")
- variant("debug", default=False, description="Make debug build")
- variant("symbols", default=False, description="Enable debug symbols")
+ variant("debug", default=False, description="Make debug build", when="build_system=autotools")
+ variant(
+ "symbols", default=False, description="Enable debug symbols", when="build_system=autotools"
+ )
+
+ def url_for_version(self, version):
+ if version >= Version("4.0.0"):
+ url = "https://github.com/coin3d/coin/releases/download/Coin-{0}/coin-{0}-src.tar.gz"
+ else:
+ url = "https://github.com/coin3d/coin/archive/Coin-{0}.tar.gz"
+ return url.format(version.dotted)
+
+
+class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
+ def cmake_args(self):
+ args = [
+ self.define_from_variant("COIN_BUILD_DOCUMENTATION_MAN", "man"),
+ self.define_from_variant("COIN_BUILD_DOCUMENTATION_CHM", "html"),
+ self.define_from_variant("COIN_BUILD_MAC_FRAMEWORK", "framework"),
+ self.define_from_variant("COIN_BUILD_SHARED_LIBS", "shared"),
+ ]
+ return args
+
+class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder):
def configure_args(self):
args = []
args += self.enable_or_disable("framework")
diff --git a/var/spack/repos/builtin/packages/flann/package.py b/var/spack/repos/builtin/packages/flann/package.py
index 7c7908404a..cea89ef01e 100644
--- a/var/spack/repos/builtin/packages/flann/package.py
+++ b/var/spack/repos/builtin/packages/flann/package.py
@@ -21,6 +21,7 @@ class Flann(CMakePackage):
homepage = "https://github.com/mariusmuja/flann"
url = "https://github.com/mariusmuja/flann/archive/1.9.1.tar.gz"
+ version("1.9.2", sha256="e26829bb0017f317d9cc45ab83ddcb8b16d75ada1ae07157006c1e7d601c8824")
version("1.9.1", sha256="b23b5f4e71139faa3bcb39e6bbcc76967fbaf308c4ee9d4f5bfbeceaa76cc5d3")
version("1.8.5", sha256="59a9925dac0705b281496ae52b5dfd79d6b69316d37015e3d3b38c859bac4f2f")
version("1.8.4", sha256="ed5843113150b3d6bc4c325fecb51337838a9fc09ad64bdb6aea79d6e610ee13")
@@ -61,6 +62,7 @@ class Flann(CMakePackage):
depends_on("cuda", when="+cuda")
depends_on("mpi", when="+mpi")
depends_on("hdf5", when="+hdf5")
+ depends_on("lz4", when="@1.9.2:")
# HDF5_IS_PARALLEL actually comes from hdf5+mpi
# https://github.com/mariusmuja/flann/blob/06a49513138009d19a1f4e0ace67fbff13270c69/CMakeLists.txt#L108-L112
depends_on(
@@ -77,7 +79,7 @@ class Flann(CMakePackage):
depends_on("googletest", type="test")
# See: https://github.com/mariusmuja/flann/issues/369
- patch("linux-gcc-cmakev3.11-plus.patch", when="%gcc^cmake@3.11:")
+ patch("linux-gcc-cmakev3.11-plus.patch", when="@:1.9.1%gcc^cmake@3.11:")
def patch(self):
# Fix up the python setup.py call inside the install(CODE
diff --git a/var/spack/repos/builtin/packages/freecad/package.py b/var/spack/repos/builtin/packages/freecad/package.py
new file mode 100644
index 0000000000..fa0ee53751
--- /dev/null
+++ b/var/spack/repos/builtin/packages/freecad/package.py
@@ -0,0 +1,59 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class Freecad(CMakePackage):
+ """FreeCAD is an open-source parametric 3D modeler made primarily
+ to design real-life objects of any size. Parametric modeling
+ allows you to easily modify your design by going back into your
+ model history to change its parameters."""
+
+ homepage = "https://www.freecad.org/"
+ url = "https://github.com/FreeCAD/FreeCAD/archive/refs/tags/0.20.2.tar.gz"
+
+ maintainers("aweits")
+
+ version("0.20.2", sha256="46922f3a477e742e1a89cd5346692d63aebb2b67af887b3e463e094a4ae055da")
+
+ depends_on("opencascade")
+ depends_on("xerces-c")
+ depends_on("vtk")
+ depends_on("salome-med")
+ depends_on(
+ "boost+python+filesystem+date_time+graph+iostreams+program_options+regex+serialization+system+thread" # noqa: E501
+ )
+ depends_on("qt@5:")
+ depends_on("swig", type="build")
+ depends_on("netgen")
+ depends_on("pcl")
+ depends_on("coin3d")
+ depends_on("python")
+ depends_on("gmsh+opencascade")
+ depends_on("py-pyside2@1.2.4:", type=("build", "run"))
+ depends_on("py-matplotlib@3.0.2:", type=("build", "run"))
+ depends_on("py-six@1.12.0:", type=("build", "run"))
+ depends_on("py-markdown@3.2.2:", type=("build", "run"))
+ depends_on("py-pivy", type=("build", "run"))
+ depends_on("py-pybind11", type="build")
+
+ def patch(self):
+ filter_file(
+ "# include <Standard_TooManyUsers.hxx>", "", "src/Mod/Part/App/OCCError.h", string=True
+ )
+ filter_file('putenv("PYTHONPATH=");', "", "src/Main/MainGui.cpp", string=True)
+ filter_file('_putenv("PYTHONPATH=");', "", "src/Main/MainGui.cpp", string=True)
+
+ def cmake_args(self):
+ args = []
+ # requires qt5 + webkit, which requires python2
+ args.append("-DBUILD_WEB=OFF")
+ args.append("-DFREECAD_USE_PYBIND11:BOOL=ON")
+ args.append("-DFREECAD_USE_PCL:BOOL=ON")
+ # TODO:
+ # args.append("-DBUILD_FEM_NETGEN:BOOL=ON")
+ # args.append("-DNETGEN_INCLUDEDIR={}".format(self.spec["netgen"].prefix.include))
+ return args
diff --git a/var/spack/repos/builtin/packages/med/package.py b/var/spack/repos/builtin/packages/med/package.py
index 96d8632e28..75c1250a37 100644
--- a/var/spack/repos/builtin/packages/med/package.py
+++ b/var/spack/repos/builtin/packages/med/package.py
@@ -43,6 +43,16 @@ class Med(CMakePackage):
# fix problem where CMake "could not find TARGET hdf5"
patch("med-4.1.0-hdf5-target.patch", when="@4.0.0:4.1.99")
+ def patch(self):
+ # resembles FindSalomeHDF5.patch as in salome-configuration
+ # see https://cmake.org/cmake/help/latest/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.html
+ filter_file(
+ "GET_PROPERTY(_lib_lst TARGET hdf5-shared PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG)", # noqa: E501
+ "#GET_PROPERTY(_lib_lst TARGET hdf5-shared PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG)", # noqa: E501
+ "config/cmake_files/FindMedfileHDF5.cmake",
+ string=True,
+ )
+
def cmake_args(self):
spec = self.spec
diff --git a/var/spack/repos/builtin/packages/py-pivy/package.py b/var/spack/repos/builtin/packages/py-pivy/package.py
new file mode 100644
index 0000000000..9d220f513d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pivy/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class PyPivy(PythonPackage):
+ """Python bindings to coin3d"""
+
+ homepage = "https://github.com/coin3d/pivy"
+ url = "https://github.com/coin3d/pivy/archive/refs/tags/0.6.8.tar.gz"
+
+ version("0.6.8", sha256="c443dd7dd724b0bfa06427478b9d24d31e0c3b5138ac5741a2917a443b28f346")
+
+ depends_on("coin3d")
+ depends_on("py-setuptools", type="build")
+ depends_on("cmake@3.18:", type="build")
+ depends_on("swig", type="build")
+
+ def patch(self):
+ # https://github.com/coin3d/pivy/issues/93
+ filter_file(
+ "project(pivy_cmake_setup NONE)",
+ "project(pivy_cmake_setup)",
+ "distutils_cmake/CMakeLists.txt",
+ string=True,
+ )
diff --git a/var/spack/repos/builtin/packages/py-pyside2/package.py b/var/spack/repos/builtin/packages/py-pyside2/package.py
index 68f913ad39..3c9005d8a6 100644
--- a/var/spack/repos/builtin/packages/py-pyside2/package.py
+++ b/var/spack/repos/builtin/packages/py-pyside2/package.py
@@ -34,7 +34,9 @@ class PyPyside2(PythonPackage):
depends_on("python@2.7.0:2.7,3.5.0:3.5,3.6.1:3.8", when="@:5.14", type=("build", "run"))
depends_on("cmake@3.1:", type="build")
- depends_on("llvm@6:", type="build")
+ # libclang versioning from sources/shiboken2/doc/gettingstarted.rst
+ depends_on("llvm@6", type="build", when="@5.12:5.13")
+ depends_on("llvm@10", type="build", when="@5.15")
depends_on("py-setuptools", type="build")
depends_on("py-packaging", type="build")
depends_on("py-wheel", type="build")
@@ -51,8 +53,13 @@ class PyPyside2(PythonPackage):
args = [
"--parallel={0}".format(make_jobs),
"--ignore-git",
+ # if you want to debug build problems, uncomment this
+ # "--verbose-build",
"--qmake={0}".format(spec["qt"].prefix.bin.qmake),
]
+ if spec.satisfies("^python@3.10:"):
+ args.append("--limited-api=yes")
+
if self.run_tests:
args.append("--build-tests")
return args
diff --git a/var/spack/repos/builtin/packages/salome-med/package.py b/var/spack/repos/builtin/packages/salome-med/package.py
index e9c3c056ff..4173d572c4 100644
--- a/var/spack/repos/builtin/packages/salome-med/package.py
+++ b/var/spack/repos/builtin/packages/salome-med/package.py
@@ -47,6 +47,16 @@ class SalomeMed(CMakePackage):
with working_dir(self.build_directory):
make("test", parallel=False)
+ def patch(self):
+ # resembles FindSalomeHDF5.patch as in salome-configuration
+ # see https://cmake.org/cmake/help/latest/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.html
+ filter_file(
+ "GET_PROPERTY(_lib_lst TARGET hdf5 PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG)", # noqa: E501
+ "#GET_PROPERTY(_lib_lst TARGET hdf5 PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG)", # noqa: E501
+ "config/cmake_files/FindMedfileHDF5.cmake",
+ string=True,
+ )
+
def setup_dependent_build_environment(self, env, dependent_spec):
env.set("HDF5_ROOT_DIR", self.spec["hdf5"].prefix)