summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/qt-base/package.py120
-rw-r--r--var/spack/repos/builtin/packages/qt-declarative/package.py45
-rw-r--r--var/spack/repos/builtin/packages/qt-quick3d/package.py51
-rw-r--r--var/spack/repos/builtin/packages/qt-quicktimeline/package.py31
-rw-r--r--var/spack/repos/builtin/packages/qt-shadertools/package.py44
5 files changed, 129 insertions, 162 deletions
diff --git a/var/spack/repos/builtin/packages/qt-base/package.py b/var/spack/repos/builtin/packages/qt-base/package.py
index e83ccafb22..0f069807e3 100644
--- a/var/spack/repos/builtin/packages/qt-base/package.py
+++ b/var/spack/repos/builtin/packages/qt-base/package.py
@@ -4,24 +4,96 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
+import re
import shutil
import sys
+import llnl.util.tty as tty
+
from spack.operating_systems.mac_os import macos_version
from spack.package import *
MACOS_VERSION = macos_version() if sys.platform == "darwin" else None
-class QtBase(CMakePackage):
- """Qt Base (Core, Gui, Widgets, Network, ...)"""
+class QtPackage(CMakePackage):
+ """Base package for Qt6 components"""
homepage = "https://www.qt.io"
- url = "https://github.com/qt/qtbase/archive/refs/tags/v6.3.1.tar.gz"
- list_url = "https://github.com/qt/qtbase/tags"
+
+ @staticmethod
+ def get_url(qualname):
+ _url = "https://github.com/qt/{}/archive/refs/tags/v6.2.3.tar.gz"
+ return _url.format(qualname.lower())
+
+ @staticmethod
+ def get_list_url(qualname):
+ _list_url = "https://github.com/qt/{}/tags"
+ return _list_url.format(qualname.lower())
+
+ generator = "Ninja"
maintainers("wdconinc", "sethrj")
+ # Default dependencies for all qt-* components
+ depends_on("cmake@3.16:", type="build")
+ depends_on("ninja", type="build")
+ depends_on("pkgconfig", type="build")
+ depends_on("python", type="build")
+
+ # List of unnecessary directories in src/3rdparty
+ vendor_deps_to_remove = []
+
+ @run_after("patch")
+ def remove_vendor_deps(self, vendor_dir, vendor_deps_to_remove):
+ """Remove src/3rdparty libraries that are provided by spack"""
+ vendor_dir = join_path(self.stage.source_path, "src", "3rdparty")
+ with working_dir(vendor_dir):
+ for dep in os.listdir():
+ if os.path.isdir(dep):
+ if dep in vendor_deps_to_remove:
+ shutil.rmtree(dep)
+
+ def cmake_args(self):
+ # Start with upstream cmake_args
+ args = super().cmake_args()
+
+ # Qt components typically install cmake config files in a single prefix,
+ # so we have to point them to the cmake config files of dependencies
+ qt_prefix_path = []
+ re_qt = re.compile("qt-.*")
+ for dep in self.spec.dependencies():
+ if re_qt.match(dep.name):
+ qt_prefix_path.append(self.spec[dep.name].prefix)
+
+ # Now append all qt-* dependency prefixex into a prefix path
+ args.append(self.define("QT_ADDITIONAL_PACKAGES_PREFIX_PATH", ":".join(qt_prefix_path)))
+
+ return args
+
+ @run_after("install")
+ def install_config_summary(self):
+ """Copy the config.summary into the prefix"""
+
+ # Copy to package-name-prefixed file to avoid clashes in views
+ with working_dir(self.build_directory):
+ copy("config.summary", self.name + ".config.summary")
+ install(self.name + ".config.summary", self.prefix)
+
+ # Warn users that this config summary is only for info purpose,
+ # and should not be relied upon for downstream parsing.
+ tty.warn("config.summary in prefix is a temporary feature only")
+
+
+class QtBase(QtPackage):
+ """Qt Base (Core, Gui, Widgets, Network, ...)"""
+
+ url = QtPackage.get_url(__qualname__)
+ list_url = QtPackage.get_list_url(__qualname__)
+
+ version("6.4.2", sha256="c138ae734cfcde7a92a7efd97a902e53f3cd2c2f89606dfc482d0756f60cdc23")
+ version("6.4.1", sha256="0ef6db6b3e1074e03dcae7e689144af66fd51b95a6efe949d40281cc43e6fecf")
+ version("6.4.0", sha256="fbc462816bf5b87d521e9f69cebe0ce331de2258396e0932fa580283f07fce0c")
version("6.3.2", sha256="95b78830a99f417ff34ee784ab78f5eeb7bb12adb16d137c3026434c44a904dd")
version("6.3.1", sha256="4393e8cea0c58b1e0e901735fcffad141261576a0fa414ed6309910ac3d49df9")
version("6.3.0", sha256="c50dc73f633e6c0f6ee3f51980c698800f1a0cadb423679bcef18e446ac72138")
@@ -45,13 +117,6 @@ class QtBase(CMakePackage):
variant("opengl", default=False, when="+gui", description="Build with OpenGL support.")
variant("widgets", default=True, when="+gui", description="Build with widgets.")
- generator = "Ninja"
-
- depends_on("cmake@3.16:", type="build")
- depends_on("ninja", type="build")
- depends_on("pkgconfig", type="build")
- depends_on("python", type="build")
-
# Dependencies, then variant- and version-specific dependencies
depends_on("double-conversion")
depends_on("icu4c")
@@ -93,32 +158,19 @@ class QtBase(CMakePackage):
for filename in ["CMakeCache.txt", "config.summary"]
]
- def patch(self):
- vendor_dir = join_path(self.stage.source_path, "src", "3rdparty")
- vendor_deps_to_keep = [
- "blake2",
- "easing",
- "forkfd",
- "freebsd",
- "icc",
- "md4",
- "md4c",
- "md5",
- "rfc6234",
- "sha1",
- "sha3",
- "tinycbor",
- "VulkanMemoryAllocator",
- ]
- with working_dir(vendor_dir):
- for dep in os.listdir():
- if os.path.isdir(dep):
- if dep not in vendor_deps_to_keep:
- shutil.rmtree(dep)
+ vendor_deps_to_remove = [
+ "double-conversion",
+ "freetype",
+ "harfbuzz-ng",
+ "libjpeg",
+ "libpng",
+ "libpsl",
+ ]
def cmake_args(self):
spec = self.spec
- args = []
+
+ args = super().cmake_args()
def define(cmake_var, value):
args.append(self.define(cmake_var, value))
diff --git a/var/spack/repos/builtin/packages/qt-declarative/package.py b/var/spack/repos/builtin/packages/qt-declarative/package.py
index 34f2aa4658..d9c50a83dd 100644
--- a/var/spack/repos/builtin/packages/qt-declarative/package.py
+++ b/var/spack/repos/builtin/packages/qt-declarative/package.py
@@ -4,52 +4,29 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-import os
-import shutil
-
from spack.package import *
+from spack.pkg.builtin.qt_base import QtBase, QtPackage
-class QtDeclarative(CMakePackage):
+class QtDeclarative(QtPackage):
"""Qt Declarative (Quick 2)."""
- homepage = "https://www.qt.io"
- url = "https://github.com/qt/qtdeclarative/archive/refs/tags/v6.2.3.tar.gz"
- list_url = "https://github.com/qt/qtdeclarative/tags"
-
- maintainers("wdconinc", "sethrj")
+ url = QtPackage.get_url(__qualname__)
+ list_url = QtPackage.get_list_url(__qualname__)
+ version("6.4.2", sha256="dec3599b55f75cff044cc6384fa2f7e9505f8a48af1b4c185c2789e2dafabda6")
+ version("6.4.1", sha256="23b5c91e98ec2b8a4118a3d3ace0c2e61b355cc8f2ccb87d189708b69446f917")
+ version("6.4.0", sha256="daf7b97be51451af5afa35e1c0421fb8964003852088b0293c144a12bd664cd1")
version("6.3.2", sha256="140a3c4973d56d79abf5fea9ae5cf13b3ef7693ed1d826b263802926a4ba84b6")
version("6.3.1", sha256="1606723c2cc150c9b7339fd33ca5e2ca00d6e738e119c52a1d37ca12d3329ba9")
version("6.3.0", sha256="b7316d6c195fdc31ecbf5ca2acf2888737539919a02ff8f11a911432d50c17ac")
version("6.2.4", sha256="cd939d99c37e7723268804b9516e32f8dd64b985d847469c78b66b5f4481c548")
version("6.2.3", sha256="eda82abfe685a6ab5664e4268954622ccd05cc9ec8fb16eaa453c54900591baf")
- generator = "Ninja"
-
- # Changing default to Release for typical use in HPC contexts
- variant(
- "build_type",
- default="Release",
- values=("Release", "Debug", "RelWithDebInfo", "MinSizeRel"),
- description="CMake build type",
- )
+ # Testing requires +network
+ depends_on("qt-base +network", type="test")
- depends_on("cmake@3.16:", type="build")
- depends_on("ninja", type="build")
- depends_on("pkgconfig", type="build")
- depends_on("python", when="@5.7.0:", type="build")
-
- _versions = ["6.3.2", "6.3.1", "6.3.0", "6.2.4", "6.2.3"]
- for v in _versions:
+ for _v in QtBase.versions:
+ v = str(_v)
depends_on("qt-base@" + v, when="@" + v)
depends_on("qt-shadertools@" + v, when="@" + v)
-
- def patch(self):
- vendor_dir = join_path(self.stage.source_path, "src", "3rdparty")
- vendor_deps_to_keep = ["masm"]
- with working_dir(vendor_dir):
- for dep in os.listdir():
- if os.path.isdir(dep):
- if dep not in vendor_deps_to_keep:
- shutil.rmtree(dep)
diff --git a/var/spack/repos/builtin/packages/qt-quick3d/package.py b/var/spack/repos/builtin/packages/qt-quick3d/package.py
index 8ba06d999f..dad09ddeef 100644
--- a/var/spack/repos/builtin/packages/qt-quick3d/package.py
+++ b/var/spack/repos/builtin/packages/qt-quick3d/package.py
@@ -4,63 +4,38 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-import os
-import shutil
-
from spack.package import *
+from spack.pkg.builtin.qt_base import QtBase, QtPackage
-class QtQuick3d(CMakePackage):
+class QtQuick3d(QtPackage):
"""A new module and API for defining 3D content in Qt Quick."""
- homepage = "https://www.qt.io"
- url = "https://github.com/qt/qtquick3d/archive/refs/tags/v6.2.3.tar.gz"
- list_url = "https://github.com/qt/qtquick3d/tags"
-
- maintainers("wdconinc", "sethrj")
+ url = QtPackage.get_url(__qualname__)
+ list_url = QtPackage.get_list_url(__qualname__)
+ version("6.4.2", sha256="940145615fe3c4c8fb346c5bfc10f94fc7a4005c8c187886e0f3088ea0ce0778")
+ version("6.4.1", sha256="67daeed69b9e7b3da516c6205e737fdba30a267978c1fb9d34723a6dc5588585")
+ version("6.4.0", sha256="37987536da151b7c2cddabfde734759ebe6173708d32cb85aa008e151751270e")
version("6.3.2", sha256="a3ec81393f1cd45eb18ee3d47582998679eef141b856bdd2baa2d41f019a0eea")
version("6.3.1", sha256="79f0813ff776dc2aa07a8513ecd9d550dd8d449dc8fcd834fb0c9b22ea4a1893")
version("6.3.0", sha256="413dec87828155ea0c0424e6b40c777bf0710f1ffaf98969c5d8b19ad3992823")
version("6.2.4", sha256="7292ed4373a92913c6811f2faa5191f0426f84bd93a3f6eb7d54b62626b56db5")
version("6.2.3", sha256="35d06edbdd83b7d781b70e0bada18911fa9b774b6403589d5b21813a73584d80")
- generator = "Ninja"
-
- # Changing default to Release for typical use in HPC contexts
- variant(
- "build_type",
- default="Release",
- values=("Release", "Debug", "RelWithDebInfo", "MinSizeRel"),
- description="CMake build type",
- )
-
- depends_on("cmake@3.16:", type="build")
- depends_on("ninja", type="build")
- depends_on("pkgconfig", type="build")
- depends_on("python", when="@5.7.0:", type="build")
-
depends_on("assimp@5.0.1:")
+ depends_on("embree", when="@6.4:")
+
+ vendor_deps_to_remove = ["assimp", "embree"]
- _versions = ["6.3.2", "6.3.1", "6.3.0", "6.2.4", "6.2.3"]
- for v in _versions:
+ for _v in QtBase.versions:
+ v = str(_v)
depends_on("qt-base@" + v, when="@" + v)
depends_on("qt-declarative@" + v, when="@" + v)
depends_on("qt-quicktimeline@" + v, when="@" + v)
- def patch(self):
- vendor_dir = join_path(self.stage.source_path, "src", "3rdparty")
- vendor_deps_to_keep = ["xatlas"]
- with working_dir(vendor_dir):
- for dep in os.listdir():
- if os.path.isdir(dep):
- if dep not in vendor_deps_to_keep:
- shutil.rmtree(dep)
-
def cmake_args(self):
- args = [
- # Qt components typically install cmake config files in a single prefix
- self.define("QT_ADDITIONAL_PACKAGES_PREFIX_PATH", self.spec["qt-declarative"].prefix),
+ args = super().cmake_args() + [
self.define("FEATURE_quick3d_assimp", True),
self.define("FEATURE_system_assimp", True),
]
diff --git a/var/spack/repos/builtin/packages/qt-quicktimeline/package.py b/var/spack/repos/builtin/packages/qt-quicktimeline/package.py
index a3401a3263..d35b0acefa 100644
--- a/var/spack/repos/builtin/packages/qt-quicktimeline/package.py
+++ b/var/spack/repos/builtin/packages/qt-quicktimeline/package.py
@@ -5,38 +5,25 @@
from spack.package import *
+from spack.pkg.builtin.qt_base import QtBase, QtPackage
-class QtQuicktimeline(CMakePackage):
+class QtQuicktimeline(QtPackage):
"""Module for keyframe-based timeline construction."""
- homepage = "https://www.qt.io"
- url = "https://github.com/qt/qtquicktimeline/archive/refs/tags/v6.2.3.tar.gz"
- list_url = "https://github.com/qt/qtquicktimeline/tags"
-
- maintainers("wdconinc", "sethrj")
+ url = QtPackage.get_url(__qualname__)
+ list_url = QtPackage.get_list_url(__qualname__)
+ version("6.4.2", sha256="af7449bf5954d2309081d6d65af7fd31cb11a5f8dc5f414163120d582f82353f")
+ version("6.4.1", sha256="20450687941e6e12e1adf428114776c304d14447d61a4e8b08050c7c18463ee7")
+ version("6.4.0", sha256="b5f88beaa726032141fab91b84bc3b268f6213518301c4ddcfa7d116fd08bdab")
version("6.3.2", sha256="ca6e53a92b022b49098c15f2cc5897953644de8477310696542a03bbbe5666aa")
version("6.3.1", sha256="ba1e808d4c0fce899c235942df34ae5d349632f61a302d14feeae7465cf1f197")
version("6.3.0", sha256="09e27bbdefbbf50d15525d26119a00d86eba76d2d1bc9421557d1ed86edcacdf")
version("6.2.4", sha256="d73cb33e33f0b7a1825b863c22e6b552ae86aa841bcb805a41aca02526a4e8bc")
version("6.2.3", sha256="bbb913398d8fb6b5b20993b5e02317de5c1e4b23a5357dd5d08a237ada6cc7e2")
- generator = "Ninja"
-
- depends_on("cmake@3.16:", type="build")
- depends_on("ninja", type="build")
- depends_on("pkgconfig", type="build")
- depends_on("python", when="@5.7.0:", type="build")
-
- _versions = ["6.3.2", "6.3.1", "6.3.0", "6.2.4", "6.2.3"]
- for v in _versions:
+ for _v in QtBase.versions:
+ v = str(_v)
depends_on("qt-base@" + v, when="@" + v)
depends_on("qt-declarative@" + v, when="@" + v)
-
- def cmake_args(self):
- args = [
- # Qt components typically install cmake config files in a single prefix
- self.define("QT_ADDITIONAL_PACKAGES_PREFIX_PATH", self.spec["qt-declarative"].prefix)
- ]
- return args
diff --git a/var/spack/repos/builtin/packages/qt-shadertools/package.py b/var/spack/repos/builtin/packages/qt-shadertools/package.py
index f043d43ffd..a92609da3b 100644
--- a/var/spack/repos/builtin/packages/qt-shadertools/package.py
+++ b/var/spack/repos/builtin/packages/qt-shadertools/package.py
@@ -4,53 +4,29 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-import os
-import shutil
-
from spack.package import *
+from spack.pkg.builtin.qt_base import QtBase, QtPackage
-class QtShadertools(CMakePackage):
+class QtShadertools(QtPackage):
"""APIs and tools in this module provide the producer functionality for the
shader pipeline that allows Qt Quick to operate on Vulkan, Metal, and
Direct3D, in addition to OpenGL."""
- homepage = "https://www.qt.io"
- url = "https://github.com/qt/qtshadertools/archive/refs/tags/v6.2.3.tar.gz"
- list_url = "https://github.com/qt/qtshadertools/tags"
-
- maintainers("wdconinc", "sethrj")
+ url = QtPackage.get_url(__qualname__)
+ list_url = QtPackage.get_list_url(__qualname__)
+ version("6.4.2", sha256="7f29a78769f454fe529595acb693aa67812e80d894162ddad3f0444f65a22268")
+ version("6.4.1", sha256="d325724c4ed79c759ac8cbbca5f9fd4b0e6e8d61a9ac58921cb1dac75c104687")
+ version("6.4.0", sha256="51bf312965bd673193221cd49019f504feb79c0bf0ff01d6a6ca5c8d15f9d7c1")
version("6.3.2", sha256="ec73303e6c91cddae402b1ac0d18a0d35619f348785514be30cec2791cd63faa")
version("6.3.1", sha256="1b8b18b6ece4d92d0bf60a3b2a9924b45c369968cc77217796434ac7c5c6628f")
version("6.3.0", sha256="3c36d83fc036a144722ce056b2840260005dcbd338e11b9c527d7266a54afd45")
version("6.2.4", sha256="c3332d91e0894086634d5f8d40638439e6e3653a3a185e1b5f5d23ae3b9f51a1")
version("6.2.3", sha256="658c4acc2925e57d35bbd38cdf49c08297555ed7d632f9e86bfef76e6d861562")
- generator = "Ninja"
-
- # Changing default to Release for typical use in HPC contexts
- variant(
- "build_type",
- default="Release",
- values=("Release", "Debug", "RelWithDebInfo", "MinSizeRel"),
- description="CMake build type",
- )
+ depends_on("qt-base +gui")
- depends_on("cmake@3.16:", type="build")
- depends_on("ninja", type="build")
- depends_on("pkgconfig", type="build")
- depends_on("python", when="@5.7.0:", type="build")
-
- _versions = ["6.3.2", "6.3.1", "6.3.0", "6.2.4", "6.2.3"]
- for v in _versions:
+ for _v in QtBase.versions:
+ v = str(_v)
depends_on("qt-base@" + v, when="@" + v)
-
- def patch(self):
- vendor_dir = join_path(self.stage.source_path, "src", "3rdparty")
- vendor_deps_to_keep = ["glslang", "patches", "SPIRV-Cross"]
- with working_dir(vendor_dir):
- for dep in os.listdir():
- if os.path.isdir(dep):
- if dep not in vendor_deps_to_keep:
- shutil.rmtree(dep)