Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
4e2d8f7
Update to Spack v1.0.2
alecbcs Oct 28, 2025
a3d8ef5
Update upload-artifact version as required by GitHub Actions
alecbcs Oct 28, 2025
5912382
Temporarily remove podman package
alecbcs Oct 28, 2025
b4eee0b
Fix imports for Spack v1.0
alecbcs Oct 28, 2025
f72bf33
Drop external cmake and bison due to clingo incompatibility
alecbcs Oct 28, 2025
2f8d8b5
Generate unique names for artifacts
alecbcs Oct 29, 2025
fa225e4
Update download-artifact action to v6
alecbcs Oct 29, 2025
7172601
Update artifact path and gnupg repository
alecbcs Oct 30, 2025
3ce5fbb
Fix unique paths for gnupg cache
alecbcs Oct 30, 2025
8564e08
Update generate_bootstrap_json script for v3 buidcaches
alecbcs Nov 11, 2025
7bcc098
Drop macos-13 as it is now being removed from GitHub
alecbcs Nov 11, 2025
d9b136b
Drop Python 3.6 & 3.7 add 3.14 to MacOS bootstrap cache
alecbcs Nov 11, 2025
040e866
Fix syntax for gnupg generation
alecbcs Nov 11, 2025
8d1406c
Enable manylinux stack
alecbcs Nov 12, 2025
4d529ec
Break clingo linux builds out into separate VMs
alecbcs Nov 12, 2025
10384a9
Fix PY_PATH environment variable
alecbcs Nov 12, 2025
70d53bf
Drop Python 3.14 until we rebuild manylinux container
alecbcs Nov 12, 2025
827e2d6
Export container to local docker engine
alecbcs Nov 12, 2025
768cc1e
Re-enable clingo macOS, gnupg linux build
alecbcs Nov 12, 2025
8ab1876
Fix archspec import in gnupg dockerfile
alecbcs Nov 12, 2025
3b62533
Enable patchelf stack for linux
alecbcs Nov 12, 2025
5862db1
Bump manylinux container to add Python 3.14
alecbcs Nov 13, 2025
5c28e4a
Switch to upstream manylinux container instead of our fork
alecbcs Nov 13, 2025
d573643
Revert to old container for Python 3.6 & 3.7
alecbcs Nov 13, 2025
abdf644
Drop external find from 3.14 manylinux due to cmake@4 external
alecbcs Nov 13, 2025
1809c8c
Attempt to push binaries to testing OCI location
alecbcs Nov 13, 2025
01b0f10
Update workflow permissions to write to GHCR
alecbcs Nov 13, 2025
04b7b04
fixes
haampie Nov 13, 2025
a5b64a4
fetch less
haampie Nov 13, 2025
429832e
simplify
haampie Nov 13, 2025
301bfc0
cmake 4 is not compatible
haampie Nov 13, 2025
af23605
remove oci stuff
haampie Nov 13, 2025
bb1f77f
fix spack-packages commit
haampie Nov 13, 2025
5ebb40c
remove -python-version
haampie Nov 13, 2025
2e52070
remove secrets
haampie Nov 13, 2025
5c267c1
bring back stuff that was removed
haampie Nov 13, 2025
8ee82e2
simplify
haampie Nov 13, 2025
24f9f4d
attempt to restore caching
haampie Nov 13, 2025
2f9373e
restore caching
haampie Nov 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 71 additions & 55 deletions .github/workflows/clingo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
push:
branches:
- main
tags:
tags:
- v0.**
pull_request:
branches:
Expand All @@ -21,18 +21,23 @@ env:
PYTHONUNBUFFERED: 1

jobs:
macos_clingo:
macos_build:
runs-on: ${{ matrix.runner[0] }}
strategy:
matrix:
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
# runner + macOS deployment target
runner: [["macos-13", "10.13"], ["macos-14", "11"]]
runner: [["macos-14", "14"], ["macos-15", "15"], ["macos-26", "26"]]
exclude:
- python-version: "3.6"
runner: ["macos-14", "11"]
- python-version: "3.7"
runner: ["macos-14", "11"]
- python-version: "3.8"
runner: ["macos-15", "15"]
- python-version: "3.8"
runner: ["macos-26", "26"]
- python-version: "3.9"
runner: ["macos-26", "26"]
permissions:
contents: read
packages: write
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.runner[1] }}
steps:
Expand All @@ -41,7 +46,12 @@ jobs:
with:
repository: spack/spack
path: spack
ref: d36452cf4e70fa1da8b9db43921850872b82ced9
ref: 734c5db2121b01c373eed6538e452f18887e9e44
- uses: actions/checkout@v4
with:
repository: spack/spack-packages
path: spack-packages
ref: a5b98e6b7e411a499f310e048c1d2e39d1004519
# See https://github.com/actions/setup-python/issues/960
- name: Workaround for broken Python versions from setup-python
run: brew install gettext zlib
Expand All @@ -50,93 +60,99 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: Install clingo-bootstrap
run: |
pip install --upgrade pip
brew install bison
export PATH="$(brew --prefix bison):$PATH"
. spack/share/spack/setup-env.sh
spack external find --not-buildable cmake bison

spack config add "config:install_tree:padded_length:256"
spack repo set --destination "$PWD/spack-packages" builtin
spack external find cmake bison

spack python clingo/install_clingo.py
spack buildcache push --unsigned ./binary-mirror clingo-bootstrap
- uses: actions/upload-artifact@v3

- uses: actions/upload-artifact@v5
with:
name: clingo_binary_mirror
name: clingo_binary_mirror-${{ matrix.runner[0] }}-${{ matrix.python-version }}
path: binary-mirror


manylinux2014:
runs-on: ["self-hosted", "Linux"]
outputs:
spack_manylinux_tag: ${{ fromJSON(steps.docker_meta.outputs.json).tags[0] }}
manylinux2014_build:
runs-on: "ubuntu-latest"
strategy:
matrix:
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
arch: ["amd64", "arm64", "ppc64le"]
permissions:
contents: read
packages: write

steps:
- uses: actions/checkout@v4

# Setup tags to be used for docker images
- uses: docker/metadata-action@v5
id: docker_meta
- uses: docker/setup-qemu-action@v3
if: ${{ matrix.arch != 'amd64' }}
with:
images: ghcr.io/${{ github.repository_owner }}/clingo_manylinux2014
platforms: linux/${{ matrix.arch }}

- uses: docker/setup-buildx-action@v3

# Login to Github Packages
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
password: ${{ github.token }}

- uses: docker/setup-qemu-action@v3
id: qemu
with:
platforms: linux/ppc64le,linux/arm64

- uses: docker/setup-buildx-action@v3
- if: ${{ matrix.python-version == '3.14' }}
run: echo "BASE_IMAGE=quay.io/pypa/manylinux2014:2025.11.11-1" >> $GITHUB_ENV
- if: ${{ matrix.python-version != '3.14' }}
run: echo "BASE_IMAGE=ghcr.io/spack/manylinux2014:v2024-10-16" >> $GITHUB_ENV

# Build and eventually push to registry
- uses: docker/build-push-action@v5
id: build
with:
file: ./clingo/Dockerfile.manylinux2014
platforms: linux/arm64,linux/ppc64le,linux/amd64
cache-from: |
ghcr.io/${{ github.repository_owner }}/clingo_manylinux2014:main
${{ steps.docker_meta.outputs.tags }}
platforms: linux/${{ matrix.arch }}
tags: ghcr.io/${{ github.repository }}/clingo-build:py${{ matrix.python-version }}-${{ matrix.arch }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository }}/clingo-build:py${{ matrix.python-version }}-${{ matrix.arch }}
cache-to: type=inline
pull: ${{ github.event_name == 'pull_request' }}
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
load: true
build-args: |
BASE_IMAGE=${{ env.BASE_IMAGE }}
PYTHON_VERSION=${{ matrix.python-version }}

upload-manylinux2014:
runs-on: ubuntu-latest
needs: [ manylinux2014 ]
env:
SPACK_MANYLINUX2014_TAG: ${{ needs.manylinux2014.outputs.spack_manylinux_tag }}
steps:
- uses: actions/checkout@v4
- run: ./copy_mirror_manylinux2014.sh
- uses: actions/upload-artifact@v3
- run: |
docker create --name clingo-c --platform linux/${{ matrix.arch }} ${{ steps.build.outputs.imageid }}
docker cp "clingo-c:/root/binary-mirror" binary-mirror

- uses: actions/upload-artifact@v5
with:
name: clingo_binary_mirror
name: clingo_binary_mirror-linux-${{ matrix.arch }}-${{ matrix.python-version }}
path: binary-mirror

clingo_json:
runs-on: ubuntu-latest
needs: [ upload-manylinux2014, macos_clingo ]
needs: [ macos_build, manylinux2014_build ]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: spack/spack
path: spack
ref: d36452cf4e70fa1da8b9db43921850872b82ced9
- uses: actions/download-artifact@v3
ref: 734c5db2121b01c373eed6538e452f18887e9e44
- uses: actions/checkout@v4
with:
name: clingo_binary_mirror
- run: ./spack/bin/spack python ./generate_bootstrap_json.py clingo
- uses: actions/upload-artifact@v3
repository: spack/spack-packages
path: spack-packages
ref: a5b98e6b7e411a499f310e048c1d2e39d1004519

- uses: actions/download-artifact@v6

- run: |
. spack/share/spack/setup-env.sh
spack repo set --destination "$PWD/spack-packages" builtin
spack python ./generate_bootstrap_json.py clingo

- uses: actions/upload-artifact@v5
with:
name: clingo_manifest
path: clingo.json
113 changes: 60 additions & 53 deletions .github/workflows/gnupg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
push:
branches:
- main
tags:
tags:
- v0.**
pull_request:
branches:
Expand All @@ -21,7 +21,7 @@ env:
PYTHONUNBUFFERED: 1

jobs:
macos_gnupg:
macos_build:
runs-on: ${{ matrix.runner[0] }}
strategy:
# List of:
Expand All @@ -30,8 +30,9 @@ jobs:
# 3. macOS deployment target
matrix:
runner: [
["macos-13", "x86_64", "10.13"], # highsierra
["macos-14", "aarch64", "11"] # bigsur
["macos-14", "aarch64", "14"],
["macos-15", "aarch64", "15"],
["macos-26", "aarch64", "26"]
]
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.runner[2] }}
Expand All @@ -41,98 +42,104 @@ jobs:
with:
repository: spack/spack
path: spack
ref: d36452cf4e70fa1da8b9db43921850872b82ced9
ref: 734c5db2121b01c373eed6538e452f18887e9e44
- uses: actions/checkout@v4
with:
repository: spack/spack-packages
path: spack-packages
ref: a5b98e6b7e411a499f310e048c1d2e39d1004519
- name: Install gnupg
run: |
brew install gawk perl

# Disables internationalization to avoid linking to
# libintl on MacOS, since that will make the binary
# non portable
git -C spack apply "$PWD/gnupg/patches/gnupg_macos.patch"
git -C spack-packages apply "$PWD/gnupg/patches/gnupg_macos.patch"

. spack/share/spack/setup-env.sh
spack repo set --destination "$PWD/spack-packages" builtin

rm -rf $(spack location -p podman)

spack external find --not-buildable gawk perl
spack config add "config:install_tree:padded_length:256"


spack install gnupg target=${{ matrix.runner[1] }}
spack buildcache push --unsigned ./binary-mirror gnupg
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v5
with:
name: gnupg_binary_mirror
name: gnupg_binary_mirror-${{ matrix.runner[0] }}-${{ matrix.runner[1] }}
path: binary-mirror

manylinux2014:
runs-on: ["self-hosted", "Linux"]
outputs:
spack_manylinux_tag: ${{ fromJSON(steps.docker_meta.outputs.json).tags[0] }}

manylinux2014_build:
runs-on: "ubuntu-latest"
strategy:
matrix:
arch: ["amd64", "arm64", "ppc64le"]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4

# Setup tags to be used for docker images
- uses: docker/metadata-action@v5
id: docker_meta
with:
images: ghcr.io/${{ github.repository_owner }}/gnupg_manylinux2014

# Login to Github Packages
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: docker/setup-qemu-action@v3
id: qemu
if: ${{ matrix.arch != 'amd64' }}
with:
platforms: linux/ppc64le,linux/arm64,linux/amd64
platforms: linux/${{ matrix.arch }}

- uses: docker/setup-buildx-action@v3

# Build and eventually push to registry
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}

- uses: docker/build-push-action@v5
id: build
with:
file: ./gnupg/Dockerfile.manylinux2014
platforms: linux/arm64,linux/ppc64le,linux/amd64
pull: ${{ github.event_name == 'pull_request' }}
cache-from: |
ghcr.io/${{ github.repository_owner }}/gnupg_manylinux2014:main
${{ steps.docker_meta.outputs.tags }}
platforms: linux/${{ matrix.arch }}
tags: ghcr.io/${{ github.repository }}/gnupg-build:${{ matrix.arch }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository }}/gnupg-build:${{ matrix.arch }}
cache-to: type=inline
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
load: true

upload-manylinux2014:
runs-on: ubuntu-latest
needs: [ manylinux2014 ]
env:
SPACK_MANYLINUX2014_TAG: ${{ needs.manylinux2014.outputs.spack_manylinux_tag }}
- run: |
docker create --name gnupg-c --platform linux/${{ matrix.arch }} ${{ steps.build.outputs.imageid }}
docker cp "gnupg-c:/root/binary-mirror" binary-mirror

steps:
- uses: actions/checkout@v4
- run: ./copy_mirror_manylinux2014.sh
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v5
with:
name: gnupg_binary_mirror
name: gnupg_binary_mirror-linux-${{ matrix.arch }}
path: binary-mirror

gnupg_json:
runs-on: ubuntu-latest
needs: [ upload-manylinux2014, macos_gnupg ]
needs: [ macos_build, manylinux2014_build ]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: spack/spack
path: spack
ref: d36452cf4e70fa1da8b9db43921850872b82ced9
- uses: actions/download-artifact@v3
ref: 734c5db2121b01c373eed6538e452f18887e9e44
- uses: actions/checkout@v4
with:
name: gnupg_binary_mirror
- run: ./spack/bin/spack python ./generate_bootstrap_json.py gnupg
- uses: actions/upload-artifact@v3
repository: spack/spack-packages
path: spack-packages
ref: a5b98e6b7e411a499f310e048c1d2e39d1004519
- uses: actions/download-artifact@v6

- run: |
. spack/share/spack/setup-env.sh
spack repo set --destination "$PWD/spack-packages" builtin
spack python ./generate_bootstrap_json.py gnupg

- uses: actions/upload-artifact@v5
with:
name: gnupg_manifest
path: gnupg.json
Loading
Loading