https://github.com/yitzchak/archlinux-cl
Docker Arch Linux image with Common Lisp implementations
https://github.com/yitzchak/archlinux-cl
common-lisp docker-image
Last synced: 9 months ago
JSON representation
Docker Arch Linux image with Common Lisp implementations
- Host: GitHub
- URL: https://github.com/yitzchak/archlinux-cl
- Owner: yitzchak
- License: mit
- Created: 2023-06-13T16:06:11.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-27T14:15:48.000Z (about 1 year ago)
- Last Synced: 2025-04-06T08:11:54.414Z (about 1 year ago)
- Topics: common-lisp, docker-image
- Language: Dockerfile
- Homepage:
- Size: 51.8 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cl - archlinux-cl - Docker Arch Linux image with Common Lisp implementations (7 to this day). MIT. (Expert Systems)
README
# archlinux-cl
Arch Linux Docker image with Common Lisp implementations. Current
implementations are:
* [ABCL](https://armedbear.common-lisp.dev/)
* [CCL](https://ccl.clozure.com/)
* [CLASP](https://github.com/clasp-developers/clasp)
* [CLISP](https://gitlab.com/gnu-clisp/clisp)
* [CMUCL](https://gitlab.common-lisp.net/cmucl/cmucl)
* [ECL](https://ecl.common-lisp.dev/)
* [MKCL](https://github.com/jcbeaudoin/MKCL)
* [SBCL](http://sbcl.org)
The image tag is `ghcr.io/yitzchak/archlinux-cl:latest`
## GitHub Workflows
The image can be used to test Common Lisp systems using GitHub workflows. To aid with this there are three scripts which setup the envionment or aid with calling the specific Lisp implementation.
The first is `make-rc` which ensures that that are RC files for all the provided Lisp implementations in the home directory. This is needed because GitHub makes a new directory when the container starts and sets the environment variable `HOME` to it.
The second is `asdf-add` which adds the current folder to the ASDF registery. This avoids the difficulty of attempting to clone the repository into `~/quicklisp/local-projects`.
The final script is `lisp` which executes a specified Lisp implementation using the appropriate eval and load flags. It accepts the following arguments:
* `-i ` — use the Lisp implementation . This should be the first argument.
* `-e ` — evaluate the
* `-l ` — load the
* `-q` — quit
A simple example of a workflow file is given below that tests a system named `fubar` which has the tests located in a system named `fubar/test`
```yaml
name: test
on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
jobs:
test:
name: Test
defaults:
run:
shell: bash -l {0}
strategy:
matrix:
lisp:
- abcl
- ccl
- clasp
- clisp
- cmucl
- ecl
- mkcl
- sbcl
fail-fast: false
runs-on: ubuntu-latest
container:
image: ghcr.io/yitzchak/archlinux-cl:latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Setup Lisp Environment
run: |
make-rc
asdf-add
- name: Run Tests
run: |
lisp -i ${{ matrix.lisp }} -e "(ql:quickload :fubar/test)" -e "(asdf:test-system :fubar)"
```