-
Notifications
You must be signed in to change notification settings - Fork 155
Expand file tree
/
Copy pathDockerfile
More file actions
60 lines (45 loc) · 1.65 KB
/
Dockerfile
File metadata and controls
60 lines (45 loc) · 1.65 KB
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
# NOTE: To build a container, you need to run koga first to populate
# the dependencies in dependencies/ and within src/
FROM ghcr.io/yitzchak/archlinux-makepkg:latest AS base-deps
RUN sudo pacman-key --init && \
sudo pacman -Syu --noconfirm boost expat fmt gmp libbsd libedit clang19 libelf libffi llvm19 ncurses zlib
FROM base-deps AS build-stage
USER root
# Build dependencies
RUN pacman -Syu --noconfirm sbcl ninja
# Copy source
COPY src/ src/
COPY include/ include/
COPY dependencies/ dependencies/
COPY licenses/ licenses/
COPY tools-for-build tools-for-build/
COPY cscript.lisp koga repos.sexp version.sexp ./
RUN ./koga \
--skip-sync \
--reproducible-build \
--build-mode=bytecode-faso \
--llvm-config="/usr/bin/llvm-config-19" \
--bin-path="/usr/bin/" \
--share-path="/usr/share/clasp/" \
--lib-path="/usr/lib/clasp/" \
--dylib-path="/usr/lib/" \
--build-path=build/ && \
ninja -C build && \
ninja -C build install
FROM base-deps AS clasp
COPY --from=build-stage /usr/share/clasp/ /usr/share/clasp/
COPY --from=build-stage /usr/lib/clasp/ /usr/lib/clasp/
COPY --from=build-stage /usr/bin/clasp /usr/bin/iclasp /usr/bin/
COPY --from=build-stage /usr/lib/libclasp.so /usr/lib/
RUN sudo useradd -m clasp
USER clasp
WORKDIR /home/clasp
ENTRYPOINT ["clasp"]
FROM clasp AS clasp-ql
# ideally use --checksum, but that needs Docker 1.6
ADD --chown=clasp:clasp https://beta.quicklisp.org/quicklisp.lisp ./
RUN clasp --non-interactive \
--load quicklisp.lisp \
--eval "(quicklisp-quickstart:install)" \
--eval "(ql-util:without-prompting (ql:add-to-init-file))" && \
rm quicklisp.lisp