Nightly SBCL #242
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Nightly SBCL" | |
on: | |
workflow_dispatch: | |
inputs: | |
url: | |
description: "git clone URL" | |
default: "https://git.code.sf.net/p/sbcl/sbcl" | |
ref: | |
description: "git reference (refs/heads/mybranch, refs/tags/mytag)" | |
default: "HEAD" | |
# I don’t know how to make this work on github actions. It works locally | |
# but on GA there is some resistance to deep cloning git repositories, | |
# even at the builtins.fetchGit level. For whatever reason I keep getting | |
# this: | |
# | |
# + nix-build --no-out-link --keep-going --argstr url https://git.code.sf.net/p/sbcl/sbcl --argstr ref HEAD --argstr rev 6a6cb3752f41d23be4303361ccf32749469c974c examples/channels/all-packages/nightly-sbcl.nix | |
# error: Server does not allow request for unadvertised object 6a6cb3752f41d23be4303361ccf32749469c974c | |
# warning: could not update mtime for file '/home/runner/.cache/nix/gitv3/0l4dwy1z0vxk09fnvns00hhfn5sq3i9d5056pc68xm348xljcnik/refs/heads/HEAD': No such file or directory | |
# error: | |
# … while calling the 'filter' builtin | |
# at /home/runner/work/test/test/examples/channels/all-packages/default.nix:12:1: | |
# 11| | |
# 12| lib.filter lib.isDerivation (lib.flatten (map derivs [ ./check-disabled.nix ./check-enabled.nix ])) | |
# | ^ | |
# 13| | |
# … while calling the 'concatMap' builtin | |
# at /nix/store/dxhd1dkjiddmx9qd4a185b93bj0zz6kv-source/lib/lists.nix:433:10: | |
# 432| if isList x | |
# 433| then concatMap (y: flatten y) x | |
# | ^ | |
# 434| else [x]; | |
# (stack trace truncated; use '--show-trace' to show the full trace) | |
# error: Cannot find Git revision '6a6cb3752f41d23be4303361ccf32749469c974c' in ref 'HEAD' of repository 'https://git.code.sf.net/p/sbcl/sbcl'! Please make sure that the rev exists on the ref you've specified or add allRefs = true; to fetchGit. | |
# | |
# So just disable this entirely for now and always fetch the latest for | |
# this reference. | |
# | |
# rev: | |
# description: "git revision (must be ancestor of the reference)" | |
schedule: | |
# Run all tests on latest nightly lisp releases | |
- cron: '49 3 * * *' | |
jobs: | |
sbcl: | |
# Arbtirary limit | |
timeout-minutes: 100 | |
# Let’s not waste github’s macos minutes on this | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
linkableRuntime: [true, false] | |
coreCompression: [true, false] | |
gcAndThreads: | |
- gc: true | |
threads: true | |
- gc: false | |
threads: true | |
- gc: false | |
threads: false | |
defaults: | |
run: | |
working-directory: ./examples/channels/all-packages | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: DeterminateSystems/nix-installer-action@v11 | |
with: | |
extra-conf: | | |
substituters = https://cl-nix-lite.cachix.org https://cache.nixos.org/ | |
trusted-public-keys = cl-nix-lite.cachix.org-1:ab6+b0u2vxymMLcZ5DDqPKnxz0WObbMszmC+BDBHpFc= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= | |
- uses: DeterminateSystems/magic-nix-cache-action@main | |
- name: "Build nightly SBCL" | |
run: | | |
cat > lisp.nix <<"EOF" | |
import ./nightly-sbcl.nix { | |
${{ inputs.url && format('url = {0};', toJSON(inputs.url)) }} | |
${{ inputs.ref && format('ref = {0};', toJSON(inputs.ref)) }} | |
sbclOverride = { | |
linkableRuntime = ${{matrix.linkableRuntime}}; | |
coreCompression = ${{matrix.coreCompression}}; | |
markRegionGC = ${{matrix.gcAndThreads.gc}}; | |
threadSupport = ${{matrix.gcAndThreads.threads}}; | |
}; | |
} | |
EOF | |
nix-build --no-out-link lisp.nix | |
# Using nix build is a bit kludgy; nix-build with --arg is nicer, but | |
# nix build has better output for parallel jobs, especially when one of | |
# them fails. | |
- name: "Build all packages against nightly SBCL" | |
run: | | |
nix build --print-build-logs --no-link --keep-going --impure --expr ' | |
import ./. { lisp = import ./lisp.nix; } | |
' |