Compare commits
35 commits
Author | SHA1 | Date | |
---|---|---|---|
|
76212e4597 | ||
|
37d6351ff1 | ||
|
0bbf4764f4 | ||
|
c5aaeb1ffc | ||
|
55b7212e25 | ||
|
9467768eb5 | ||
|
b6c2357e52 | ||
|
f3e4144589 | ||
|
da8536f4ff | ||
|
fe2e6f885e | ||
|
e14ce570fc | ||
|
976b3e5419 | ||
|
1e6a66be39 | ||
|
1a45deaa8e | ||
|
abd311bead | ||
|
f4185fed53 | ||
|
4d80952994 | ||
|
98a5a9d323 | ||
|
cf2feb4223 | ||
|
f243cb8ff6 | ||
|
a5179c83cc | ||
|
2050461d6f | ||
|
08730d2cc2 | ||
|
48b749e1f2 | ||
|
cb334f930e | ||
|
9eb7a325f3 | ||
|
d59bda940d | ||
|
b9bed49497 | ||
|
d1afc4a2c7 | ||
|
78562d4bed | ||
|
9e4feeebbc | ||
|
0fe284ebfe | ||
|
397c5328a9 | ||
|
a7e183c1bc | ||
|
f1fddbf686 |
9 changed files with 384 additions and 164 deletions
119
.github/workflows/tests.yml
vendored
119
.github/workflows/tests.yml
vendored
|
@ -14,45 +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
|
||||
- os: ubuntu-latest
|
||||
lisp: allegro
|
||||
# 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/15
|
||||
# See issue: https://github.com/40ants/setup-lisp/issues/22
|
||||
# - os: ubuntu-latest
|
||||
# lisp: clisp
|
||||
# lisp: allegro
|
||||
- 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}
|
||||
|
@ -82,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
|
||||
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,3 +2,4 @@
|
|||
/env/
|
||||
/.qlot
|
||||
/README
|
||||
*.fasl
|
||||
|
|
99
ChangeLog.md
99
ChangeLog.md
|
@ -2,9 +2,104 @@
|
|||
|
||||
# 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)
|
||||
|
||||
<a id="fixed"></a>
|
||||
|
||||
### Fixed
|
||||
|
||||
* Fix recreating of qlfile inside qlot environment cache.
|
||||
|
||||
When some jobs used qlfile-template argument + caching, a template application
|
||||
result was cached and caused an error during the next run.
|
||||
|
||||
<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E0-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>
|
||||
|
||||
## 4.0.1 (2024-02-25)
|
||||
|
||||
<a id="fixed"></a>
|
||||
|
||||
### Fixed
|
||||
|
||||
* Fixed loading of quicklisp-osx-fix. Previously the script made unnecessary output and when you had a `qlfile` template in your workflow this output leaked into `qlfile` broking following `qlot install`.
|
||||
|
||||
<a id="x-28PROJECT-DOCS-2FCHANGELOG-3A-3A-7C4-2E0-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>
|
||||
|
||||
## 4.0.0 (2024-02-24)
|
||||
|
||||
<a id="changed"></a>
|
||||
|
||||
### Changed
|
||||
|
||||
* Internal cache mechanism was added. Now action caches Roswell and Qlot files to speed up reruns. For example, without cache action could be executed about 4 minutes, and with cache it runs only 20 seconds on Ubuntu or 1 minute on Windows.
|
||||
* 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.
|
||||
|
||||
<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>
|
||||
|
||||
|
@ -22,7 +117,7 @@
|
|||
|
||||
<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>
|
||||
|
||||
|
|
111
README.md
111
README.md
|
@ -22,6 +22,8 @@ and [Qlot][e3ea] inside the Github `CI`.
|
|||
`qlfile`, see "Overriding qlfile" section.
|
||||
* And finally, it can install a specified `ASDF` system and all it's dependencies.
|
||||
But this step is optional.
|
||||
* Installed Roswell, `.qlot` and `~/.cache/common-lisp/` files are cached to speed up
|
||||
repeated builds.
|
||||
|
||||
<a id="x-28PROJECT-DOCS-3A-3A-40IMPLEMENTATION-SUPPORT-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>
|
||||
|
||||
|
@ -37,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 | ✅ |
|
||||
| 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>
|
||||
|
||||
|
@ -83,8 +85,8 @@ jobs:
|
|||
LISP: ${{ matrix.lisp }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
- uses: actions/checkout@v4
|
||||
- uses: 40ants/setup-lisp@v4
|
||||
with:
|
||||
asdf-system: cl-info
|
||||
- uses: 40ants/run-tests@v2
|
||||
|
@ -94,7 +96,7 @@ jobs:
|
|||
The part, corresponding to an action call is:
|
||||
|
||||
```yaml
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
- uses: 40ants/setup-lisp@v4
|
||||
with:
|
||||
asdf-system: cl-info
|
||||
```
|
||||
|
@ -121,7 +123,7 @@ working with this action. However, should you need to use a different version
|
|||
instead, you can specify that via the `roswell-version` argument:
|
||||
|
||||
```
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
- uses: 40ants/setup-lisp@v4
|
||||
with:
|
||||
roswell-version: v21.10.14.111
|
||||
```
|
||||
|
@ -134,7 +136,7 @@ working with this action. However, should you need to use a different version
|
|||
instead, you can specify that via the `asdf-version` argument:
|
||||
|
||||
```
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
- uses: 40ants/setup-lisp@v4
|
||||
with:
|
||||
asdf-version: 3.3.5.3
|
||||
```
|
||||
|
@ -147,7 +149,7 @@ working with this action. However, should you need to use a different version
|
|||
instead, you can specify that via the `qlot-version` argument:
|
||||
|
||||
```
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
- uses: 40ants/setup-lisp@v4
|
||||
with:
|
||||
qlot-version: 0.11.5
|
||||
```
|
||||
|
@ -182,8 +184,8 @@ env:
|
|||
QUICKLISP_DIST: ${{ matrix.quicklisp-dist }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
- uses: actions/checkout@v4
|
||||
- uses: 40ants/setup-lisp@v4
|
||||
with:
|
||||
asdf-system: cl-info
|
||||
qlfile-template: |
|
||||
|
@ -212,57 +214,17 @@ Usually installing Roswell, a lisp implementation and dependencies
|
|||
take from 2 to 10 minutes. Multiply this to the number of
|
||||
matrix combinations and you'll get signifficant time.
|
||||
|
||||
To speed up build, you can use caching using a standad GitHub action `actions/cache@v2`.
|
||||
Starting from version `4.0.0`, this action cares about caching itself
|
||||
and you don't need to wrap it with `actions/cache`. This behaviour
|
||||
of enabled by default. Without cache action could be executed about
|
||||
4 minutes, and with cache it runs only 20 seconds on Ubuntu or 1 minute on Windows.
|
||||
|
||||
To make caching work, add such sections into your workflow file:
|
||||
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.
|
||||
|
||||
```yaml
|
||||
- name: Grant All Perms to Make Cache Restoring Possible
|
||||
run: |
|
||||
sudo mkdir -p /usr/local/etc/roswell
|
||||
sudo chown "${USER}" /usr/local/etc/roswell
|
||||
# Here the ros binary will be restored:
|
||||
sudo chown "${USER}" /usr/local/bin
|
||||
- name: Get Current Month
|
||||
id: current-month
|
||||
run: |
|
||||
echo "::set-output name=value::$(date -u "+%Y-%m")"
|
||||
- name: Cache Roswell Setup
|
||||
id: cache
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
cache-name: cache-roswell
|
||||
with:
|
||||
path: |
|
||||
/usr/local/bin/ros
|
||||
~/.cache/common-lisp/
|
||||
~/.roswell
|
||||
/usr/local/etc/roswell
|
||||
.qlot
|
||||
key: "${{ steps.current-month.outputs.value }}-${{ env.cache-name }}-${{ runner.os }}-${{ hashFiles('qlfile.lock') }}"
|
||||
- name: Restore Path To Cached Files
|
||||
run: |
|
||||
echo $HOME/.roswell/bin >> $GITHUB_PATH
|
||||
echo .qlot/bin >> $GITHUB_PATH
|
||||
if: steps.cache.outputs.cache-hit == 'true'
|
||||
- uses: 40ants/setup-lisp@v2
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
```
|
||||
There are two important lines here.
|
||||
|
||||
* The last line `if: steps.cache.outputs.cache-hit != 'true'` skips
|
||||
running lisp installation, it it was take from the cache.
|
||||
* The `key` value:
|
||||
|
||||
`
|
||||
key: "${{ steps.current-month.outputs.value }}-${{ env.cache-name }}-${{ runner.os }}-${{ hashFiles('qlfile.lock') }}"
|
||||
`
|
||||
|
||||
It controls when your cache will be matched. If you are using `matrix`, put all it's components
|
||||
into the key.
|
||||
|
||||
I also added a current month there, to make sure cache will be renewed at least monthly.
|
||||
This way a new Roswell, Qlot and `ASDF` will be used in a build.
|
||||
The current month is used as part of the cache key, to refresh caches every month.
|
||||
This way a new Roswell, Qlot and `ASDF` will be used in a build. Also, you can set
|
||||
`env.cache-name` variable to some value, to force rebuild with a fresh cache.
|
||||
|
||||
<a id="x-28PROJECT-DOCS-3A-3A-40ROADMAP-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>
|
||||
|
||||
|
@ -287,6 +249,11 @@ If you want to contribute to this system, join development at GitHub:
|
|||
[ecc6]: https://github.com/40ants/setup-lisp/issues/16
|
||||
[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
|
||||
|
|
102
action.yml
102
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,22 +292,7 @@ runs:
|
|||
|
||||
mkdir -p ~/.roswell
|
||||
|
||||
cat >> ~/.roswell/init.lisp <<EOF
|
||||
(handler-bind ((error #'(lambda (c)
|
||||
(uiop:print-condition-backtrace c)
|
||||
(uiop:quit 1))))
|
||||
(let ((fix-filename (merge-pathnames
|
||||
(make-pathname :directory '(:relative ".quicklisp-client-fix")
|
||||
:name "quicklisp-fix"
|
||||
:type "lisp")
|
||||
(user-homedir-pathname))))
|
||||
(cond
|
||||
((probe-file fix-filename)
|
||||
(format t "Loading quicklisp fix.~%")
|
||||
(load fix-filename))
|
||||
(t
|
||||
(format t "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
|
||||
|
@ -323,6 +329,34 @@ runs:
|
|||
path: ${{ inputs.roswell-cache-paths }}
|
||||
key: ${{ steps.roswell-cache-restore.outputs.cache-primary-key }}
|
||||
|
||||
# We really need this step go before cache restore,
|
||||
# because it changes qlfile and cache key depends on it.
|
||||
- name: Ensure qlfile exists
|
||||
shell: lispsh -eo pipefail {0}
|
||||
run: |
|
||||
echo ::group::Ensure qlfile exists
|
||||
|
||||
if [[ -n "${{ inputs.qlfile-template }}" ]]; then
|
||||
echo "${{ inputs.qlfile-template }}" | $GITHUB_ACTION_PATH/templater.ros > qlfile
|
||||
rm -f qlfile.lock
|
||||
|
||||
echo "Created qlfile:"
|
||||
echo '==============='
|
||||
cat qlfile
|
||||
echo '==============='
|
||||
echo ''
|
||||
elif [[ -e qlfile ]]; then
|
||||
echo 'Here is content of qlfile:'
|
||||
echo '==============='
|
||||
cat qlfile
|
||||
echo '==============='
|
||||
echo ''
|
||||
else
|
||||
echo 'There is no qlfile. Creating an empty one.'
|
||||
touch qlfile
|
||||
fi
|
||||
|
||||
echo ::endgroup::
|
||||
|
||||
- if: inputs.cache == 'true'
|
||||
name: Restore Qlot Environment
|
||||
|
@ -330,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
|
||||
|
@ -343,24 +377,13 @@ runs:
|
|||
shell: lispsh -eo pipefail {0}
|
||||
run: |
|
||||
echo ::group::Create Qlot Environment
|
||||
|
||||
if [[ -n "${QLFILE_TEMPLATE}" ]]; then
|
||||
echo "${QLFILE_TEMPLATE}" | $GITHUB_ACTION_PATH/templater.ros > qlfile
|
||||
rm -f qlfile.lock
|
||||
fi
|
||||
|
||||
if [[ -e qlfile ]]; then
|
||||
echo 'Here is content of qlfile:'
|
||||
echo '==============='
|
||||
cat qlfile
|
||||
echo '==============='
|
||||
echo ''
|
||||
if [[ "${{ inputs.qlot-no-deps }}" != 'false' ]]; then
|
||||
echo 'Running Qlot with --no-deps argument'
|
||||
qlot install --no-deps
|
||||
else
|
||||
echo 'There is no qlfile. Creating an empty one.'
|
||||
touch qlfile
|
||||
echo 'Running Qlot as usual'
|
||||
qlot install
|
||||
fi
|
||||
|
||||
qlot install
|
||||
echo ::endgroup::
|
||||
env:
|
||||
QLFILE_TEMPLATE: ${{ inputs.qlfile-template }}
|
||||
|
@ -368,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'
|
||||
|
|
|
@ -7,7 +7,61 @@
|
|||
|
||||
(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
|
||||
|
||||
* Fix recreating of qlfile inside qlot environment cache.
|
||||
|
||||
When some jobs used qlfile-template argument + caching, a template application
|
||||
result was cached and caused an error during the next run.
|
||||
")
|
||||
(4.0.1 2024-02-25
|
||||
"
|
||||
# Fixed
|
||||
|
||||
* Fixed loading of quicklisp-osx-fix. Previously the script made unnecessary output and when you had a `qlfile` template in your workflow this output leaked into `qlfile` broking following `qlot install`.
|
||||
")
|
||||
(4.0.0 2024-02-24
|
||||
"
|
||||
# Changed
|
||||
|
@ -16,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
|
||||
|
||||
|
@ -29,7 +83,7 @@
|
|||
* Fixed running of test.ros script under Windows.
|
||||
|
||||
")
|
||||
(3.1.0 2023-01-27
|
||||
(3.1.0 2024-01-27
|
||||
"
|
||||
# Changed
|
||||
|
||||
|
|
31
docs.lisp
31
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 | ✅ (sometimes fails because of \"expired-license\") |
|
||||
| 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 | ✅ | ✅ | ✅ |
|
||||
|
||||
")
|
||||
|
||||
|
|
19
load-quicklisp-fix.lisp
Normal file
19
load-quicklisp-fix.lisp
Normal file
|
@ -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))))))
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue