diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 88a80e6..fdd03d1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,46 +14,105 @@ jobs: fail-fast: false # Let the workflow continue as much as possible matrix: include: - - os: ubuntu-latest - lisp: sbcl - # Just to ensure test.ros will not fail when version - # is specified explicitly - - os: ubuntu-latest - lisp: sbcl/2.3.1 - - os: macos-latest - lisp: sbcl-bin - - os: windows-latest - lisp: sbcl-bin - - os: ubuntu-latest - lisp: sbcl-bin - - os: ubuntu-latest - lisp: ccl-bin - - os: ubuntu-latest - lisp: clisp-head - - os: ubuntu-latest - lisp: ecl + # Linux - os: ubuntu-latest lisp: abcl-bin - - os: ubuntu-latest - lisp: clasp-bin - - os: ubuntu-latest - lisp: cmu-bin - # See issue: https://github.com/40ants/setup-lisp/issues/22 # - os: ubuntu-latest # lisp: allegro - # See issue: https://github.com/40ants/setup-lisp/issues/15 - # - os: ubuntu-latest - # lisp: clisp + - os: ubuntu-latest + lisp: ccl-bin # See issue: https://github.com/40ants/setup-lisp/issues/16 # - os: ubuntu-latest # lisp: clasp + - os: ubuntu-latest + lisp: clasp-bin + # See issue: https://github.com/40ants/setup-lisp/issues/15 + # - os: ubuntu-latest + # lisp: clisp + - os: ubuntu-latest + lisp: clisp-head + - os: ubuntu-latest + lisp: cmu-bin + - os: ubuntu-latest + lisp: ecl # See issue: https://github.com/40ants/setup-lisp/issues/17 # - os: ubuntu-latest # lisp: mkcl # See issue: https://github.com/40ants/setup-lisp/issues/18 # - os: ubuntu-latest # lisp: npt + - os: ubuntu-latest + lisp: sbcl + # Just to ensure test.ros will not fail when version + # is specified explicitly + - os: ubuntu-latest + lisp: sbcl/2.3.1 + - os: ubuntu-latest + lisp: sbcl-bin + + # OSX + - os: macos-13 + lisp: abcl-bin + - os: macos-13 + lisp: ccl-bin + # https://github.com/40ants/setup-lisp/issues/29 + # - os: macos-13 + # lisp: clasp-bin + # https://github.com/40ants/setup-lisp/issues/28 + # - os: macos-13 + # lisp: clisp-head + # https://github.com/40ants/setup-lisp/issues/30 + # - os: macos-13 + # lisp: cmu-bin + - os: macos-13 + lisp: ecl + - os: macos-13 + lisp: sbcl-bin + + - os: macos-14 + lisp: abcl-bin + # - os: macos-14 + # lisp: ccl-bin + # https://github.com/40ants/setup-lisp/issues/29 + # - os: macos-14 + # lisp: clasp-bin + # https://github.com/40ants/setup-lisp/issues/28 + # - os: macos-14 + # lisp: clisp-head + # https://github.com/40ants/setup-lisp/issues/30 + # - os: macos-14 + # lisp: cmu-bin + - os: macos-14 + lisp: ecl + - os: macos-14 + lisp: sbcl-bin + + + # Windows + + # https://github.com/40ants/setup-lisp/issues/27 + # - os: windows-latest + # lisp: abcl-bin + # https://github.com/40ants/setup-lisp/issues/27 + # - os: windows-latest + # lisp: ccl-bin + # https://github.com/40ants/setup-lisp/issues/27 + # - os: windows-latest + # lisp: clasp-bin + # https://github.com/40ants/setup-lisp/issues/27 + # - os: windows-latest + # lisp: clisp-head + # https://github.com/40ants/setup-lisp/issues/27 + # - os: windows-latest + # lisp: cmu-bin + # https://github.com/40ants/setup-lisp/issues/27 + # - os: windows-latest + # lisp: ecl + - os: windows-latest + lisp: sbcl-bin + + defaults: run: shell: lispsh -eo pipefail {0} @@ -83,8 +142,11 @@ jobs: # https://github.com/roswell/roswell/issues/497 asdf-version: 3.3.5.3 qlot-version: latest - - run: which ros - run: ros config + # On OSX this steps fails often: + # https://github.com/40ants/setup-lisp/issues/31 + # I don't know how to fix it, so we'll skip it for now: + continue-on-error: true - run: qlot exec ros install 40ants/cl-info - run: qlot exec cl-info diff --git a/.gitignore b/.gitignore index 2720985..f514c9e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /env/ /.qlot /README +*.fasl diff --git a/ChangeLog.md b/ChangeLog.md index 21b3848..a82b2a3 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,6 +2,67 @@ # ChangeLog +<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E2-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> + +## 4.2.1 (2024-12-15) + +Fixed the way how we set dynamic-space-size. + +<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E2-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> + +## 4.2.0 (2024-12-14) + +Input variable `dynamic-space-size` was added. It can be used to default set memory size for `SBCL`. + +<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E1-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> + +## 4.1.0 (2024-05-17) + +<a id="added"></a> + +### Added + +* Input argument qlot-no-deps was added. + +Make Qlot ignore asd files and their dependencies. + +This this might be useful in rare cases when your project contains a non-readable asd files such as templates. + +<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E0-2E5-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> + +## 4.0.5 (2024-04-19) + +<a id="fixed"></a> + +### Fixed + +* Extended test matrix with macos-14 runner. +* Fixed Roswell cache paths for macos-14 runner. +* Extended qlot cache key with runner architecture. + +<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E0-2E4-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> + +## 4.0.4 (2024-04-18) + +<a id="fixed"></a> + +### Fixed + +* Cache key was extended with runner architecture. Thanks for the contribution to Ákos Kiss! + +<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E0-2E3-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> + +## 4.0.3 (2024-03-12) + +<a id="fixed"></a> + +### Fixed + +* There was an error when action suceeded, but actually failed trying to load my quicklisp fix for package inferred systems. + A code to load this fix used `:HOME` as a pathname component which is not supported by some `CL` implementations. Actually, + I've already fixed this issue in 3.1.0 version, but somehow this fix was lost. Also, a handler-bind wrapper around the loader was added + and now action's tests will fail in case of any errors. + <a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E0-2E2-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> ## 4.0.2 (2024-02-27) @@ -38,7 +99,7 @@ When some jobs used qlfile-template argument + caching, a template application <a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C3-2E2-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> -## 3.2.0 (2023-01-30) +## 3.2.0 (2024-01-30) <a id="changed"></a> @@ -56,7 +117,7 @@ When some jobs used qlfile-template argument + caching, a template application <a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C3-2E1-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> -## 3.1.0 (2023-01-27) +## 3.1.0 (2024-01-27) <a id="changed"></a> diff --git a/README.md b/README.md index 1970b9b..782995e 100644 --- a/README.md +++ b/README.md @@ -39,21 +39,21 @@ when trying to call `ros` or `qlot` scripts: /c/Users/runneradmin/.roswell/lisp/quicklisp/bin/qlot: line 4: exec: ros: not found Error: Process completed with exit code 127. ``` -| **Implementation** | **Supported** | -| --- | --- | -| abcl-bin | ✅ | -| allegro | [❌][d984] | -| ccl-bin | ✅ | -| clasp | [❌][ecc6] | -| clasp-bin | ✅ | -| clisp | [❌][78c5] | -| clisp-head | ✅ | -| cmu-bin | ✅ | -| ecl | ✅ | -| mkcl | [❌][2801] | -| npt | [❌][7189] | -| sbcl | ✅ | -| sbcl-bin | ✅ | +| **Implementation** | **Linux** | **OSX** | **Windows** | +| --- | --- | --- | --- | +| abcl-bin | ✅ | ✅ | [❌][d780] | +| allegro | [❌][d984] | | | +| ccl-bin | ✅ | ✅ | [❌][d780] | +| clasp | [❌][ecc6] | | [❌][d780] | +| clasp-bin | ✅ | [❌][bf3c] | +| clisp | [❌][78c5] | | [❌][d780] | +| clisp-head | ✅ | [❌][5334] | +| cmu-bin | ✅ | [❌][2599] | [❌][d780] | +| ecl | ✅ | ✅ | [❌][d780] | +| mkcl | [❌][2801] | | | +| npt | [❌][7189] | | | +| sbcl | ✅ | | | +| sbcl-bin | ✅ | ✅ | ✅ | <a id="x-28PROJECT-DOCS-3A-3A-40TYPICAL-USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a> @@ -250,6 +250,10 @@ If you want to contribute to this system, join development at GitHub: [2801]: https://github.com/40ants/setup-lisp/issues/17 [7189]: https://github.com/40ants/setup-lisp/issues/18 [d984]: https://github.com/40ants/setup-lisp/issues/22 +[d780]: https://github.com/40ants/setup-lisp/issues/27 +[5334]: https://github.com/40ants/setup-lisp/issues/28 +[bf3c]: https://github.com/40ants/setup-lisp/issues/29 +[2599]: https://github.com/40ants/setup-lisp/issues/30 [e3ea]: https://github.com/fukamachi/qlot [3dbd]: https://github.com/mmontone/djula [795a]: https://github.com/roswell/roswell diff --git a/action.yml b/action.yml index 0d4bf52..e3d1213 100644 --- a/action.yml +++ b/action.yml @@ -8,6 +8,10 @@ inputs: required: false default: v23.10.14.114 + dynamic-space-size: + description: 'If given, then will be used to change dynamic space size for SBCL. This value will be written to ~/.roswell/config' + required: false + asdf-system: description: 'ASDF system to install' required: false @@ -22,6 +26,11 @@ inputs: required: false default: 0.11.5 + qlot-no-deps: + description: 'Make Qlot ignore asd files and their dependencies. This this might be useful in rare cases when your project contains a non-readable asd files such as templates.' + required: false + default: false + qlfile-template: description: "Djula template for qlfile. All environment variables are available in it's context" required: false @@ -46,6 +55,8 @@ inputs: /usr/local/etc/roswell /usr/local/bin/ros /usr/local/Cellar/roswell + /opt/homebrew/bin/ros + /opt/homebrew/Cellar/roswell qlot-cache-paths: description: "Internal var. Don't use it." @@ -57,6 +68,11 @@ inputs: ~/.cache/common-lisp/ .qlot + cache-suffix: + description: "Internal var. Don't use it." + required: false + default: v9 + runs: using: composite steps: @@ -206,7 +222,7 @@ runs: uses: actions/cache/restore@v4 with: path: ${{ inputs.roswell-cache-paths }} - key: roswell-${{ inputs.roswell-version }}-${{ steps.locals.outputs.current-month }}-${{ env.cache-name }}-${{ runner.os }}-${{ env.LISP }} + key: roswell-${{ inputs.roswell-version }}-${{ steps.locals.outputs.current-month }}-${{ env.cache-name }}-${{ runner.os }}-${{ runner.arch }}-${{ env.LISP }}-${{ inputs.cache-suffix }} - if: inputs.cache == 'true' && steps.roswell-cache-restore.outputs.cache-hit == 'true' name: Restore Path To Cached Files @@ -247,6 +263,11 @@ runs: curl -L https://raw.githubusercontent.com/roswell/roswell/master/scripts/install-for-ci.sh | bash -xeo pipefail fi + if [[ "${{ inputs.dynamic-space-size }}" != "" ]]; then + echo ::group::Changing Dynamic Space Size in Roswell Config + ros config set dynamic-space-size ${{ inputs.dynamic-space-size }} + fi + echo ::endgroup:: - if: inputs.cache == 'false' || steps.roswell-cache-restore.outputs.cache-hit != 'true' @@ -271,21 +292,7 @@ runs: mkdir -p ~/.roswell - cat >> ~/.roswell/init.lisp <<EOF - (let ((fix-filename (make-pathname :directory '(:absolute :home ".quicklisp-client-fix") - :name "quicklisp-fix" - :type "lisp"))) - (let ((quicklisp-found #+quicklisp t - #-quicklisp nil)) - (cond - ((not quicklisp-found) - (warn "Quicklisp is not available, skipping fix loading.~%")) - ((probe-file fix-filename) - (handler-bind ((warning #'muffle-warning)) - (load fix-filename))) - (t - (warn "Quicklisp fix was not found at ~S.~%" fix-filename))))) - EOF + cat $GITHUB_ACTION_PATH/load-quicklisp-fix.lisp >> ~/.roswell/init.lisp - if: inputs.cache == 'false' || steps.roswell-cache-restore.outputs.cache-hit != 'true' name: Upgrade ASDF to the Latest Version @@ -357,7 +364,7 @@ runs: uses: actions/cache/restore@v4 with: path: ${{ inputs.qlot-cache-paths }} - key: qlot-${{ steps.locals.outputs.current-month }}-${{ env.cache-name }}-${{ runner.os }}-${{ env.QUICKLISP_DIST }}-${{ env.LISP }}-${{ hashFiles('qlfile', 'qlfile.lock', '*.asd') }} + key: qlot-${{ steps.locals.outputs.current-month }}-${{ env.cache-name }}-${{ runner.os }}-${{ runner.arch }}-${{ env.QUICKLISP_DIST }}-${{ env.LISP }}-${{ hashFiles('qlfile', 'qlfile.lock', '*.asd') }}-${{ inputs.cache-suffix }} - if: inputs.cache == 'true' && steps.qlot-cache-restore.outputs.cache-hit == 'true' name: Restore Path To .qlot/bin @@ -370,7 +377,13 @@ runs: shell: lispsh -eo pipefail {0} run: | echo ::group::Create Qlot Environment - qlot install + if [[ "${{ inputs.qlot-no-deps }}" != 'false' ]]; then + echo 'Running Qlot with --no-deps argument' + qlot install --no-deps + else + echo 'Running Qlot as usual' + qlot install + fi echo ::endgroup:: env: QLFILE_TEMPLATE: ${{ inputs.qlfile-template }} @@ -378,17 +391,16 @@ runs: # This step will install system and # all possible roswell scripts, if the system # has them in the roswell/ subdirectory: - - if: inputs.cache == 'false' || steps.qlot-cache-restore.outputs.cache-hit != 'true' + - if: inputs.asdf-system && (inputs.cache == 'false' || steps.qlot-cache-restore.outputs.cache-hit != 'true') name: Install ASDF System shell: lispsh -eo pipefail {0} + # Here we'll need to set CL_SOURCE_REGISTRY + # when will switch to a new qlot: run: | echo ::group::Install ASDF System - if [[ -n "${{ inputs.asdf-system }}" ]]; then - qlot exec ros install ${{ inputs.asdf-system }} - else - echo "ASDF system wasn't provided." - fi + qlot exec ros install ${{ inputs.asdf-system }} + echo ::endgroup:: - if: inputs.cache == 'true' && steps.qlot-cache-restore.outputs.cache-hit != 'true' diff --git a/changelog.lisp b/changelog.lisp index 4ef527a..89be45f 100644 --- a/changelog.lisp +++ b/changelog.lisp @@ -7,7 +7,46 @@ (defchangelog (:ignore-words ("ASDF" "PATH" + "CL" + "SBCL" "HOME")) + + (4.2.1 2024-12-15 + "Fixed the way how we set dynamic-space-size.") + (4.2.0 2024-12-14 + "Input variable `dynamic-space-size` was added. It can be used to default set memory size for SBCL.") + (4.1.0 2024-05-17 + " +# Added + +* Input argument qlot-no-deps was added. + + Make Qlot ignore asd files and their dependencies. + + This this might be useful in rare cases when your project contains a non-readable asd files such as templates.") + (4.0.5 2024-04-19 + " +# Fixed + +* Extended test matrix with macos-14 runner. +* Fixed Roswell cache paths for macos-14 runner. +* Extended qlot cache key with runner architecture. +") + (4.0.4 2024-04-18 + " +# Fixed + +* Cache key was extended with runner architecture. Thanks for the contribution to Ákos Kiss! +") + (4.0.3 2024-03-12 + " +# Fixed + +* There was an error when action suceeded, but actually failed trying to load my quicklisp fix for package inferred systems. + A code to load this fix used :HOME as a pathname component which is not supported by some CL implementations. Actually, + I've already fixed this issue in 3.1.0 version, but somehow this fix was lost. Also, a handler-bind wrapper around the loader was added + and now action's tests will fail in case of any errors. +") (4.0.2 2024-02-27 " # Fixed @@ -31,7 +70,7 @@ * A new input variable `cache` was added to control caching beheviour. It is `true` by default, but you can switch it to `false` to turn caching off. ") - (3.2.0 2023-01-30 + (3.2.0 2024-01-30 " # Changed @@ -44,7 +83,7 @@ * Fixed running of test.ros script under Windows. ") - (3.1.0 2023-01-27 + (3.1.0 2024-01-27 " # Changed diff --git a/docs.lisp b/docs.lisp index 5f2e74c..edc44e2 100644 --- a/docs.lisp +++ b/docs.lisp @@ -89,22 +89,21 @@ when trying to call `ros` or `qlot` scripts: Error: Process completed with exit code 127. ``` - -| **Implementation** | **Supported** | -|--------------------|------------------------------------------------------| -| abcl-bin | ✅ | -| allegro | [❌](https://github.com/40ants/setup-lisp/issues/22) | -| ccl-bin | ✅ | -| clasp | [❌](https://github.com/40ants/setup-lisp/issues/16) | -| clasp-bin | ✅ | -| clisp | [❌](https://github.com/40ants/setup-lisp/issues/15) | -| clisp-head | ✅ | -| cmu-bin | ✅ | -| ecl | ✅ | -| mkcl | [❌](https://github.com/40ants/setup-lisp/issues/17) | -| npt | [❌](https://github.com/40ants/setup-lisp/issues/18) | -| sbcl | ✅ | -| sbcl-bin | ✅ | +| **Implementation** | **Linux** | **OSX** | **Windows** | +|--------------------|------------------------------------------------------|---------|--------------| +| abcl-bin | ✅ | ✅ | [❌](https://github.com/40ants/setup-lisp/issues/27) | +| allegro | [❌](https://github.com/40ants/setup-lisp/issues/22) | | | +| ccl-bin | ✅ | ✅ | [❌](https://github.com/40ants/setup-lisp/issues/27) | +| clasp | [❌](https://github.com/40ants/setup-lisp/issues/16) | | [❌](https://github.com/40ants/setup-lisp/issues/27) | +| clasp-bin | ✅ | [❌](https://github.com/40ants/setup-lisp/issues/29) | +| clisp | [❌](https://github.com/40ants/setup-lisp/issues/15) | | [❌](https://github.com/40ants/setup-lisp/issues/27) | +| clisp-head | ✅ | [❌](https://github.com/40ants/setup-lisp/issues/28) | +| cmu-bin | ✅ | [❌](https://github.com/40ants/setup-lisp/issues/30) | [❌](https://github.com/40ants/setup-lisp/issues/27) | +| ecl | ✅ | ✅ | [❌](https://github.com/40ants/setup-lisp/issues/27) | +| mkcl | [❌](https://github.com/40ants/setup-lisp/issues/17) | | | +| npt | [❌](https://github.com/40ants/setup-lisp/issues/18) | | | +| sbcl | ✅ | | | +| sbcl-bin | ✅ | ✅ | ✅ | ") diff --git a/load-quicklisp-fix.lisp b/load-quicklisp-fix.lisp new file mode 100644 index 0000000..8d3816b --- /dev/null +++ b/load-quicklisp-fix.lisp @@ -0,0 +1,19 @@ +(handler-bind ((serious-condition + (lambda (condition) + (uiop:print-condition-backtrace condition) + (uiop:quit 1)))) + (let ((fix-filename (merge-pathnames + (make-pathname :directory '(:relative ".quicklisp-client-fix") + :name "quicklisp-fix" + :type "lisp") + (user-homedir-pathname)))) + (let ((quicklisp-found #+quicklisp t + #-quicklisp nil)) + (cond + ((not quicklisp-found) + (warn "Quicklisp is not available, skipping fix loading.~%")) + ((probe-file fix-filename) + (handler-bind ((warning #'muffle-warning)) + (load fix-filename))) + (t + (warn "Quicklisp fix was not found at ~S.~%" fix-filename)))))) diff --git a/qlfile.lock b/qlfile.lock index b74049b..81abab8 100644 --- a/qlfile.lock +++ b/qlfile.lock @@ -1,11 +1,11 @@ ("quicklisp" . (:class qlot/source/dist:source-dist - :initargs (:distribution "http://beta.quicklisp.org/dist/quicklisp.txt" :%version :latest) - :version "2023-10-21")) + :initargs (:distribution "https://beta.quicklisp.org/dist/quicklisp.txt" :%version :latest) + :version "2024-10-12")) ("ultralisp" . (:class qlot/source/dist:source-dist - :initargs (:distribution "http://dist.ultralisp.org" :%version :latest) - :version "20240127152000")) + :initargs (:distribution "https://dist.ultralisp.org" :%version :latest) + :version "20241214090000")) ("sly" . (:class qlot/source/github:source-github :initargs (:repos "svetlyak40wt/sly" :ref nil :branch "patches" :tag nil)