From 316bfd8b7d0d1bc63a7bccf030845775a442a317 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 12 Jun 2023 12:56:55 -0400 Subject: opencascade: new variants (#35345) * opencascade: new variants OpenCascade has several major modules and not every application needs all of them. This adds variants for the various modules. It also uodatws the 3rdparty dependency treatment. * [@spackbot] updating style on behalf of wdconinc * Update var/spack/repos/builtin/packages/opencascade/package.py * opencascade: remove variant foundation_classes (always true) * [@spackbot] updating style on behalf of wdconinc * Update var/spack/repos/builtin/packages/opencascade/package.py --------- Co-authored-by: wdconinc --- .../repos/builtin/packages/opencascade/package.py | 137 ++++++++++++++++----- 1 file changed, 107 insertions(+), 30 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/opencascade/package.py b/var/spack/repos/builtin/packages/opencascade/package.py index ff64c4d7ba..5801b8e1d8 100644 --- a/var/spack/repos/builtin/packages/opencascade/package.py +++ b/var/spack/repos/builtin/packages/opencascade/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -39,6 +41,11 @@ class Opencascade(CMakePackage): extension="tar.gz", sha256="e7f989d52348c3b3acb7eb4ee001bb5c2eed5250cdcceaa6ae97edc294f2cabd", ) + version( + "7.5.3p4", + extension="tar.gz", + sha256="f7571462041694f6bc7fadd94b0c251762078713cb5b0484845b6b8a4d8a0b99", + ) version( "7.5.3", extension="tar.gz", @@ -72,24 +79,65 @@ class Opencascade(CMakePackage): when="@:7.7.0", ) + # Modules, per DAG at https://dev.opencascade.org/doc/refman/html/ + variant("modeling_data", default=True, description="Build Modeling Data module") + variant( + "modeling_algorithms", + default=True, + description="Build Modeling Algorithms module", + when="+modeling_data", + ) + variant( + "visualization", + default=True, + description="Bulid Visualization module", + when="+modeling_algorithms", + ) + variant( + "application_framework", + default=True, + description="Build Application Framework module", + when="+visualization", + ) + variant( + "data_exchange", + default=True, + description="Build Data Exchange module", + when="+application_framework", + ) + variant("draw", default=True, description="Build Draw module", when="+data_exchange") + + # 3rd party variant("tbb", default=False, description="Build with Intel Threading Building Blocks") + variant("tk", default=False, description="Build with Tk support") variant("vtk", default=False, description="Enable VTK support") + variant("ffmpeg", default=False, description="Enable FFmpeg support") variant("freeimage", default=False, description="Build with FreeImage") + variant("freetype", default=False, description="Build with freetype") variant("rapidjson", default=False, description="Build with rapidjson") - depends_on("intel-tbb", when="+tbb") + depends_on("tbb", when="+tbb") + depends_on("intel-tbb@2021.5: build_type=Release", when="@7.7 +tbb") + depends_on("intel-tbb@:2020.3", when="@7.6 +tbb") + depends_on("vtk", when="+vtk") + depends_on("vtk", when="@7.6 +vtk") + + depends_on("ffmpeg", when="+ffmpeg") depends_on("freeimage", when="+freeimage") + depends_on("freetype", when="+freetype") depends_on("rapidjson", when="+rapidjson") - depends_on("freetype") + depends_on("libxext") depends_on("libxmu") depends_on("libxi") depends_on("libxt") depends_on("tcl") - depends_on("tk") + depends_on("tk", when="+tk") depends_on("gl") + conflicts("vtk@9.2", when="@:7.7.0 +vtk") + def url_for_version(self, version): url = ( "https://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=refs/tags/V{0};sf=tgz" @@ -97,34 +145,63 @@ class Opencascade(CMakePackage): return url.format(version.underscored) def cmake_args(self): + spec = self.spec + + def build_module(occt_module): + # CamelCase to snake_case + spack_variant = re.sub(r"(?