From 41117cab1f1d544d70dfd6166ec4bacbfd6b8ff1 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 12 Mar 2026 22:56:12 +0000 Subject: [PATCH 01/45] Update h2yaml versions --- packages/h2yaml/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 7747e9d4..9fe90c81 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -10,6 +10,9 @@ class H2yaml(PythonPackage): homepage = "https://github.com/TApplencourt/h2yaml" url = "https://github.com/TApplencourt/h2yaml/archive/refs/tags/v0.1.1.tar.gz" + version("0.4.1", sha256="c79b1cc766259d9af4562e5c83eede97fba6206ba5223cc3166fc8c045ed180b") + version("0.4.0", sha256="0b7dce0eb82a6bb0fa169628b7d00fa5ca0e00c5a6c0e147f465718ed25a35b3") + version("0.3.2", sha256="57fa0163ae3a27b9a44dc1c85a4886a49a528c30605502faff1ac380fa69e9b6") version("0.3.1", sha256="f1a45e83bd1898add516a380dd0d7b54870f6e9211b9bc068bd73f93f297033f") version("0.3.0", sha256="f78f4c9f4516736ffe000a5ea691557cb7091cff7337af2936483a90eac4ffcd") version("0.1.4", sha256="0c1e3871833a984f6d8375a69659f199eb30bcb51ed45b99c01c33abc7367b7c") @@ -19,7 +22,8 @@ class H2yaml(PythonPackage): depends_on("python@3.10:", type=("build", "run", "test")) depends_on("py-setuptools", type="build") - depends_on("py-libclang@18", type=("run", "test")) + depends_on("py-libclang@18", type=("run", "test"), when="@:0.4.0") + depends_on("llvm+python@18:", type=("run", "test"), when="@0.4.1:") depends_on("py-pyyaml", type=("run", "test")) depends_on("py-pytest", type=("test")) From 4672e2bee2100a88feb7d3e481a73517c36a0ac4 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 13 Mar 2026 01:17:35 +0000 Subject: [PATCH 02/45] Update h2yaml package --- packages/h2yaml/package.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 9fe90c81..109ab765 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -2,6 +2,18 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * +import re +import os +import sys + + +def find_libclang(root): + lib_ext = "dylib" if sys.platform == "darwin" else "so" + regex = re.compile(rf"libclang(?:-\d+)?.{lib_ext}(?:.\d+)?") + for root, dirs, files in os.walk(root): + for file in files: + if regex.match(file): + return os.path.join(root, file) class H2yaml(PythonPackage): @@ -34,6 +46,23 @@ def setup_build_environment(self, env): env.prepend_path("PYTHONPATH", self.stage.source_path) self.setup_test_environment(env) + def setup_run_environment(self, env): + if self.version < Version("0.4.1"): + return + super().setup_run_environment(env) + s = self.spec["llvm"] + llvm_config = os.path.join(s.prefix.bin, "llvm-config-" + str(s.version[0])) + if not os.path.exists(llvm_config): + llvm_config = os.path.join(s.prefix.bin, "llvm-config") + output = Executable(llvm_config)("--libdir", output=str, error=str, fail_on_error=False) + lib_path = output.rstrip() + env.set("LIBCLANG_LIBRARY_FILE", find_libclang(lib_path)) + + def setup_test_environment(self, env): + if self.version < Version("0.4.1"): + return + self.setup_run_environment(env) + @run_after("install") @on_package_attributes(run_tests=True) def install_test(self): From 0b439c43789e5bdc123f3490bf6d5a44c9a65495 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 13 Mar 2026 10:36:20 -0500 Subject: [PATCH 03/45] Pin llvm version to 18 --- packages/h2yaml/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 109ab765..68407bcb 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -35,7 +35,7 @@ class H2yaml(PythonPackage): depends_on("python@3.10:", type=("build", "run", "test")) depends_on("py-setuptools", type="build") depends_on("py-libclang@18", type=("run", "test"), when="@:0.4.0") - depends_on("llvm+python@18:", type=("run", "test"), when="@0.4.1:") + depends_on("llvm+python@18", type=("run", "test"), when="@0.4.1:") depends_on("py-pyyaml", type=("run", "test")) depends_on("py-pytest", type=("test")) From 55e082cb4d1be156c5fe1553b020290a73f84c7e Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 13 Mar 2026 11:14:41 -0500 Subject: [PATCH 04/45] Install libclang and python3-clang --- .github/workflows/presubmit.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 11d4dc1c..9901fe32 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -69,16 +69,16 @@ jobs: with: name: thapi_cache path: ${{ env.CACHE_DIR }} - - name: Checkout Thapi Deps (spack,...) - uses: ./.github/actions/setup-thapi-deps - with: - cache-dir: ${{ env.CACHE_DIR }} - name: Install clang for new parser if: startsWith(matrix.version, 'thapi@develop') run: | # install llvm+clang sudo apt-get install libllvm18 llvm-18 llvm-18-dev - sudo apt-get install libclang-18-dev + sudo apt-get install libclang-18-dev python3-clang-18 + - name: Checkout Thapi Deps (spack,...) + uses: ./.github/actions/setup-thapi-deps + with: + cache-dir: ${{ env.CACHE_DIR }} - name: Install ${{ matrix.version }} if: ${{ matrix.version != 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} run: | From 28d88634fba0a1533c61b9a915adccb7735fdaac Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 13 Mar 2026 11:24:35 -0500 Subject: [PATCH 05/45] Move tmate out of the setup-thapi-deps action --- .github/actions/setup-thapi-deps/action.yml | 5 ----- .github/workflows/presubmit.yml | 13 ++++++++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 656305b7..a55c77f2 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -16,11 +16,6 @@ runs: repository: spack/spack ref: releases/latest path: external/spack - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - with: - detached: true - if: ${{ github.event_name == 'workflow_dispatch' && (inputs.debug_enabled == true || inputs.debug_enabled == 'true') }} - name: Setup spack environment shell: bash run: | diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 9901fe32..2b0a2b78 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -30,12 +30,14 @@ jobs: install_thapi_dependencies: needs: pre_job - if: ${{ needs.pre_job.outputs.should_skip != 'true' }} runs-on: ubuntu-latest name: Install thapi dependencies steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ inputs.debug_enabled }} - name: Checkout Thapi Deps (spack,...) uses: ./.github/actions/setup-thapi-deps with: @@ -51,6 +53,9 @@ jobs: include-hidden-files: true path: ${{ env.CACHE_DIR }} if-no-files-found: error + - name: Block to allow inspecting failures + run: sleep 30m + if: ${{ failure() && inputs.debug_enabled }} install_thapi: strategy: @@ -64,6 +69,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ inputs.debug_enabled }} - name: Download thapi build cache uses: actions/download-artifact@v4 with: @@ -90,6 +98,9 @@ jobs: run: | . external/spack/share/spack/setup-env.sh spack install $SPACK_OPT ${{ matrix.version }} || true + - name: Block to allow inspecting failures + run: sleep 30m + if: ${{ failure() && inputs.debug_enabled }} cleanup: needs: install_thapi From 3566ed9c3dcbd6ca208d0d1034f0a9bf7517742b Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 13 Mar 2026 12:10:56 -0500 Subject: [PATCH 06/45] Patch llvm@18 packages.yml entry to have `+python` --- .github/actions/setup-thapi-deps/action.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index a55c77f2..29406afb 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -30,4 +30,7 @@ runs: # found here: # https://spack.readthedocs.io/en/latest/binary_caches.html spack mirror add --autopush --unsigned thapi_cache ${{ inputs.cache-dir }} - + - name: Add python variant to llvm-18 + shell: bash + run: | + sed -i 's/llvm@18\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml From 4bad5fc8f1551f0a626842b313276aea66bee3fd Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 13 Mar 2026 13:31:30 -0500 Subject: [PATCH 07/45] Mark h2yaml as a build dependency --- packages/thapi/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/thapi/package.py b/packages/thapi/package.py index f9b50bfb..84528c43 100644 --- a/packages/thapi/package.py +++ b/packages/thapi/package.py @@ -77,7 +77,7 @@ class Thapi(AutotoolsPackage): depends_on("libffi") depends_on("mpi", when="+mpi") depends_on("mpi", when="+sync-daemon-mpi") - depends_on("h2yaml@0.3.1:", when="+clang-parser") + depends_on("h2yaml@0.3.1:", type=("build"), when="+clang-parser") # Add dev tools required for THAPI development and testing. depends_on("bats", when="+test-dependencies") From ff3b60e33e0d4ccdb26dee583d9909ca6a287bdf Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 17 Mar 2026 13:15:18 -0500 Subject: [PATCH 08/45] Add the latest h2yaml version --- packages/h2yaml/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 68407bcb..e7fd8e71 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -21,7 +21,9 @@ class H2yaml(PythonPackage): homepage = "https://github.com/TApplencourt/h2yaml" url = "https://github.com/TApplencourt/h2yaml/archive/refs/tags/v0.1.1.tar.gz" + git = "https://github.com/TApplencourt/h2yaml.git" + version("0.4.2", sha256="0e5cc1d7d4507373a9d85dd082e3ffda1436943c9516f7f385471b936bc59f6c") version("0.4.1", sha256="c79b1cc766259d9af4562e5c83eede97fba6206ba5223cc3166fc8c045ed180b") version("0.4.0", sha256="0b7dce0eb82a6bb0fa169628b7d00fa5ca0e00c5a6c0e147f465718ed25a35b3") version("0.3.2", sha256="57fa0163ae3a27b9a44dc1c85a4886a49a528c30605502faff1ac380fa69e9b6") From 82cd44b062a569107cbcdbe87ecf4e14abee2294 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 17 Mar 2026 13:34:55 -0500 Subject: [PATCH 09/45] Appending PYTHONPATH to see if we can import clang --- packages/h2yaml/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index e7fd8e71..5f6f4cbe 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -59,6 +59,7 @@ def setup_run_environment(self, env): output = Executable(llvm_config)("--libdir", output=str, error=str, fail_on_error=False) lib_path = output.rstrip() env.set("LIBCLANG_LIBRARY_FILE", find_libclang(lib_path)) + env.append_path("PYTHONPATH", join_path(self.spec["llvm"].prefix.lib, "python3", "dist-packages")) def setup_test_environment(self, env): if self.version < Version("0.4.1"): From 86f6d9101af1ae49a4a7cd0b153d88799b171834 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 17 Mar 2026 16:55:05 -0500 Subject: [PATCH 10/45] Much cleaner workaround for GitHub CI --- .github/actions/setup-thapi-deps/action.yml | 1 + .github/workflows/presubmit.yml | 5 +++++ packages/h2yaml/package.py | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 29406afb..8183ab39 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -33,4 +33,5 @@ runs: - name: Add python variant to llvm-18 shell: bash run: | + # Trick spack to think that llvm found in packages.yml has +python variant: sed -i 's/llvm@18\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 2b0a2b78..e5323016 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -83,6 +83,11 @@ jobs: # install llvm+clang sudo apt-get install libllvm18 llvm-18 llvm-18-dev sudo apt-get install libclang-18-dev python3-clang-18 + + # Symlink python3-clang-18 package to site-packages so h2yaml won't fail on + # `import clang`. This way, our llvm+python trick will work without an issue. + SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])") + sudo ln -s /usr/lib/python3/dist-packages/clang "$SITE_PACKAGES/clang" - name: Checkout Thapi Deps (spack,...) uses: ./.github/actions/setup-thapi-deps with: diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 5f6f4cbe..e71118f9 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -59,7 +59,7 @@ def setup_run_environment(self, env): output = Executable(llvm_config)("--libdir", output=str, error=str, fail_on_error=False) lib_path = output.rstrip() env.set("LIBCLANG_LIBRARY_FILE", find_libclang(lib_path)) - env.append_path("PYTHONPATH", join_path(self.spec["llvm"].prefix.lib, "python3", "dist-packages")) + env.append_path("PYTHONPATH", join_path(self.spec["llvm"].prefix.lib, f"python{self.spec['python'].version.up_to(2)}", "site-packages")) def setup_test_environment(self, env): if self.version < Version("0.4.1"): From 06ff710a6354ca4bbaf40638f390f621becc2f1a Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 17 Mar 2026 18:08:38 -0500 Subject: [PATCH 11/45] Minor cleanup --- .github/workflows/presubmit.yml | 10 ++++++---- packages/h2yaml/package.py | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index e5323016..c2edf9e3 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -13,6 +13,7 @@ on: env: SPACK_OPT: "--concurrent-packages 2 --show-log-on-error --fail-fast" CACHE_DIR: "${{ github.workspace }}/thapi_cache_${{ github.run_id }}" + LLVM_VER: 18 jobs: pre_job: @@ -81,11 +82,12 @@ jobs: if: startsWith(matrix.version, 'thapi@develop') run: | # install llvm+clang - sudo apt-get install libllvm18 llvm-18 llvm-18-dev - sudo apt-get install libclang-18-dev python3-clang-18 + sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev + sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - # Symlink python3-clang-18 package to site-packages so h2yaml won't fail on - # `import clang`. This way, our llvm+python trick will work without an issue. + # Symlink python3-clang-${LLVM_VER} package to site-packages so h2yaml won't + # fail on `import clang`. This way, our llvm+python trick will work without an + # issue. SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])") sudo ln -s /usr/lib/python3/dist-packages/clang "$SITE_PACKAGES/clang" - name: Checkout Thapi Deps (spack,...) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index e71118f9..04ba040e 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -59,6 +59,8 @@ def setup_run_environment(self, env): output = Executable(llvm_config)("--libdir", output=str, error=str, fail_on_error=False) lib_path = output.rstrip() env.set("LIBCLANG_LIBRARY_FILE", find_libclang(lib_path)) + + # Set PYTHONPATH so that `import clang` will work without an issue. env.append_path("PYTHONPATH", join_path(self.spec["llvm"].prefix.lib, f"python{self.spec['python'].version.up_to(2)}", "site-packages")) def setup_test_environment(self, env): From a384ca2f62ab16a558ffdc276f1090fe46da6c10 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 17 Mar 2026 18:27:41 -0500 Subject: [PATCH 12/45] Find site-packages dir using major/minor versions --- .github/workflows/presubmit.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index c2edf9e3..d28a427f 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -88,8 +88,11 @@ jobs: # Symlink python3-clang-${LLVM_VER} package to site-packages so h2yaml won't # fail on `import clang`. This way, our llvm+python trick will work without an # issue. - SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])") - sudo ln -s /usr/lib/python3/dist-packages/clang "$SITE_PACKAGES/clang" + python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") + python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") + SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages + sudo mkdir -p ${SITE_PACKAGES} + sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang - name: Checkout Thapi Deps (spack,...) uses: ./.github/actions/setup-thapi-deps with: From 8e754eeec5eec4867b631ebd47ad4ba8632aef19 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 19 Mar 2026 14:28:57 -0500 Subject: [PATCH 13/45] Add thapi v0.0.13 --- packages/thapi/package.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/thapi/package.py b/packages/thapi/package.py index 84528c43..33ee20d1 100644 --- a/packages/thapi/package.py +++ b/packages/thapi/package.py @@ -16,6 +16,7 @@ class Thapi(AutotoolsPackage): version("master", branch="master", preferred=True) version("develop", branch="devel") + version("0.0.13", tag="v0.0.13") version("0.0.12", tag="v0.0.12") version("0.0.11", tag="v0.0.11") version("0.0.10", tag="v0.0.10") @@ -25,10 +26,10 @@ class Thapi(AutotoolsPackage): variant("strict", default=False, description="Enable -Werror during the build") variant("test-dependencies", default=False, description="Install THAPI test dependencies (bats, clinfo, etc.)") - variant("mpi", default=False, description="Enable MPI support for the Sync Daemon", when="@:develop") - variant("sync-daemon-mpi", default=False, description="Enable MPI support for the Sync Daemon", when="@develop") - variant("clang-parser", default=True, description="Enable Clang Parser", when="@develop") - variant("archive", default=False, description="Enable archive mode of THAPI", when="@develop") + variant("mpi", default=False, description="Enable MPI support for the Sync Daemon", when="@:0.0.12") + variant("sync-daemon-mpi", default=False, description="Enable MPI support for the Sync Daemon", when="@0.0.13:") + variant("clang-parser", default=True, description="Enable Clang Parser", when="@0.0.13:") + variant("archive", default=False, description="Enable archive mode of THAPI", when="@0.0.13:") depends_on("c", type=("build")) depends_on("cxx", type=("build")) @@ -71,7 +72,7 @@ class Thapi(AutotoolsPackage): depends_on("ruby-metababel@0.1.0:0.9", type=("build"), when="@:0.0.10") depends_on("ruby-metababel@1.0.0:", type=("build"), when="@0.0.11") depends_on("ruby-metababel@1.1.2:", type=("build"), when="@0.0.12:") - depends_on("ruby-metababel@1.1.4:", type=("build"), when="develop") + depends_on("ruby-metababel@1.1.4:", type=("build"), when="@0.0.13:") depends_on("libiberty+pic") depends_on("libffi") @@ -95,7 +96,7 @@ class Thapi(AutotoolsPackage): def configure_args(self): args = [] - if self.spec.version == Version("develop"): + if self.spec.version >= Version("0.0.13"): args.extend(self.enable_or_disable("sync-daemon-mpi")) else: args.extend(self.enable_or_disable("mpi")) From 974149fea1412005917a6329b72b315b127eb3d9 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 19 Mar 2026 14:34:04 -0500 Subject: [PATCH 14/45] Update GitHub CI --- .github/workflows/presubmit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index d28a427f..3bef43ce 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -62,7 +62,7 @@ jobs: strategy: matrix: version: ['thapi', 'thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', - 'thapi@0.0.12', 'thapi@master', 'thapi@develop', 'thapi@develop+archive', + 'thapi@0.0.12', 'thapi@0.0.13', 'thapi@master', 'thapi@develop', 'thapi@develop+archive', 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master'] needs: install_thapi_dependencies runs-on: ubuntu-latest @@ -79,7 +79,7 @@ jobs: name: thapi_cache path: ${{ env.CACHE_DIR }} - name: Install clang for new parser - if: startsWith(matrix.version, 'thapi@develop') + if: startsWith(matrix.version, 'thapi@develop') || startsWith(matrix.version, 'thapi@master') || startsWith(matrix.version, 'thapi@0.0.13') run: | # install llvm+clang sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev From ae52696c8c8d27852fbbe651f0a341b0921c488e Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 19 Mar 2026 14:52:19 -0500 Subject: [PATCH 15/45] Check thapi for clang-parser in bash --- .github/workflows/presubmit.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 3bef43ce..91259286 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -79,20 +79,21 @@ jobs: name: thapi_cache path: ${{ env.CACHE_DIR }} - name: Install clang for new parser - if: startsWith(matrix.version, 'thapi@develop') || startsWith(matrix.version, 'thapi@master') || startsWith(matrix.version, 'thapi@0.0.13') run: | - # install llvm+clang - sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev - sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + if [[ ${{ matrix.version }} =~ ^thapi@(develop|master|0\.0\.13)$ ]]; then + # install llvm+clang + sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev + sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - # Symlink python3-clang-${LLVM_VER} package to site-packages so h2yaml won't - # fail on `import clang`. This way, our llvm+python trick will work without an - # issue. - python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") - python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") - SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages - sudo mkdir -p ${SITE_PACKAGES} - sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang + # Symlink python3-clang-${LLVM_VER} package to site-packages so h2yaml won't + # fail on `import clang`. This way, our llvm+python trick will work without an + # issue. + python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") + python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") + SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages + sudo mkdir -p ${SITE_PACKAGES} + sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang + fi - name: Checkout Thapi Deps (spack,...) uses: ./.github/actions/setup-thapi-deps with: From c5778ff26bdf7f58e096a90c32f2722b7f6cbfb4 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 19 Mar 2026 15:04:46 -0500 Subject: [PATCH 16/45] Rename the workflow --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 91259286..e98c70ba 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -1,4 +1,4 @@ -name: Presubmit +name: THAPI unit tests on: push: pull_request: From 2a359c664824e58bc76d4d98d77b56d3ab4d0027 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 19 Mar 2026 15:06:34 -0500 Subject: [PATCH 17/45] Remove `thapi` from CI matrix since it is the same as `thapi@master` --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index e98c70ba..1ccc83ca 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -61,7 +61,7 @@ jobs: install_thapi: strategy: matrix: - version: ['thapi', 'thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', + version: ['thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', 'thapi@0.0.12', 'thapi@0.0.13', 'thapi@master', 'thapi@develop', 'thapi@develop+archive', 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master'] needs: install_thapi_dependencies From c6d59ce2d430e582066ec3e7a7d6e9b78b4ae6c4 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 19 Mar 2026 16:06:13 -0500 Subject: [PATCH 18/45] Fix a typo --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 1ccc83ca..4c531f10 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -80,7 +80,7 @@ jobs: path: ${{ env.CACHE_DIR }} - name: Install clang for new parser run: | - if [[ ${{ matrix.version }} =~ ^thapi@(develop|master|0\.0\.13)$ ]]; then + if [[ "${{ matrix.version }}" =~ ^thapi@(develop|master|0\.0\.13)* ]]; then # install llvm+clang sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} From edc7d04de7ded6b076244afdd45ee47113e6eaa5 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 23 Mar 2026 10:17:31 -0500 Subject: [PATCH 19/45] Add the skip check --- .github/workflows/presubmit.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 4c531f10..145fd5b0 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -31,6 +31,7 @@ jobs: install_thapi_dependencies: needs: pre_job + if: ${{ needs.pre_job.outputs.should_skip != 'true' }} runs-on: ubuntu-latest name: Install thapi dependencies steps: From 66951eb9cc6e7c6e80b99ecdec19eab23b93d06c Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 23 Mar 2026 11:27:46 -0500 Subject: [PATCH 20/45] Get rid of deprecated `+mpi` variant --- .gitlab/aurora.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/aurora.yml b/.gitlab/aurora.yml index 48817880..62ea7c92 100644 --- a/.gitlab/aurora.yml +++ b/.gitlab/aurora.yml @@ -4,7 +4,7 @@ variables: TIME: "2:00:00" WRK_DIR: "/lus/flare/projects/${PROJ}/thapi/" ANL_AURORA_SCHEDULER_PARAMETERS: "-q ${QUEUE} -l select=1,walltime=${TIME},filesystems=home -A ${PROJ}" - SPEC: "thapi@develop+mpi+sync-daemon-mpi+archive+test-dependencies" + SPEC: "thapi@develop+sync-daemon-mpi+archive+test-dependencies" OPTS: "--concurrent-packages 2 -j32 --show-log-on-error --fail-fast" stages: From e6d8e298945c6c9aa0664a14138dc092c3cc4dbb Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 24 Mar 2026 09:34:26 -0500 Subject: [PATCH 21/45] Add `+clang-parser` --- .gitlab/aurora.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/aurora.yml b/.gitlab/aurora.yml index 62ea7c92..a7e7d373 100644 --- a/.gitlab/aurora.yml +++ b/.gitlab/aurora.yml @@ -4,7 +4,7 @@ variables: TIME: "2:00:00" WRK_DIR: "/lus/flare/projects/${PROJ}/thapi/" ANL_AURORA_SCHEDULER_PARAMETERS: "-q ${QUEUE} -l select=1,walltime=${TIME},filesystems=home -A ${PROJ}" - SPEC: "thapi@develop+sync-daemon-mpi+archive+test-dependencies" + SPEC: "thapi@develop+sync-daemon-mpi+clang-parser+archive+test-dependencies" OPTS: "--concurrent-packages 2 -j32 --show-log-on-error --fail-fast" stages: From 84e9178cabe556c8cee89602fb86f9dd41bde9f5 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 24 Mar 2026 16:23:34 -0500 Subject: [PATCH 22/45] Remove pin to llvm@18, explicitly ask for `+clang` --- packages/h2yaml/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 04ba040e..778ff209 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -37,7 +37,7 @@ class H2yaml(PythonPackage): depends_on("python@3.10:", type=("build", "run", "test")) depends_on("py-setuptools", type="build") depends_on("py-libclang@18", type=("run", "test"), when="@:0.4.0") - depends_on("llvm+python@18", type=("run", "test"), when="@0.4.1:") + depends_on("llvm@18:+clang+python", type=("run", "test"), when="@0.4.1:") depends_on("py-pyyaml", type=("run", "test")) depends_on("py-pytest", type=("test")) From a7c419400702c6ff64431bfbfb44ae78234c00dc Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 24 Mar 2026 16:27:32 -0500 Subject: [PATCH 23/45] Install llvm from apt during dependency install --- .github/actions/setup-thapi-deps/action.yml | 42 +++++++++++++++++---- .github/workflows/presubmit.yml | 21 +---------- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 8183ab39..635fb07d 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -22,16 +22,44 @@ runs: . external/spack/share/spack/setup-env.sh spack repo add ./ spack compiler find - # find external packages known to spack (avoid bzip2 and xz since + - name: Find llvm version required by thapi@develop+clang-parser + shell: bash + run: | + . external/spack/share/spack/setup-env.sh + LLVM_VER=`spack spec thapi@develop+clang-parser | grep 'llvm@' | awk '{ split($0,a,"[@+.]"); print a[2] }'` + echo "LLVM_VER=${LLVM_VER}" >> ${GITHUB_ENV} + - name: Install llvm/clang required for +clang-parser variant + shell: bash + run: | + # We only need llvm+clang when `+clang-parser` variant is enabled and thapi + # version >= 0.0.13. But we install it anyway to simplify the logic. + sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev + sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + + # Symlink python3-clang package to site-packages so h2yaml won't fail on + # `import clang`. This way, our llvm+python trick will work without an issue. + python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") + python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") + SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages + sudo mkdir -p ${SITE_PACKAGES} + sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang + - name: Find external packages + shell: bash + run: | + # Find external packages known to spack (avoid bzip2 and xz since # they cause build failures in elfutils). + . external/spack/share/spack/setup-env.sh spack external find --all --exclude bzip2 --exclude xz - + - name: Update packages.yaml + shell: bash + run: | + # Trick spack to think that llvm found in packages.yml has +python variant: + sed -i 's/llvm@[0-9][0-9]\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml + - name: Setup spack mirror + shell: bash + run: | # Setup a spack mirror to store built packages. More info can be # found here: # https://spack.readthedocs.io/en/latest/binary_caches.html + . external/spack/share/spack/setup-env.sh spack mirror add --autopush --unsigned thapi_cache ${{ inputs.cache-dir }} - - name: Add python variant to llvm-18 - shell: bash - run: | - # Trick spack to think that llvm found in packages.yml has +python variant: - sed -i 's/llvm@18\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 145fd5b0..329e1039 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -13,7 +13,6 @@ on: env: SPACK_OPT: "--concurrent-packages 2 --show-log-on-error --fail-fast" CACHE_DIR: "${{ github.workspace }}/thapi_cache_${{ github.run_id }}" - LLVM_VER: 18 jobs: pre_job: @@ -40,7 +39,7 @@ jobs: - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} - - name: Checkout Thapi Deps (spack,...) + - name: Checkout thapi dependencies (spack,...) uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} @@ -79,23 +78,7 @@ jobs: with: name: thapi_cache path: ${{ env.CACHE_DIR }} - - name: Install clang for new parser - run: | - if [[ "${{ matrix.version }}" =~ ^thapi@(develop|master|0\.0\.13)* ]]; then - # install llvm+clang - sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev - sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - - # Symlink python3-clang-${LLVM_VER} package to site-packages so h2yaml won't - # fail on `import clang`. This way, our llvm+python trick will work without an - # issue. - python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") - python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") - SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages - sudo mkdir -p ${SITE_PACKAGES} - sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang - fi - - name: Checkout Thapi Deps (spack,...) + - name: Checkout thapi dependencies (spack,...) uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} From c4e41bbfee7c581b8d3b1072bd92e53a7654a63c Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Wed, 25 Mar 2026 17:00:01 -0500 Subject: [PATCH 24/45] Add llvm apt-key --- .github/actions/setup-thapi-deps/action.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 635fb07d..48f05da9 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -31,6 +31,12 @@ runs: - name: Install llvm/clang required for +clang-parser variant shell: bash run: | + # Add llvm to apt repository. + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc + REPO="deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VER} main" + echo "$REPO" | sudo tee /etc/apt/sources.list.d/llvm.list + sudo apt-get update + # We only need llvm+clang when `+clang-parser` variant is enabled and thapi # version >= 0.0.13. But we install it anyway to simplify the logic. sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev From 875a4a26715d84f42daec8cb71799e0ec4356740 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 10:34:47 -0500 Subject: [PATCH 25/45] Use json output to figure out the version --- .github/actions/setup-thapi-deps/action.yml | 4 +++- .github/workflows/presubmit.yml | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 48f05da9..d4aa725b 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -26,7 +26,9 @@ runs: shell: bash run: | . external/spack/share/spack/setup-env.sh - LLVM_VER=`spack spec thapi@develop+clang-parser | grep 'llvm@' | awk '{ split($0,a,"[@+.]"); print a[2] }'` + # We need to filter out the fetch lines generated by `spack spec` when it is run + # for the first time. These lines start with `==>`. + LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` echo "LLVM_VER=${LLVM_VER}" >> ${GITHUB_ENV} - name: Install llvm/clang required for +clang-parser variant shell: bash diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 329e1039..12bec5da 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -30,7 +30,6 @@ jobs: install_thapi_dependencies: needs: pre_job - if: ${{ needs.pre_job.outputs.should_skip != 'true' }} runs-on: ubuntu-latest name: Install thapi dependencies steps: From 099202b8012ac143259562a551762f0cf4c059a8 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 11:10:39 -0500 Subject: [PATCH 26/45] Run CI only on PR and commits to main --- .github/workflows/lint.yml | 4 ++++ .github/workflows/presubmit.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ea048712..441e6fe9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,7 +1,11 @@ name: Lint checks on: push: + branches: + - main pull_request: + branches: + - main workflow_dispatch: inputs: debug_enabled: diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 12bec5da..653aba3f 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -1,7 +1,11 @@ name: THAPI unit tests on: push: + branches: + - main pull_request: + branches: + - main workflow_dispatch: inputs: debug_enabled: From e3122aaf27acc28131a1ac7a52f7d14bb2763978 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 13:25:31 -0500 Subject: [PATCH 27/45] Get rid of pre_job --- .github/workflows/presubmit.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 653aba3f..23e2095a 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -19,21 +19,7 @@ env: CACHE_DIR: "${{ github.workspace }}/thapi_cache_${{ github.run_id }}" jobs: - pre_job: - runs-on: ubuntu-latest - outputs: - should_skip: ${{ steps.skip_check.outputs.should_skip }} - steps: - - id: skip_check - uses: fkirc/skip-duplicate-actions@master - with: - concurrent_skipping: 'same_content' - skip_after_successful_duplicate: 'true' - paths_ignore: '["**/README.md"]' - do_not_skip: '["pull_request"]' - install_thapi_dependencies: - needs: pre_job runs-on: ubuntu-latest name: Install thapi dependencies steps: From 0f5bf90ce3ffc5283cc7504403535766a2bfdad1 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 15:02:14 -0500 Subject: [PATCH 28/45] Find compilers after installing llvm --- .github/actions/setup-thapi-deps/action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index d4aa725b..1011f8f9 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -16,12 +16,11 @@ runs: repository: spack/spack ref: releases/latest path: external/spack - - name: Setup spack environment + - name: Add THAPI repo shell: bash run: | . external/spack/share/spack/setup-env.sh spack repo add ./ - spack compiler find - name: Find llvm version required by thapi@develop+clang-parser shell: bash run: | @@ -51,12 +50,13 @@ runs: SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages sudo mkdir -p ${SITE_PACKAGES} sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang - - name: Find external packages + - name: Find compilers and external packages shell: bash run: | # Find external packages known to spack (avoid bzip2 and xz since # they cause build failures in elfutils). . external/spack/share/spack/setup-env.sh + spack compiler find spack external find --all --exclude bzip2 --exclude xz - name: Update packages.yaml shell: bash From 42d4b4824eeab0c383054b767019249143d7c02c Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 15:29:18 -0500 Subject: [PATCH 29/45] Update alternatives --- .github/actions/setup-thapi-deps/action.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 1011f8f9..bab90cd8 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -41,7 +41,13 @@ runs: # We only need llvm+clang when `+clang-parser` variant is enabled and thapi # version >= 0.0.13. But we install it anyway to simplify the logic. sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev - sudo apt-get install libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + + # Update alternatives so spack will now find this version. + LLVM_PREFIX=`llvm-config-${LLVM_VER} --prefix` + sudo update-alternatives --install /usr/bin/clang clang ${LLVM_PREFIX}/bin/clang 200 + sudo update-alternatives --install /usr/bin/clang++ clang++ ${LLVM_PREFIX}/bin/clang++ 200 + sudo update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-${LLVM_VER} 200 # Symlink python3-clang package to site-packages so h2yaml won't fail on # `import clang`. This way, our llvm+python trick will work without an issue. From 0459357516ac84e5839a9d9f52570f653f2689af Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 17:44:51 -0500 Subject: [PATCH 30/45] Use the same spec --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 23e2095a..c7584518 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -35,7 +35,7 @@ jobs: - name: Install thapi dependencies run: | . external/spack/share/spack/setup-env.sh - spack install --only dependencies $SPACK_OPT thapi ^ruby + spack install --only dependencies $SPACK_OPT thapi@develop+clang-parser - name: Upload thapi build cache uses: actions/upload-artifact@v4 with: From 1a339fbedc661519c5dc72a6ba4e9f09af7889f6 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Thu, 26 Mar 2026 17:49:41 -0500 Subject: [PATCH 31/45] Get rid of Polaris workaround --- packages/h2yaml/package.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 778ff209..806819f1 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -7,15 +7,6 @@ import sys -def find_libclang(root): - lib_ext = "dylib" if sys.platform == "darwin" else "so" - regex = re.compile(rf"libclang(?:-\d+)?.{lib_ext}(?:.\d+)?") - for root, dirs, files in os.walk(root): - for file in files: - if regex.match(file): - return os.path.join(root, file) - - class H2yaml(PythonPackage): """Matrices describing affine transformation of the plane.""" @@ -58,7 +49,10 @@ def setup_run_environment(self, env): llvm_config = os.path.join(s.prefix.bin, "llvm-config") output = Executable(llvm_config)("--libdir", output=str, error=str, fail_on_error=False) lib_path = output.rstrip() - env.set("LIBCLANG_LIBRARY_FILE", find_libclang(lib_path)) + + lib_ext = "dylib" if sys.platform == "darwin" else "so" + env.set("LIBCLANG_LIBRARY_PATH", self.spec["llvm"].prefix.lib) + env.set("LIBCLANG_LIBRARY_FILE", join_path(self.spec["llvm"].prefix.lib, f"libclang.{lib_ext}")) # Set PYTHONPATH so that `import clang` will work without an issue. env.append_path("PYTHONPATH", join_path(self.spec["llvm"].prefix.lib, f"python{self.spec['python'].version.up_to(2)}", "site-packages")) From 180d1194b8c488b881e646cc48db9aed3e18bdc3 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 10:08:44 -0500 Subject: [PATCH 32/45] Avoid updating alternatives --- .github/actions/setup-thapi-deps/action.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index bab90cd8..3b9f9968 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -43,12 +43,6 @@ runs: sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - # Update alternatives so spack will now find this version. - LLVM_PREFIX=`llvm-config-${LLVM_VER} --prefix` - sudo update-alternatives --install /usr/bin/clang clang ${LLVM_PREFIX}/bin/clang 200 - sudo update-alternatives --install /usr/bin/clang++ clang++ ${LLVM_PREFIX}/bin/clang++ 200 - sudo update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-${LLVM_VER} 200 - # Symlink python3-clang package to site-packages so h2yaml won't fail on # `import clang`. This way, our llvm+python trick will work without an issue. python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") From d4bc17de0642f3a4d1d8489830d48b34ead815ec Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 10:43:43 -0500 Subject: [PATCH 33/45] Re-add Polaris workaround --- packages/h2yaml/package.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/h2yaml/package.py b/packages/h2yaml/package.py index 806819f1..a7d819eb 100644 --- a/packages/h2yaml/package.py +++ b/packages/h2yaml/package.py @@ -7,6 +7,14 @@ import sys +def find_libclang(root, lib_ext): + regex = re.compile(rf"libclang(?:-\d+)?.{lib_ext}(?:.\d+)?") + for root, dirs, files in os.walk(root): + for file in files: + if regex.match(file): + return os.path.join(root, file) + + class H2yaml(PythonPackage): """Matrices describing affine transformation of the plane.""" @@ -51,8 +59,10 @@ def setup_run_environment(self, env): lib_path = output.rstrip() lib_ext = "dylib" if sys.platform == "darwin" else "so" - env.set("LIBCLANG_LIBRARY_PATH", self.spec["llvm"].prefix.lib) - env.set("LIBCLANG_LIBRARY_FILE", join_path(self.spec["llvm"].prefix.lib, f"libclang.{lib_ext}")) + lib_so = join_path(self.spec["llvm"].prefix.lib, f"libclang.{lib_ext}") + if not os.path.isfile(lib_so): + lib_so = find_libclang(lib_path, lib_ext) + env.set("LIBCLANG_LIBRARY_FILE", join_path(self.spec["llvm"].prefix.lib, lib_so)) # Set PYTHONPATH so that `import clang` will work without an issue. env.append_path("PYTHONPATH", join_path(self.spec["llvm"].prefix.lib, f"python{self.spec['python'].version.up_to(2)}", "site-packages")) From 173feba1cdd2836b943bea891581bd9a584bec75 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 11:20:04 -0500 Subject: [PATCH 34/45] Increase tmate time to 2h --- .github/workflows/presubmit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index c7584518..a03850ca 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -44,7 +44,7 @@ jobs: path: ${{ env.CACHE_DIR }} if-no-files-found: error - name: Block to allow inspecting failures - run: sleep 30m + run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} install_thapi: @@ -83,7 +83,7 @@ jobs: . external/spack/share/spack/setup-env.sh spack install $SPACK_OPT ${{ matrix.version }} || true - name: Block to allow inspecting failures - run: sleep 30m + run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} cleanup: From 30687694fcbc73ce17f5e6ba11a2836cad67116b Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 12:55:49 -0500 Subject: [PATCH 35/45] Split the install workflow into two --- .github/actions/setup-thapi-deps/action.yml | 29 ----- .github/workflows/presubmit.yml | 118 ++++++++++++++++++-- 2 files changed, 106 insertions(+), 41 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 3b9f9968..b4aea048 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -21,35 +21,6 @@ runs: run: | . external/spack/share/spack/setup-env.sh spack repo add ./ - - name: Find llvm version required by thapi@develop+clang-parser - shell: bash - run: | - . external/spack/share/spack/setup-env.sh - # We need to filter out the fetch lines generated by `spack spec` when it is run - # for the first time. These lines start with `==>`. - LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` - echo "LLVM_VER=${LLVM_VER}" >> ${GITHUB_ENV} - - name: Install llvm/clang required for +clang-parser variant - shell: bash - run: | - # Add llvm to apt repository. - wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc - REPO="deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VER} main" - echo "$REPO" | sudo tee /etc/apt/sources.list.d/llvm.list - sudo apt-get update - - # We only need llvm+clang when `+clang-parser` variant is enabled and thapi - # version >= 0.0.13. But we install it anyway to simplify the logic. - sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev - sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - - # Symlink python3-clang package to site-packages so h2yaml won't fail on - # `import clang`. This way, our llvm+python trick will work without an issue. - python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") - python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") - SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages - sudo mkdir -p ${SITE_PACKAGES} - sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang - name: Find compilers and external packages shell: bash run: | diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index a03850ca..34fd577f 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -17,25 +17,117 @@ on: env: SPACK_OPT: "--concurrent-packages 2 --show-log-on-error --fail-fast" CACHE_DIR: "${{ github.workspace }}/thapi_cache_${{ github.run_id }}" + DEPRECATED_CACHE_DIR: "${{ github.workspace }}/thapi_cache_deprecated_${{ github.run_id }}" jobs: - install_thapi_dependencies: + install_deprecated_dependencies: runs-on: ubuntu-latest - name: Install thapi dependencies + name: Install dependencies (deprecated) steps: - name: Checkout uses: actions/checkout@v4 - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} - - name: Checkout thapi dependencies (spack,...) + - name: Checkout dependencies (spack,...) + uses: ./.github/actions/setup-thapi-deps + with: + cache-dir: ${{ env.DEPRECATED_CACHE_DIR }} + - name: Install dependencies + run: | + . external/spack/share/spack/setup-env.sh + spack install --only dependencies $SPACK_OPT thapi@0.0.12 + - name: Upload thapi build cache + uses: actions/upload-artifact@v4 + with: + name: thapi_cache_deprecated + include-hidden-files: true + path: ${{ env.DEPRECATED_CACHE_DIR }} + if-no-files-found: error + - name: Block to allow inspecting failures + run: sleep 120m + if: ${{ failure() && inputs.debug_enabled }} + + install_deprecated: + strategy: + matrix: + version: ['thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', 'thapi@0.0.12'] + needs: install_deprecated_dependencies + runs-on: ubuntu-latest + name: Install ${{ matrix.version }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ inputs.debug_enabled }} + - name: Download thapi build cache + uses: actions/download-artifact@v4 + with: + name: thapi_cache_deprecated + path: ${{ env.DEPRECATED_CACHE_DIR }} + - name: Checkout dependencies (spack,...) + uses: ./.github/actions/setup-thapi-deps + with: + cache-dir: ${{ env.DEPRECATED_CACHE_DIR }} + - name: Install ${{ matrix.version }} + if: ${{ matrix.version != 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} + run: | + . external/spack/share/spack/setup-env.sh + spack install $SPACK_OPT ${{ matrix.version }} + - name: Block to allow inspecting failures + run: sleep 120m + if: ${{ failure() && inputs.debug_enabled }} + + install_dependencies: + runs-on: ubuntu-latest + name: Install dependencies + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ inputs.debug_enabled }} + - name: Checkout dependencies (spack,...) uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} - - name: Install thapi dependencies + - name: Find llvm version required by thapi@develop + shell: bash run: | . external/spack/share/spack/setup-env.sh - spack install --only dependencies $SPACK_OPT thapi@develop+clang-parser + # We need to filter out the fetch lines generated by `spack spec` when it is run + # for the first time. These lines start with `==>`. + LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` + echo "LLVM_VER=${LLVM_VER}" >> ${GITHUB_ENV} + - name: Install llvm/clang and apply workarounds + shell: bash + run: | + # Add llvm to apt repository. + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc + REPO="deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VER} main" + echo "$REPO" | sudo tee /etc/apt/sources.list.d/llvm.list + sudo apt-get update + + # We only need llvm+clang when `+clang-parser` variant is enabled and thapi + # version >= 0.0.13. But we install it anyway to simplify the logic. + sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev + sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + + LLVM_FULL_VER=`llvm-config-${LLVM_VER} --version` + echo "LLVM_FULL_VER=${LLVM_FULL_VER}" >> ${GITHUB_ENV} + + # Symlink python3-clang package to site-packages so h2yaml won't fail on + # `import clang`. This way, our llvm+python trick will work without an issue. + python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") + python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") + SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages + sudo mkdir -p ${SITE_PACKAGES} + sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang + - name: Install dependencies + run: | + . external/spack/share/spack/setup-env.sh + spack install --only dependencies $SPACK_OPT thapi@develop ^llvm@${LLVM_FULL_VER} - name: Upload thapi build cache uses: actions/upload-artifact@v4 with: @@ -47,13 +139,12 @@ jobs: run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} - install_thapi: + install: strategy: matrix: - version: ['thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', - 'thapi@0.0.12', 'thapi@0.0.13', 'thapi@master', 'thapi@develop', 'thapi@develop+archive', - 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master'] - needs: install_thapi_dependencies + version: ['thapi@0.0.13', 'thapi@master', 'thapi@develop', 'thapi@develop+archive', + 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master'] + needs: install_dependencies runs-on: ubuntu-latest name: Install ${{ matrix.version }} steps: @@ -67,7 +158,7 @@ jobs: with: name: thapi_cache path: ${{ env.CACHE_DIR }} - - name: Checkout thapi dependencies (spack,...) + - name: Checkout dependencies (spack,...) uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} @@ -87,13 +178,16 @@ jobs: if: ${{ failure() && inputs.debug_enabled }} cleanup: - needs: install_thapi + needs: [install, install_deprecated] if: always() runs-on: ubuntu-latest name: Cleanup the build cache steps: - name: Checkout uses: actions/checkout@v4 + - uses: geekyeggo/delete-artifact@v5 + with: + name: thapi_cache_deprecated - uses: geekyeggo/delete-artifact@v5 with: name: thapi_cache From f2157d8419259cbeb8b11a5a103ba9ec03d6bde4 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 14:43:54 -0500 Subject: [PATCH 36/45] Fix h2yaml versions --- packages/thapi/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/thapi/package.py b/packages/thapi/package.py index 33ee20d1..91db9311 100644 --- a/packages/thapi/package.py +++ b/packages/thapi/package.py @@ -78,7 +78,8 @@ class Thapi(AutotoolsPackage): depends_on("libffi") depends_on("mpi", when="+mpi") depends_on("mpi", when="+sync-daemon-mpi") - depends_on("h2yaml@0.3.1:", type=("build"), when="+clang-parser") + depends_on("h2yaml@0.3.1:0.4.0", type=("build"), when="@:0.0.12 +clang-parser") + depends_on("h2yaml@0.4.2:", type=("build"), when="@0.0.13: +clang-parser") # Add dev tools required for THAPI development and testing. depends_on("bats", when="+test-dependencies") From 7856ebb4702a8cbf87b49458d4f84a682114dc2d Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 15:17:55 -0500 Subject: [PATCH 37/45] More fixes and simplifications --- .github/actions/setup-thapi-deps/action.yml | 5 ---- .github/workflows/presubmit.yml | 29 +++++++++++++-------- packages/thapi/package.py | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index b4aea048..265e5dae 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -29,11 +29,6 @@ runs: . external/spack/share/spack/setup-env.sh spack compiler find spack external find --all --exclude bzip2 --exclude xz - - name: Update packages.yaml - shell: bash - run: | - # Trick spack to think that llvm found in packages.yml has +python variant: - sed -i 's/llvm@[0-9][0-9]\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml - name: Setup spack mirror shell: bash run: | diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 34fd577f..3da2141d 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -54,7 +54,7 @@ jobs: version: ['thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', 'thapi@0.0.12'] needs: install_deprecated_dependencies runs-on: ubuntu-latest - name: Install ${{ matrix.version }} + name: Install ${{ matrix.version }} (deprecated) steps: - name: Checkout uses: actions/checkout@v4 @@ -92,31 +92,35 @@ jobs: uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} - - name: Find llvm version required by thapi@develop + - name: Install llvm/clang version in thapi@develop+clang-parser spec shell: bash run: | + # Source spack . external/spack/share/spack/setup-env.sh - # We need to filter out the fetch lines generated by `spack spec` when it is run - # for the first time. These lines start with `==>`. + + # Find the llvm major version in the thapi@develop+clang-parser variant. We need to filter out the + # fetch lines generated by `spack spec` when it is run for the first time. These lines start with `==>`. LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` - echo "LLVM_VER=${LLVM_VER}" >> ${GITHUB_ENV} - - name: Install llvm/clang and apply workarounds - shell: bash - run: | + # Add llvm to apt repository. wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc REPO="deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VER} main" echo "$REPO" | sudo tee /etc/apt/sources.list.d/llvm.list sudo apt-get update - # We only need llvm+clang when `+clang-parser` variant is enabled and thapi - # version >= 0.0.13. But we install it anyway to simplify the logic. + # Install llvm/clang sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + # Let spack find newly install llvm/clang + spack compiler find + spack external find --all --exclude bzip2 --exclude xz + LLVM_FULL_VER=`llvm-config-${LLVM_VER} --version` echo "LLVM_FULL_VER=${LLVM_FULL_VER}" >> ${GITHUB_ENV} - + - name: Workaround for providing llvm+python in GitHub CI runners + shell: bash + run: | # Symlink python3-clang package to site-packages so h2yaml won't fail on # `import clang`. This way, our llvm+python trick will work without an issue. python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") @@ -124,6 +128,9 @@ jobs: SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages sudo mkdir -p ${SITE_PACKAGES} sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang + + # Trick spack to think that llvm found in packages.yml has +python variant: + sed -i 's/llvm@[0-9][0-9]\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml - name: Install dependencies run: | . external/spack/share/spack/setup-env.sh diff --git a/packages/thapi/package.py b/packages/thapi/package.py index 91db9311..00d8b7da 100644 --- a/packages/thapi/package.py +++ b/packages/thapi/package.py @@ -79,7 +79,7 @@ class Thapi(AutotoolsPackage): depends_on("mpi", when="+mpi") depends_on("mpi", when="+sync-daemon-mpi") depends_on("h2yaml@0.3.1:0.4.0", type=("build"), when="@:0.0.12 +clang-parser") - depends_on("h2yaml@0.4.2:", type=("build"), when="@0.0.13: +clang-parser") + depends_on("h2yaml@0.4.1:", type=("build"), when="@0.0.13: +clang-parser") # Add dev tools required for THAPI development and testing. depends_on("bats", when="+test-dependencies") From e05ac187f963700818e9d4e17ead14096e092a43 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 27 Mar 2026 16:50:19 -0500 Subject: [PATCH 38/45] Add a comment on ^llvm@${LLVM_FULL_VER} --- .github/workflows/presubmit.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 3da2141d..a749643f 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -98,8 +98,9 @@ jobs: # Source spack . external/spack/share/spack/setup-env.sh - # Find the llvm major version in the thapi@develop+clang-parser variant. We need to filter out the - # fetch lines generated by `spack spec` when it is run for the first time. These lines start with `==>`. + # Find the llvm major version in the thapi@develop+clang-parser variant. We + # need to filter out the fetch lines generated by `spack spec` when it is run + # for the first time. These lines start with `==>`. LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` # Add llvm to apt repository. @@ -134,6 +135,9 @@ jobs: - name: Install dependencies run: | . external/spack/share/spack/setup-env.sh + # We have to use the exact llvm version from apt package as a direct dependency + # as the versions in apt and spack doesn't agree to the patch version. The + # latter will force spack to build llvm from scratch. spack install --only dependencies $SPACK_OPT thapi@develop ^llvm@${LLVM_FULL_VER} - name: Upload thapi build cache uses: actions/upload-artifact@v4 From db2610ce802395675db7fbc7d09d09655ce4ee63 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 30 Mar 2026 12:10:01 -0500 Subject: [PATCH 39/45] Fix a typo, mv presubmit.yml --> ci.yml --- .github/workflows/{presubmit.yml => ci.yml} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename .github/workflows/{presubmit.yml => ci.yml} (97%) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/ci.yml similarity index 97% rename from .github/workflows/presubmit.yml rename to .github/workflows/ci.yml index a749643f..d20f78fa 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/ci.yml @@ -113,7 +113,7 @@ jobs: sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - # Let spack find newly install llvm/clang + # Let spack find newly installed llvm/clang. spack compiler find spack external find --all --exclude bzip2 --exclude xz @@ -177,13 +177,13 @@ jobs: if: ${{ matrix.version != 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} run: | . external/spack/share/spack/setup-env.sh - spack install $SPACK_OPT ${{ matrix.version }} + spack install $SPACK_OPT ${{ matrix.version }} ^llvm@${LLVM_FULL_VER} - name: Install thapi@develop with master versions of dependencies if: ${{ matrix.version == 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} continue-on-error: true run: | . external/spack/share/spack/setup-env.sh - spack install $SPACK_OPT ${{ matrix.version }} || true + spack install $SPACK_OPT ${{ matrix.version }} ^llvm@${LLVM_FULL_VER} || true - name: Block to allow inspecting failures run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} From 806db981c3a2fab787b7e6760a97bc4db7915d52 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 30 Mar 2026 12:51:25 -0500 Subject: [PATCH 40/45] Install LLVM/Clang as part of the action --- .github/actions/setup-thapi-deps/action.yml | 47 ++++++++++++++++++- .github/workflows/ci.yml | 50 ++------------------- 2 files changed, 50 insertions(+), 47 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 265e5dae..5afbce50 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -1,8 +1,11 @@ -name: 'Setup Thapi Deps' +name: 'Setup thapi dependencies' inputs: cache-dir: description: 'Directory for spack cache' required: true + install-llvm: + description: 'Install LLVM/Clang and add related workarounds' + required: true runs: using: "composite" steps: @@ -37,3 +40,45 @@ runs: # https://spack.readthedocs.io/en/latest/binary_caches.html . external/spack/share/spack/setup-env.sh spack mirror add --autopush --unsigned thapi_cache ${{ inputs.cache-dir }} + - name: Install llvm/clang version in thapi@develop+clang-parser spec + shell: bash + if: ${{ inputs.install-llvm == 'true' }} + run: | + # Source spack + . external/spack/share/spack/setup-env.sh + + # Find the llvm major version in the thapi@develop+clang-parser variant. We + # need to filter out the fetch lines generated by `spack spec` when it is run + # for the first time. These lines start with `==>`. + LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` + + # Add llvm to apt repository. + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc + REPO="deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VER} main" + echo "$REPO" | sudo tee /etc/apt/sources.list.d/llvm.list + sudo apt-get update + + # Install llvm/clang + sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev + sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} + + # Let spack find newly installed llvm/clang. + spack compiler find + spack external find --all --exclude bzip2 --exclude xz + + LLVM_FULL_VER=`llvm-config-${LLVM_VER} --version` + echo "LLVM_FULL_VER=${LLVM_FULL_VER}" >> ${GITHUB_ENV} + - name: Workaround for providing llvm+python in GitHub CI runners + shell: bash + if: ${{ inputs.install-llvm == 'true' }} + run: | + # Symlink python3-clang package to site-packages so h2yaml won't fail on + # `import clang`. This way, our llvm+python trick will work without an issue. + python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") + python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") + SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages + sudo mkdir -p ${SITE_PACKAGES} + sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang + + # Trick spack to think that llvm found in packages.yml has +python variant: + sed -i 's/llvm@[0-9][0-9]\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d20f78fa..07972636 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,12 +13,10 @@ on: description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' required: false default: false - env: SPACK_OPT: "--concurrent-packages 2 --show-log-on-error --fail-fast" CACHE_DIR: "${{ github.workspace }}/thapi_cache_${{ github.run_id }}" DEPRECATED_CACHE_DIR: "${{ github.workspace }}/thapi_cache_deprecated_${{ github.run_id }}" - jobs: install_deprecated_dependencies: runs-on: ubuntu-latest @@ -33,6 +31,7 @@ jobs: uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.DEPRECATED_CACHE_DIR }} + install-llvm: 'false' - name: Install dependencies run: | . external/spack/share/spack/setup-env.sh @@ -47,7 +46,6 @@ jobs: - name: Block to allow inspecting failures run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} - install_deprecated: strategy: matrix: @@ -70,6 +68,7 @@ jobs: uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.DEPRECATED_CACHE_DIR }} + install-llvm: 'false' - name: Install ${{ matrix.version }} if: ${{ matrix.version != 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} run: | @@ -78,7 +77,6 @@ jobs: - name: Block to allow inspecting failures run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} - install_dependencies: runs-on: ubuntu-latest name: Install dependencies @@ -92,46 +90,7 @@ jobs: uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} - - name: Install llvm/clang version in thapi@develop+clang-parser spec - shell: bash - run: | - # Source spack - . external/spack/share/spack/setup-env.sh - - # Find the llvm major version in the thapi@develop+clang-parser variant. We - # need to filter out the fetch lines generated by `spack spec` when it is run - # for the first time. These lines start with `==>`. - LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` - - # Add llvm to apt repository. - wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc - REPO="deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VER} main" - echo "$REPO" | sudo tee /etc/apt/sources.list.d/llvm.list - sudo apt-get update - - # Install llvm/clang - sudo apt-get install libllvm${LLVM_VER} llvm-${LLVM_VER} llvm-${LLVM_VER}-dev - sudo apt-get install clang-${LLVM_VER} libclang-${LLVM_VER}-dev python3-clang-${LLVM_VER} - - # Let spack find newly installed llvm/clang. - spack compiler find - spack external find --all --exclude bzip2 --exclude xz - - LLVM_FULL_VER=`llvm-config-${LLVM_VER} --version` - echo "LLVM_FULL_VER=${LLVM_FULL_VER}" >> ${GITHUB_ENV} - - name: Workaround for providing llvm+python in GitHub CI runners - shell: bash - run: | - # Symlink python3-clang package to site-packages so h2yaml won't fail on - # `import clang`. This way, our llvm+python trick will work without an issue. - python_major=$(python -c "import sys; print(f'{sys.version_info.major}')") - python_minor=$(python -c "import sys; print(f'{sys.version_info.minor}')") - SITE_PACKAGES=/usr/lib/python${python_major}.${python_minor}/site-packages - sudo mkdir -p ${SITE_PACKAGES} - sudo ln -s /usr/lib/python${python_major}/dist-packages/clang ${SITE_PACKAGES}/clang - - # Trick spack to think that llvm found in packages.yml has +python variant: - sed -i 's/llvm@[0-9][0-9]\.[0-9]\.[0-9]/&+python/' ~/.spack/packages.yaml + install-llvm: 'true' - name: Install dependencies run: | . external/spack/share/spack/setup-env.sh @@ -149,7 +108,6 @@ jobs: - name: Block to allow inspecting failures run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} - install: strategy: matrix: @@ -173,6 +131,7 @@ jobs: uses: ./.github/actions/setup-thapi-deps with: cache-dir: ${{ env.CACHE_DIR }} + install-llvm: 'true' - name: Install ${{ matrix.version }} if: ${{ matrix.version != 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} run: | @@ -187,7 +146,6 @@ jobs: - name: Block to allow inspecting failures run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} - cleanup: needs: [install, install_deprecated] if: always() From 36d61bc83cd2f7fd76b3141c38b0047d0db3223c Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 31 Mar 2026 10:33:56 -0500 Subject: [PATCH 41/45] thapi --> THAPI --- .github/actions/setup-thapi-deps/action.yml | 2 +- .github/workflows/ci.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index 5afbce50..e93074cb 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -1,4 +1,4 @@ -name: 'Setup thapi dependencies' +name: 'Setup THAPI dependencies' inputs: cache-dir: description: 'Directory for spack cache' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07972636..e26601eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: run: | . external/spack/share/spack/setup-env.sh spack install --only dependencies $SPACK_OPT thapi@0.0.12 - - name: Upload thapi build cache + - name: Upload THAPI build cache uses: actions/upload-artifact@v4 with: name: thapi_cache_deprecated @@ -59,7 +59,7 @@ jobs: - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} - - name: Download thapi build cache + - name: Download THAPI build cache uses: actions/download-artifact@v4 with: name: thapi_cache_deprecated @@ -98,7 +98,7 @@ jobs: # as the versions in apt and spack doesn't agree to the patch version. The # latter will force spack to build llvm from scratch. spack install --only dependencies $SPACK_OPT thapi@develop ^llvm@${LLVM_FULL_VER} - - name: Upload thapi build cache + - name: Upload THAPI build cache uses: actions/upload-artifact@v4 with: name: thapi_cache @@ -122,7 +122,7 @@ jobs: - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} - - name: Download thapi build cache + - name: Download THAPI build cache uses: actions/download-artifact@v4 with: name: thapi_cache From b4c557cd9462e9a963beb367f40e1e4ec61d3f93 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 31 Mar 2026 10:38:34 -0500 Subject: [PATCH 42/45] Minor refactor --- .github/actions/setup-thapi-deps/action.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index e93074cb..e03ed220 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -50,7 +50,8 @@ runs: # Find the llvm major version in the thapi@develop+clang-parser variant. We # need to filter out the fetch lines generated by `spack spec` when it is run # for the first time. These lines start with `==>`. - LLVM_VER=`spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' | awk '{ split($0,a,"[\".]"); print a[2] }'` + LLVM_VER=$( spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' ) + LLVM_VER=$( echo $LLVM_VER | awk '{ split($0,a,"[\".]"); print a[2] }' ) # Add llvm to apt repository. wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc From c4b3909f4a90172295cc16969c5799e051ca5435 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 31 Mar 2026 10:42:23 -0500 Subject: [PATCH 43/45] deprecated --> legacy --- .github/workflows/ci.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e26601eb..f98f5708 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,11 +16,11 @@ on: env: SPACK_OPT: "--concurrent-packages 2 --show-log-on-error --fail-fast" CACHE_DIR: "${{ github.workspace }}/thapi_cache_${{ github.run_id }}" - DEPRECATED_CACHE_DIR: "${{ github.workspace }}/thapi_cache_deprecated_${{ github.run_id }}" + CACHE_DIR_LEGACY: "${{ github.workspace }}/thapi_cache_legacy_${{ github.run_id }}" jobs: - install_deprecated_dependencies: + install_legacy_dependencies: runs-on: ubuntu-latest - name: Install dependencies (deprecated) + name: Install dependencies (legacy) steps: - name: Checkout uses: actions/checkout@v4 @@ -30,7 +30,7 @@ jobs: - name: Checkout dependencies (spack,...) uses: ./.github/actions/setup-thapi-deps with: - cache-dir: ${{ env.DEPRECATED_CACHE_DIR }} + cache-dir: ${{ env.CACHE_DIR_LEGACY }} install-llvm: 'false' - name: Install dependencies run: | @@ -39,20 +39,20 @@ jobs: - name: Upload THAPI build cache uses: actions/upload-artifact@v4 with: - name: thapi_cache_deprecated + name: thapi_cache_legacy include-hidden-files: true - path: ${{ env.DEPRECATED_CACHE_DIR }} + path: ${{ env.CACHE_DIR_LEGACY }} if-no-files-found: error - name: Block to allow inspecting failures run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} - install_deprecated: + install_legacy: strategy: matrix: version: ['thapi@0.0.7', 'thapi@0.0.8', 'thapi@0.0.9', 'thapi@0.0.10', 'thapi@0.0.11', 'thapi@0.0.12'] - needs: install_deprecated_dependencies + needs: install_legacy_dependencies runs-on: ubuntu-latest - name: Install ${{ matrix.version }} (deprecated) + name: Install ${{ matrix.version }} (legacy) steps: - name: Checkout uses: actions/checkout@v4 @@ -62,12 +62,12 @@ jobs: - name: Download THAPI build cache uses: actions/download-artifact@v4 with: - name: thapi_cache_deprecated - path: ${{ env.DEPRECATED_CACHE_DIR }} + name: thapi_cache_legacy + path: ${{ env.CACHE_DIR_LEGACY }} - name: Checkout dependencies (spack,...) uses: ./.github/actions/setup-thapi-deps with: - cache-dir: ${{ env.DEPRECATED_CACHE_DIR }} + cache-dir: ${{ env.CACHE_DIR_LEGACY }} install-llvm: 'false' - name: Install ${{ matrix.version }} if: ${{ matrix.version != 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} @@ -147,7 +147,7 @@ jobs: run: sleep 120m if: ${{ failure() && inputs.debug_enabled }} cleanup: - needs: [install, install_deprecated] + needs: [install, install_legacy] if: always() runs-on: ubuntu-latest name: Cleanup the build cache @@ -156,7 +156,7 @@ jobs: uses: actions/checkout@v4 - uses: geekyeggo/delete-artifact@v5 with: - name: thapi_cache_deprecated + name: thapi_cache_legacy - uses: geekyeggo/delete-artifact@v5 with: name: thapi_cache From 6103ad756ea27cfc18e9070e54df18b411476aee Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 31 Mar 2026 10:43:51 -0500 Subject: [PATCH 44/45] Add comments --- .github/actions/setup-thapi-deps/action.yml | 1 + .github/workflows/ci.yml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index e03ed220..eaf1675e 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -51,6 +51,7 @@ runs: # need to filter out the fetch lines generated by `spack spec` when it is run # for the first time. These lines start with `==>`. LLVM_VER=$( spack spec -j thapi@develop+clang-parser | grep -v '==>' | jq '.spec.nodes[] | select(.name == "llvm") | .version' ) + # Extract major version (21) from "\"21.1.4\"". LLVM_VER=$( echo $LLVM_VER | awk '{ split($0,a,"[\".]"); print a[2] }' ) # Add llvm to apt repository. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f98f5708..90c0db9c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,7 @@ jobs: install-llvm: 'false' - name: Install dependencies run: | + # Install the dependencies of the latest legacy version. . external/spack/share/spack/setup-env.sh spack install --only dependencies $SPACK_OPT thapi@0.0.12 - name: Upload THAPI build cache @@ -141,6 +142,8 @@ jobs: if: ${{ matrix.version == 'thapi@develop ^lttng-tools@master ^lttng-ust@master ^babeltrace2@master' }} continue-on-error: true run: | + # This is an allowed failure. We don't care if this test failed + # (Building thapi@develop with unstable lttng@master versions). . external/spack/share/spack/setup-env.sh spack install $SPACK_OPT ${{ matrix.version }} ^llvm@${LLVM_FULL_VER} || true - name: Block to allow inspecting failures From fd03fbfadcbb75a0419222ec080bf27cb1193502 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Tue, 31 Mar 2026 10:48:02 -0500 Subject: [PATCH 45/45] Update actions to v6 --- .github/actions/setup-thapi-deps/action.yml | 2 +- .github/workflows/ci.yml | 25 ++++++++++----------- .github/workflows/cron.yml | 4 ++-- .github/workflows/lint.yml | 2 +- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/.github/actions/setup-thapi-deps/action.yml b/.github/actions/setup-thapi-deps/action.yml index eaf1675e..d70c8e69 100644 --- a/.github/actions/setup-thapi-deps/action.yml +++ b/.github/actions/setup-thapi-deps/action.yml @@ -14,7 +14,7 @@ runs: with: packages: libnuma-dev - name: Checkout Spack - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: spack/spack ref: releases/latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 90c0db9c..b29930aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: name: Install dependencies (legacy) steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} @@ -38,7 +38,7 @@ jobs: . external/spack/share/spack/setup-env.sh spack install --only dependencies $SPACK_OPT thapi@0.0.12 - name: Upload THAPI build cache - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: thapi_cache_legacy include-hidden-files: true @@ -56,12 +56,12 @@ jobs: name: Install ${{ matrix.version }} (legacy) steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} - name: Download THAPI build cache - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v6 with: name: thapi_cache_legacy path: ${{ env.CACHE_DIR_LEGACY }} @@ -83,7 +83,7 @@ jobs: name: Install dependencies steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} @@ -100,7 +100,7 @@ jobs: # latter will force spack to build llvm from scratch. spack install --only dependencies $SPACK_OPT thapi@develop ^llvm@${LLVM_FULL_VER} - name: Upload THAPI build cache - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: thapi_cache include-hidden-files: true @@ -119,12 +119,12 @@ jobs: name: Install ${{ matrix.version }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ inputs.debug_enabled }} - name: Download THAPI build cache - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v6 with: name: thapi_cache path: ${{ env.CACHE_DIR }} @@ -156,10 +156,9 @@ jobs: name: Cleanup the build cache steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - uses: geekyeggo/delete-artifact@v5 with: - name: thapi_cache_legacy - - uses: geekyeggo/delete-artifact@v5 - with: - name: thapi_cache + name: | + thapi_cache_legacy + thapi_cache diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index d0fa9560..831e5ab1 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -9,9 +9,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout Spack - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: spack/spack ref: releases/latest diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 441e6fe9..1e3b88a7 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,7 @@ jobs: name: Check formatting with ruff steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: ruff format check uses: astral-sh/ruff-action@v3 with: