Skip to content
Dockerfile Shell PowerShell Batchfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images
manifest-templates
scripts
.env-defaults
.gitignore
LICENSE
README.org

README.org

SBCL Docker Images

Supported Tags

Note that many tags for earlier versions exist, but a large set of changes in building the images happened around SBCL 1.5.9/2.0.0 and it is recommended that only the 2.0.0+ tags be used.

  • 2.0.0-alpine3.11, 2.0.0-alpine, alpine3.11, alpine
  • 2.0.0-alpine3.11-build, 2.0.0-alpine-build, alpine3.11-build, alpine-build
  • 2.0.0-alpine3.10, alpine3.10
  • 2.0.0-alpine3.10-build, alpine3.10-build
  • 2.0.0-debian-buster, 2.0.0-debian, debian-buster, debian
  • 2.0.0-debian-buster-build, 2.0.0-debian-build, debian-buster-build, debian-build
  • 2.0.0-debian-stretch, debian-stretch
  • 2.0.0-debian-stretch-build, debian-stretch-build
  • 2.0.0-ubuntu-eoan, 2.0.0-ubuntu, ubuntu-eoan, ubuntu
  • 2.0.0-ubuntu-eoan-build, 2.0.0-ubuntu-build, ubuntu-eoan-build, ubuntu-build
  • 2.0.0-ubuntu-bionic, ubuntu-bionic
  • 2.0.0-ubuntu-bionic-build, ubuntu-bionic-build
  • 2.0.0-windowsservercore-1909, 2.0.0-windowsservercore, windowsservercore-1909, windowsservercore
  • 2.0.0-windowsservercore-1909-build, 2.0.0-windowsservercore-build, windowsservercore-1909-build, windowsservercore-build
  • 2.0.0-windowsservercore-ltsc2019, windowsservercore-ltsc2019
  • 2.0.0-windowsservercore-ltsc2019-build, windowsservercore-ltsc2019-build

Quick Reference

SBCL Home Page
http://sbcl.org
Where to file Docker image related issues
https://github.com/daewok/docker-sbcl/
Where to file issues for SBCL itself
https://bugs.launchpad.net/sbcl
Maintained by
Eric Timmons (i.e., this is not an official SBCL image)
Supported architectures
linux/amd64, linux/arm64, linux/arm/v7, windows/amd64

What is SBCL?

From SBCL’s Home Page:

Steel Bank Common Lisp (SBCL) is a high performance Common Lisp compiler. It is open source / free software, with a permissive license. In addition to the compiler and runtime system for ANSI Common Lisp, it provides an interactive environment including a debugger, a statistical profiler, a code coverage tool, and many other extensions.

What’s in the image?

This image contains SBCL binaries built from the latest source code releasesd byt the SBCL devs for a variety of OSes and architectures.

The general policy for OS support is that images will be built for two versions of supported OSes: either the two most recent versions or the latest LTS and most recent version, as applicable.

Patches

The goal is to track upstream as closely as possible. Thus, patches are kept to a minimum (and ideally kept for only as long as it takes for them to be upstreamed). The only exception is trivial patches to things like test timeouts (as the stock timeouts can frequently be too short when cross-building images with QEMU).

In addition to the trivial patches, the following patches are applied when building specific tags.

Musl Libc Support

All Alpine images have a patch series applied to support building with musl libc as opposed to glibc used by most other GNU/Linux distributions. This patch series has been submitted upstream.

ECL Build Support

The Alpine images are all built with ECL as the build host (as there is no prebuilt SBCL that runs with musl libc). When building the arm images, some warnings are printed that ECL does not like, due to a ~T inside a ~<~:;~> in a format control string. A patch removes this on the affected configurations. It has not been submitted upstream because I suspect it is ECL’s issue as opposed to SBCL’s.

Removal of -march=armv5

GCC version 9 removed the armv5 architecture target used by SBCL’s build configuration for armhf. The affected images (Alpine 3.11 and Ubuntu Eoan for arm32v7) have had the target architecture changed to armv7-a. This issue has been reported upstream.

Add sb-linkable-runtime support to Windows installer

The Windows images have a patch applied that adds sbcl.mk, libsbcl.a, and mswin{,64}.def to the installer if the :sb-linkable-runtime feature is enabled at build time. This patch has been submitted upstream.

-build images

While the build configuration follows upstream’s default set of build features, SBCL is very configurable at build time and it would be a shame to not expose this somehow. Therfore, in addition to the standard images, a set of “build” images (tags with the -build suffix) are provided.

These build images have SBCL already installed in them and include the SBCL source code and any packages needed to build SBCL from scratch. This allows a customized SBCL to be easily built. To customize the feature set, place a file at /usr/local/src/sbcl-$SBCL_VERSION/customize-target-features.lisp or C:\sbcl-$SBCL_VERSION\customize-target-features.lisp. See the SBCL build instructions for more details on what this file should contain. To patch SBCL, place any number of patch files (ending in “.patch”) in /usr/local/src/sbcl-${SBCL_VERSION}/patches/ or C:\sbcl-$SBCL_VERSION\patches\. To build and install SBCL, execute rebuild-sbcl. This script will apply the patches, build, install, and remove the previous copy of SBCL.

While these build images give a lot of flexibility, it results in the images being much larger than the non-build images. Therefore, it is recommended that you use them in multi-stage builds.

Note that the Windows build images do not ship with the full toolchain needed to build SBCL as I have not yet finished my due diligence to understand all the licenses for the tools used (I’m not a Windows developer and don’t spend much time on that OS). Until then, the Windows builds will download and install the toolchain as part of the rebuild process.

License

SBCL is license using a mix of BSD-style and public domain licenses. See SBCL’s COPYING file for more info.

The Dockerfiles used to build the images are licensed under BSD-2-Clause.

As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).

As for any pre-built image usage, it is the image user’s responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.

You can’t perform that action at this time.