
A few changes to tarball creation (for build caches): - do not run file to distinguish binary from text - file is slow, even when running it in a batched fashion -- it usually reads all bytes and has slow logic to categorize specific types - we don't need a highly detailed file categorization; a crude categorization of elf, mach-o, text suffices. detecting elf and mach-o is straightforward and cheap - detecting utf-8 (and with that ascii) is highly accurate: false positive rate decays exponentially as file size increases. Further it's not only the most common encoding, but the most common file type in package prefixes. iso-8859-1 is cheaply (but heuristically) detected too, and sufficiently accurate after binaries and utf-8 files are classified earlier - remove file as a dependency of Spack in general, which makes Spack itself easier to install - detect file type and need to relocate as part of creating the tarball, which is more cache friendly and thus faster
195 lines
6.4 KiB
YAML
195 lines
6.4 KiB
YAML
name: Bootstrapping
|
|
|
|
on:
|
|
# This Workflow can be triggered manually
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
schedule:
|
|
# nightly at 2:16 AM
|
|
- cron: '16 2 * * *'
|
|
|
|
concurrency:
|
|
group: bootstrap-${{github.ref}}-${{github.event.pull_request.number || github.run_number}}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
distros-clingo-sources:
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.image }}
|
|
strategy:
|
|
matrix:
|
|
image: ["fedora:latest", "opensuse/leap:latest"]
|
|
steps:
|
|
- name: Setup Fedora
|
|
if: ${{ matrix.image == 'fedora:latest' }}
|
|
run: |
|
|
dnf install -y \
|
|
bzip2 curl file gcc-c++ gcc gcc-gfortran git gzip \
|
|
make patch unzip which xz python3 python3-devel tree \
|
|
cmake bison bison-devel libstdc++-static
|
|
- name: Setup OpenSUSE
|
|
if: ${{ matrix.image == 'opensuse/leap:latest' }}
|
|
run: |
|
|
# Harden CI by applying the workaround described here: https://www.suse.com/support/kb/doc/?id=000019505
|
|
zypper update -y || zypper update -y
|
|
zypper install -y \
|
|
bzip2 curl file gcc-c++ gcc gcc-fortran tar git gpg2 gzip \
|
|
make patch unzip which xz python3 python3-devel tree \
|
|
cmake bison
|
|
- name: Checkout
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Bootstrap clingo
|
|
run: |
|
|
source share/spack/setup-env.sh
|
|
spack bootstrap disable github-actions-v0.6
|
|
spack bootstrap disable github-actions-v0.5
|
|
spack external find cmake bison
|
|
spack -d solve zlib
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
clingo-sources:
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
matrix:
|
|
runner: ['macos-13', 'macos-14', "ubuntu-latest"]
|
|
steps:
|
|
- name: Setup macOS
|
|
if: ${{ matrix.runner != 'ubuntu-latest' }}
|
|
run: |
|
|
brew install cmake bison tree
|
|
- name: Checkout
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
|
|
with:
|
|
python-version: "3.12"
|
|
- name: Bootstrap clingo
|
|
run: |
|
|
source share/spack/setup-env.sh
|
|
spack bootstrap disable github-actions-v0.6
|
|
spack bootstrap disable github-actions-v0.5
|
|
spack external find --not-buildable cmake bison
|
|
spack -d solve zlib
|
|
tree $HOME/.spack/bootstrap/store/
|
|
|
|
gnupg-sources:
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
matrix:
|
|
runner: [ 'macos-13', 'macos-14', "ubuntu-latest" ]
|
|
steps:
|
|
- name: Setup macOS
|
|
if: ${{ matrix.runner != 'ubuntu-latest' }}
|
|
run: brew install tree gawk
|
|
- name: Remove system executables
|
|
run: |
|
|
while [ -n "$(command -v gpg gpg2 patchelf)" ]; do
|
|
sudo rm $(command -v gpg gpg2 patchelf)
|
|
done
|
|
- name: Checkout
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Bootstrap GnuPG
|
|
run: |
|
|
source share/spack/setup-env.sh
|
|
spack solve zlib
|
|
spack bootstrap disable github-actions-v0.6
|
|
spack bootstrap disable github-actions-v0.5
|
|
spack -d gpg list
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
from-binaries:
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
matrix:
|
|
runner: ['macos-13', 'macos-14', "ubuntu-latest"]
|
|
steps:
|
|
- name: Setup macOS
|
|
if: ${{ matrix.runner != 'ubuntu-latest' }}
|
|
run: brew install tree
|
|
- name: Remove system executables
|
|
run: |
|
|
while [ -n "$(command -v gpg gpg2 patchelf)" ]; do
|
|
sudo rm $(command -v gpg gpg2 patchelf)
|
|
done
|
|
- name: Checkout
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
|
|
with:
|
|
python-version: |
|
|
3.8
|
|
3.9
|
|
3.10
|
|
3.11
|
|
3.12
|
|
3.13
|
|
- name: Set bootstrap sources
|
|
run: |
|
|
source share/spack/setup-env.sh
|
|
spack bootstrap disable github-actions-v0.5
|
|
spack bootstrap disable spack-install
|
|
- name: Bootstrap clingo
|
|
run: |
|
|
set -e
|
|
for ver in '3.8' '3.9' '3.10' '3.11' '3.12' '3.13'; do
|
|
not_found=1
|
|
ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)"
|
|
if [[ -d "$ver_dir" ]] ; then
|
|
echo "Testing $ver_dir"
|
|
if $ver_dir/python --version ; then
|
|
export PYTHON="$ver_dir/python"
|
|
not_found=0
|
|
old_path="$PATH"
|
|
export PATH="$ver_dir:$PATH"
|
|
./bin/spack-tmpconfig -b ./.github/workflows/bin/bootstrap-test.sh
|
|
export PATH="$old_path"
|
|
fi
|
|
fi
|
|
if (($not_found)) ; then
|
|
echo Required python version $ver not found in runner!
|
|
exit 1
|
|
fi
|
|
done
|
|
- name: Bootstrap GnuPG
|
|
run: |
|
|
source share/spack/setup-env.sh
|
|
spack -d gpg list
|
|
tree $HOME/.spack/bootstrap/store/
|
|
|
|
|
|
windows:
|
|
runs-on: "windows-latest"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
|
|
with:
|
|
python-version: "3.12"
|
|
- name: Setup Windows
|
|
run: |
|
|
Remove-Item -Path (Get-Command gpg).Path
|
|
Remove-Item -Path (Get-Command file).Path
|
|
- name: Bootstrap clingo
|
|
run: |
|
|
./share/spack/setup-env.ps1
|
|
spack bootstrap disable github-actions-v0.6
|
|
spack bootstrap disable github-actions-v0.5
|
|
spack external find --not-buildable cmake bison
|
|
spack -d solve zlib
|
|
./share/spack/qa/validate_last_exit.ps1
|
|
tree $env:userprofile/.spack/bootstrap/store/
|
|
- name: Bootstrap GnuPG
|
|
run: |
|
|
./share/spack/setup-env.ps1
|
|
spack -d gpg list
|
|
./share/spack/qa/validate_last_exit.ps1
|
|
tree $env:userprofile/.spack/bootstrap/store/
|