From 81fe460194477fb54dcbb83edb9c0a5abf406539 Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Thu, 16 May 2024 19:00:02 -0400 Subject: Gitlab CI: Windows Configs (#43967) Add support for Gitlab CI on Windows This PR adds the config changes required to configure and execute Gitlab pipelines running Windows builds on Windows runners using the existing Gitlab CI infrastructure (and newly added Windows infrastructure). * Adds support for generating child pipelines dispatched to Windows runners * Refactors the relevant pre-scripts, scripts, and post scripts to be compatible with Windows * Adds Windows config section describing Windows jobs * Adds VTK as Windows build stack (to be expanded later) * Modifies proj to build on Windows * Refactors Windows rpath symlinking to avoid system libs and externals --------- Co-authored-by: Ryan Krattiger Co-authored-by: Mike VanDenburgh Co-authored-by: Todd Gamblin Co-authored-by: Scott Wittenburg --- var/spack/repos/builtin/packages/proj/package.py | 7 +++---- var/spack/repos/builtin/packages/wgl/package.py | 16 +++++++++++++++- var/spack/repos/builtin/packages/win-sdk/package.py | 2 +- var/spack/repos/builtin/packages/win-wdk/package.py | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index 633ca182f8..9fe7774e48 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -87,15 +87,14 @@ class Proj(CMakePackage, AutotoolsPackage): when="@6.2:9.1", ) - patch("proj.cmakelists.5.0.patch", when="@5.0") - patch("proj.cmakelists.5.1.patch", when="@5.1:5.2") - # https://proj.org/install.html#build-requirements with when("build_system=cmake"): # CMake 3.19 refactored the FindTiff module interface, update older proj's # to be compatible with this "new" interface # patch replaces the TIFF_LIBRARY variable (no longer used) with TIFF_LIBRARIES - patch("proj-8.1-cmake-3.29-new-tiff-interface.patch", when="+tiff @:9.1.0 ^cmake@3.19:") + patch("proj-8.1-cmake-3.29-new-tiff-interface.patch", when="+tiff @7:9.1.0 ^cmake@3.19:") + patch("proj.cmakelists.5.0.patch", when="@5.0") + patch("proj.cmakelists.5.1.patch", when="@5.1:5.2") conflicts("cmake@3.19:", when="@:7") depends_on("cmake@3.9:", when="@6:", type="build") depends_on("cmake@3.5:", when="@5", type="build") diff --git a/var/spack/repos/builtin/packages/wgl/package.py b/var/spack/repos/builtin/packages/wgl/package.py index 9a3a0bc7e7..7b5ae208c6 100644 --- a/var/spack/repos/builtin/packages/wgl/package.py +++ b/var/spack/repos/builtin/packages/wgl/package.py @@ -14,7 +14,7 @@ class Wgl(Package): homepage = "https://learn.microsoft.com/en-us/windows/win32/opengl/wgl-and-windows-reference" has_code = False - tags = ["windows"] + tags = ["windows", "windows-system"] # hard code the extension as shared lib libraries = ["OpenGL32.Lib"] @@ -36,6 +36,10 @@ class Wgl(Package): version("10.0.26639") version("10.0.20348") + variant( + "plat", values=("x64", "x86", "arm", "arm64"), default="x64", description="Toolchain arch" + ) + # As per https://github.com/spack/spack/pull/31748 this provisory version represents # an arbitrary openGL version designed for maximum compatibility with calling packages # this current version simply reflects the latest OpenGL vesion available at the time of @@ -68,6 +72,16 @@ class Wgl(Package): ver_str = re.search(version_match_pat, lib) return ver_str if not ver_str else Version(ver_str.group()) + @classmethod + def determine_variants(cls, libs, ver_str): + """Allow for determination of toolchain arch for detected WGL""" + variants = [] + for lib in libs: + base, lib_name = os.path.split(lib) + _, arch = os.path.split(base) + variants.append("plat=%s" % arch) + return variants + def _spec_arch_to_sdk_arch(self): spec_arch = str(self.spec.architecture.target.microarchitecture.family).lower() _64bit = "64" in spec_arch diff --git a/var/spack/repos/builtin/packages/win-sdk/package.py b/var/spack/repos/builtin/packages/win-sdk/package.py index 3c96fb1a91..b6aa3ec5f2 100644 --- a/var/spack/repos/builtin/packages/win-sdk/package.py +++ b/var/spack/repos/builtin/packages/win-sdk/package.py @@ -19,7 +19,7 @@ class WinSdk(Package): homepage = "https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/" has_code = False - tags = ["windows"] + tags = ["windows", "windows-system"] # The sdk has many libraries and executables. Record one for detection purposes libraries = ["rcdll.dll"] diff --git a/var/spack/repos/builtin/packages/win-wdk/package.py b/var/spack/repos/builtin/packages/win-wdk/package.py index 8bf9f5b9d0..25dcae8cd5 100644 --- a/var/spack/repos/builtin/packages/win-wdk/package.py +++ b/var/spack/repos/builtin/packages/win-wdk/package.py @@ -18,7 +18,7 @@ class WinWdk(Package): """ homepage = "https://learn.microsoft.com/en-us/windows-hardware/drivers/" - tags = ["windows"] + tags = ["windows", "windows-system"] # The wdk has many libraries and executables. Record one for detection purposes libraries = ["mmos.lib"] -- cgit v1.2.3-70-g09d2