Skip to content

Instantly share code, notes, and snippets.

@elderica
Created July 23, 2023 09:08
Show Gist options
  • Save elderica/7249a2f4385357a2db6d09a190fd33c4 to your computer and use it in GitHub Desktop.
Save elderica/7249a2f4385357a2db6d09a190fd33c4 to your computer and use it in GitHub Desktop.
SBCL 2.3.6 on ArchLinux
FROM archlinux:latest AS base
ARG SBCL_VERSION=2.3.6
ENV SBCL_SIGNING_KEY=D6839CA0A67F74D9DFB70922EBD595A9100D63CD
ENV SBCL_DOWNLOADS_BASE_URL="https://downloads.sourceforge.net/project/sbcl/sbcl"
ENV SBCL_HASH_FILE=sbcl-${SBCL_VERSION}-crhodes.asc
ENV SBCL_HASH_URL=${SBCL_DOWNLOADS_BASE_URL}/${SBCL_VERSION}/${SBCL_HASH_FILE}
ENV SBCL_SRC_TBZ2_FILE=sbcl-${SBCL_VERSION}-source.tar.bz2
ENV SBCL_SRC_TBZ2_URL=${SBCL_DOWNLOADS_BASE_URL}/${SBCL_VERSION}/${SBCL_SRC_TBZ2_FILE}
WORKDIR /sbcl-build
RUN set -x \
# Install build tools and SBCL from Arch
&& pacman -Syu --noconfirm base-devel strace zstd sbcl \
# Fetch encrypted hash file
&& gpg --batch --recv-keys ${SBCL_SIGNING_KEY} \
&& curl -fsSL -o ${SBCL_HASH_FILE} ${SBCL_HASH_URL} \
&& gpg --batch --verify ${SBCL_HASH_FILE} \
# Fetch source tarball
&& curl -fsSL -o ${SBCL_SRC_TBZ2_FILE} ${SBCL_SRC_TBZ2_URL} \
&& bunzip2 ${SBCL_SRC_TBZ2_FILE} \
&& (gpg --batch --decrypt ${SBCL_HASH_FILE} | grep ${SBCL_SRC_TBZ2_FILE%.bz2} | tee src-checksum) \
&& sha256sum --check src-checksum \
# Extract source tarball
&& tar -xf ${SBCL_SRC_TBZ2_FILE%.bz2} \
&& cd sbcl-${SBCL_VERSION} \
# Build SBCL
&& source /etc/makepkg.conf \
&& export CFLAGS="${CFLAGS} -D_GNU_SOURCE -fno-omit-frame-pointer" \
&& export LINKFLAGS="${LDFLAGS}" \
&& unset LDFLAGS \
&& unset MAKEFLAGS \
&& sh make.sh --prefix=/opt/sbcl --fancy \
&& (cd ./tests && sh run-tests.sh) \
&& true
ENTRYPOINT ["bash"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment