From 4902149e0e6841793395fe248b52da7e2cae6fce Mon Sep 17 00:00:00 2001 From: Joshua Kammeraad Date: Wed, 21 Jan 2026 21:44:13 -0500 Subject: [PATCH 1/3] Update pixi-build-cmake to 0.3.8 for pixi 0.63+ compatibility pixi-build-cmake version changes: - 0.3.4 requires build API v2 (pixi 0.54-0.62) - 0.3.8 requires build API v4 (pixi 0.63+) This change is required for ZEST to use SlaterGPU as a source dependency with pixi 0.63+. Co-Authored-By: Claude Opus 4.5 --- pixi.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pixi.toml b/pixi.toml index b8d5f08..08ee7fd 100644 --- a/pixi.toml +++ b/pixi.toml @@ -2,7 +2,8 @@ channels = ["nvidia", "conda-forge"] platforms = ["linux-64", "linux-aarch64"] preview = ["pixi-build"] -requires-pixi = ">=0.54" +# Minimum pixi version: 0.63.0 required for pixi-build-cmake 0.3.8 (build API v4) +requires-pixi = ">=0.63" [package] name = "slatergpu" @@ -10,7 +11,8 @@ version = "0.1.14" [package.build.backend] name = "pixi-build-cmake" -version = "==0.3.4" +# NOTE: pixi-build-cmake 0.3.5+ requires build API v4, which means pixi >= 0.63.0 +version = "==0.3.8" [package.build.config] compilers = [] From 0eaf60b0c0d2ff1dfe641c60bbd604c864e27a09 Mon Sep 17 00:00:00 2001 From: Joshua Kammeraad Date: Mon, 23 Feb 2026 15:23:03 -0500 Subject: [PATCH 2/3] Use pixi-build-cmake version range for broad pixi compatibility Instead of pinning ==0.3.8 (which requires pixi >=0.63), use the range >=0.3.6,<=0.3.8 so pixi automatically selects the correct backend API version for the user's installed pixi. This matches the approach used in molecularGSM and avoids forcing all collaborators to upgrade pixi simultaneously. Co-Authored-By: Claude Opus 4.6 --- pixi.lock | 18 ++++++++++-------- pixi.toml | 6 ++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pixi.lock b/pixi.lock index 0ccb010..fc1d13e 100644 --- a/pixi.lock +++ b/pixi.lock @@ -15,7 +15,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda - conda: . - subdir: linux-64 + build: hb0f4dca_0 linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcint-5.3.0-h0037855_0.conda @@ -23,7 +23,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_16.conda - conda: . - subdir: linux-aarch64 + build: he8cfe8b_0 pytest: channels: - url: https://conda.anaconda.org/nvidia/ @@ -75,7 +75,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - conda: . - subdir: linux-64 + build: hb0f4dca_0 linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_8.conda @@ -119,7 +119,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - conda: . - subdir: linux-aarch64 + build: he8cfe8b_0 packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -877,17 +877,19 @@ packages: - conda: . name: slatergpu version: 0.1.14 - build: hbf21a9e_0 + build: hb0f4dca_0 subdir: linux-64 - variants: {} + variants: + target_platform: linux-64 depends: - libcint >=5.3,<5.4.0a0 - conda: . name: slatergpu version: 0.1.14 - build: hbf21a9e_0 + build: he8cfe8b_0 subdir: linux-aarch64 - variants: {} + variants: + target_platform: linux-aarch64 depends: - libcint >=5.3,<5.4.0a0 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda diff --git a/pixi.toml b/pixi.toml index 08ee7fd..a4ac406 100644 --- a/pixi.toml +++ b/pixi.toml @@ -2,8 +2,7 @@ channels = ["nvidia", "conda-forge"] platforms = ["linux-64", "linux-aarch64"] preview = ["pixi-build"] -# Minimum pixi version: 0.63.0 required for pixi-build-cmake 0.3.8 (build API v4) -requires-pixi = ">=0.63" +requires-pixi = ">=0.60.0" [package] name = "slatergpu" @@ -11,8 +10,7 @@ version = "0.1.14" [package.build.backend] name = "pixi-build-cmake" -# NOTE: pixi-build-cmake 0.3.5+ requires build API v4, which means pixi >= 0.63.0 -version = "==0.3.8" +version = ">=0.3.6,<=0.3.8" [package.build.config] compilers = [] From 69fcd24ecb0809f40d9bf4aec783dfa148bafe32 Mon Sep 17 00:00:00 2001 From: Joshua Kammeraad Date: Mon, 23 Feb 2026 15:55:19 -0500 Subject: [PATCH 3/3] Sync CI pixi version with pixi.toml minimum requirement Extract the minimum pixi version from requires-pixi in pixi.toml instead of hardcoding v0.54.0. Regular builds test against the minimum supported version; monthly scheduled builds test against the latest pixi to catch regressions early. Also scope push/PR triggers to the main branch. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 11 +++++++- .github/workflows/slater-gpu-base.yml | 40 +++++++++++++++++++++------ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d6426b..6e58f1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,16 @@ name: CI -on: [push] +on: + push: + branches: [main] + pull_request: + branches: [main] + schedule: + # Run monthly on the 1st at midnight UTC to test with latest pixi + - cron: '0 0 1 * *' jobs: run-slater-gpu: uses: ./.github/workflows/slater-gpu-base.yml + with: + use-latest-pixi: ${{ github.event_name == 'schedule' }} diff --git a/.github/workflows/slater-gpu-base.yml b/.github/workflows/slater-gpu-base.yml index 17bd1a8..77771aa 100644 --- a/.github/workflows/slater-gpu-base.yml +++ b/.github/workflows/slater-gpu-base.yml @@ -1,24 +1,48 @@ name: SlaterGPU Base -on: [workflow_call] +on: + workflow_call: + inputs: + use-latest-pixi: + type: boolean + default: false jobs: build: runs-on: gpu - + defaults: run: shell: bash steps: - - uses: prefix-dev/setup-pixi@v0.9.1 + - uses: actions/checkout@v4 + + - name: Extract minimum pixi version from pixi.toml + id: pixi-version + run: | + VERSION=$(grep 'requires-pixi' pixi.toml | sed 's/.*>=\([0-9.]*\).*/\1/') + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Using minimum pixi version: $VERSION" + + - name: Set up Pixi (minimum version) + if: ${{ !inputs.use-latest-pixi }} + uses: prefix-dev/setup-pixi@v0.9.1 with: - pixi-version: v0.54.0 + pixi-version: v${{ steps.pixi-version.outputs.version }} log-level: v run-install: false # cache: true continue-on-error: true - - uses: actions/checkout@v4 - + + - name: Set up Pixi (latest version for scheduled builds) + if: ${{ inputs.use-latest-pixi }} + uses: prefix-dev/setup-pixi@v0.9.1 + with: + log-level: v + run-install: false + # cache: true + continue-on-error: true + # Cache NVHPC installation - name: Cache NVHPC id: cache-nvhpc @@ -28,14 +52,14 @@ jobs: /home/runner/work/Linux_x86_64 /home/runner/work/modulefiles key: nvhpc-25.1-cuda-12.6-v1-${{ runner.os }} - + - name: Install nvhpc run: | source .github/workflows/install_nvhpc.sh env: CACHE_HIT: ${{ steps.cache-nvhpc.outputs.cache-hit }} continue-on-error: true - + - name: Install and test SlaterGPU run: | source ~/.pixi/envs/environment-modules/init/bash