-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile-apt-slim.template
75 lines (68 loc) · 3.8 KB
/
Dockerfile-apt-slim.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
FROM PLACEHOLDER
ENV SBCL_VERSION PLACEHOLDER
ENV SBCL_SIGNING_KEY D6839CA0A67F74D9DFB70922EBD595A9100D63CD
WORKDIR /usr/local/src/
# hadolint ignore=DL3003,DL3008
RUN set -x \
&& case "$(dpkg --print-architecture)" in \
armhf) SBCL_ARCH=arm; SBCL_BINARY_ARCH_CODE=armhf; SBCL_BINARY_VERSION=1.4.11;; \
arm64) SBCL_ARCH=arm64; SBCL_BINARY_ARCH_CODE=arm64; SBCL_BINARY_VERSION=1.4.2;; \
# Limit to 1.5.5 because that's when the glibc version used to build was bumped
amd64) SBCL_ARCH=x86-64; SBCL_BINARY_ARCH_CODE=x86-64; SBCL_BINARY_VERSION=1.5.5;; \
*) echo "Unknown arch" >&2; exit 1;; \
esac \
&& export SBCL_ARCH \
&& export SBCL_BINARY_ARCH_CODE \
&& export SBCL_BINARY_VERSION \
&& download_and_validate_hashes() { \
curl -fsSL "https://downloads.sourceforge.net/project/sbcl/sbcl/${1}/sbcl-${1}-crhodes.asc" > "sbcl-${1}-crhodes.asc" \
&& gpg --batch --verify "sbcl-${1}-crhodes.asc" \
&& gpg --batch --decrypt "sbcl-${1}-crhodes.asc" > "sbcl-${1}-crhodes.txt"; \
} \
&& download_and_unpack_binary() { \
url="https://downloads.sourceforge.net/project/sbcl/sbcl/${1}/sbcl-${1}-$SBCL_BINARY_ARCH_CODE-linux-binary.tar.bz2" \
&& curl -fsSL "$url" > "sbcl-${1}-$SBCL_BINARY_ARCH_CODE-linux-binary.tar.bz2" \
&& bunzip2 "sbcl-${1}-$SBCL_BINARY_ARCH_CODE-linux-binary.tar.bz2" \
&& if grep "sbcl-${1}-$SBCL_BINARY_ARCH_CODE-linux-binary.tar" "sbcl-${1}-crhodes.txt" > "${1}-sum-file.txt"; then sha256sum -c "${1}-sum-file.txt"; fi \
&& tar xf "sbcl-${1}-$SBCL_BINARY_ARCH_CODE-linux-binary.tar" \
&& rm -rf "sbcl-${1}-$SBCL_BINARY_ARCH_CODE-linux-binary.tar"; \
} \
&& download_source() { \
url="https://downloads.sourceforge.net/project/sbcl/sbcl/${1}/sbcl-${1}-source.tar.bz2" \
&& curl -fsSL "$url" > "sbcl-${1}-source.tar.bz2" \
&& bunzip2 "sbcl-${1}-source.tar.bz2" \
&& grep "sbcl-${1}-source.tar" "sbcl-${1}-crhodes.txt" > "${1}-sum-file.txt" \
&& sha256sum -c "${1}-sum-file.txt" \
&& tar xf "sbcl-${1}-source.tar"; \
} \
&& build_and_install_source() { \
cd "sbcl-${1}/" \
# Remove the hardcoding of armv5 as target arch. Use the default
# provided by the base image.
&& sed -i -e "s/CFLAGS += -marm -march=armv5/CFLAGS += -marm/" src/runtime/Config.arm-linux \
# Old versions of SBCL choke. <https://sourceforge.net/p/sbcl/mailman/message/37640913/>
&& echo "(setf *debugger-hook* (lambda (c h) (declare (ignore h)) (let ((restart (find-restart 'continue c))) (when restart (invoke-restart restart)))))" > build-debugger-hook.lisp \
&& sh make.sh "--xc-host=${2}" \
&& sh install.sh \
&& rm build-debugger-hook.lisp \
&& cd /usr/local/src; \
} \
&& apt-get update \
&& apt-get install -y --no-install-recommends curl gnupg ca-certificates make dirmngr bzip2 build-essential libzstd-dev \
&& GNUPGHOME="$(mktemp -d)" \
&& export GNUPGHOME \
&& gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${SBCL_SIGNING_KEY} \
&& download_and_validate_hashes "$SBCL_BINARY_VERSION" \
&& download_and_validate_hashes "$SBCL_VERSION" \
&& download_and_unpack_binary "$SBCL_BINARY_VERSION" \
&& download_source "$SBCL_VERSION" \
&& build_and_install_source "$SBCL_VERSION" "/usr/local/src/sbcl-${SBCL_BINARY_VERSION}-$SBCL_BINARY_ARCH_CODE-linux/run-sbcl.sh --load build-debugger-hook.lisp" \
&& rm -rf "$GNUPGHOME" ./* \
&& apt-get remove -y curl gnupg ca-certificates make dirmngr bzip2 build-essential libzstd-dev \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& sbcl --version
WORKDIR /
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["sbcl"]