name: CL-host on: [push] jobs: ecl: runs-on: ubuntu-24.04 timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/cache@v4 id: ecl-cache3 with: path: /tmp/ecl key: ecl-cache3 - name: build host ecl if: steps.ecl-cache3.outputs.cache-hit != 'true' run: | wget -q https://github.com/sbcl/sbcl/releases/download/sbcl-1.4.14/ecl.tgz tar xf ecl.tgz cd ecl ./configure --prefix=/usr/ --enable-threads make working-directory: /tmp - name: install ecl run: | sudo make install echo '(setf *debugger-hook* (lambda (c fun) (princ c) (si::tpl-backtrace) (quit 1)))' > ~/.eclrc working-directory: /tmp/ecl - name: build env: SBCL_MAKE_TARGET_2_OPTIONS: --disable-ldb --disable-debugger SBCL_MAKE_JOBS: -j4 run: ./make.sh --xc-host='ecl' clisp: runs-on: ubuntu-24.04 timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Reset mtime uses: alerque/git-warp-time@latest - name: install host clisp run: | sudo apt-get -qq update | true sudo apt-get -qq install clisp - name: build env: SBCL_MAKE_JOBS: -j4 SBCL_MAKE_TARGET_2_OPTIONS: --disable-ldb --disable-debugger run: | ./make.sh --xc-host='clisp -on-error exit' - name: archive clisp-xc fasls run: tar --transform 's,^,clisp-host/,' -cf clisp-host-fasls.tgz obj/from-xc/ - name: upload clisp-xc archive uses: actions/upload-artifact@v4 with: name: xc-host-fasls-clisp path: clisp-host-fasls.tgz ccl: runs-on: ubuntu-24.04 timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Reset mtime uses: alerque/git-warp-time@latest - name: install host ccl run: | wget -q https://github.com/sbcl/sbcl/releases/download/sbcl-1.4.14/ccl-host.tgz tar xf ccl-host.tgz - name: build env: SBCL_MAKE_JOBS: -j4 SBCL_MAKE_TARGET_2_OPTIONS: --disable-ldb --disable-debugger run: | ./make.sh --xc-host='ccl-host/lx86cl64 --batch' - name: archive ccl-xc fasls run: tar --transform 's,^,ccl-host/,' -cf ccl-host-fasls.tgz obj/from-xc/ - name: upload ccl-xc archive uses: actions/upload-artifact@v4 with: name: xc-host-fasls-ccl path: ccl-host-fasls.tgz cmucl: runs-on: ubuntu-24.04 timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Reset mtime uses: alerque/git-warp-time@latest - name: install host cmucl run: | mkdir cmucl cd cmucl wget -q https://github.com/sbcl/sbcl/releases/download/sbcl-1.4.14/cmucl.tar.bz2 tar xf cmucl.tar.bz2 echo '(setf ext:*gc-verbose* nil)' > ~/.cmucl-init.lisp echo '(setf *batch-mode* t)' >> ~/.cmucl-init.lisp echo '(setf *debugger-hook* (lambda (c fun) (princ c) (debug:backtrace) (quit nil 1)))' >> ~/.cmucl-init.lisp working-directory: /tmp/ - name: build env: SBCL_MAKE_JOBS: -j4 SBCL_MAKE_TARGET_2_OPTIONS: --disable-ldb --disable-debugger run: | ./make.sh --xc-host='/tmp/cmucl/bin/lisp -dynamic-space-size 1024' - name: archive cmucl-xc fasls run: tar --transform 's,^,cmucl-host/,' -cf cmucl-host-fasls.tgz obj/from-xc/ - name: upload cmucl-xc archive uses: actions/upload-artifact@v4 with: name: xc-host-fasls-cmucl path: cmucl-host-fasls.tgz sbcl: runs-on: ubuntu-24.04 timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Reset mtime uses: alerque/git-warp-time@latest - name: install host sbcl run: | sudo apt-get -qq update | true sudo apt-get -qq install sbcl libcapstone-dev - name: build env: SBCL_MAKE_JOBS: -j4 SBCL_MAKE_TARGET_2_OPTIONS: --disable-ldb --disable-debugger run: | ./make.sh --xc-host='sbcl --dynamic-space-size 600MB --lose-on-corruption --disable-ldb --disable-debugger' - name: archive sbcl-xc fasls run: tar --transform 's,^,sbcl-host/,' -cf sbcl-host-fasls.tgz obj/from-xc/ - name: upload sbcl-xc archive uses: actions/upload-artifact@v4 with: name: xc-host-fasls-sbcl path: sbcl-host-fasls.tgz - name: self build env: SBCL_MAKE_JOBS: -j4 SBCL_MAKE_TARGET_2_OPTIONS: --disable-ldb --disable-debugger run: | cp src/runtime/sbcl output/sbcl.core /tmp git reset --hard ./make.sh --xc-host='/tmp/sbcl --core /tmp/sbcl.core --dynamic-space-size 600MB --lose-on-corruption --disable-ldb --disable-debugger' - name: archive self-xc fasls run: tar --transform 's,^,self-host/,' -cf self-host-fasls.tgz obj/from-xc/ - name: upload self-xc archive uses: actions/upload-artifact@v4 with: name: xc-host-fasls-self path: self-host-fasls.tgz compare-xc-host-fasls: runs-on: ubuntu-slim timeout-minutes: 5 needs: [ccl, sbcl, cmucl, clisp] strategy: matrix: host: [ccl, clisp, cmucl, self] or: [false] fail-fast: false steps: - name: download xc-host fasls uses: actions/download-artifact@v4 with: pattern: xc-host-fasls-* merge-multiple: true - name: extract xc-host fasls run: | tar xf sbcl-host-fasls.tgz tar xf ${{ matrix.host }}-host-fasls.tgz - name: compare xc-host fasls run: | diff -ur sbcl-host/ ${{ matrix.host }}-host/ || ${{ matrix.or }}