forked from FStarLang/karamel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
standalone.Dockerfile
66 lines (55 loc) · 2.12 KB
/
standalone.Dockerfile
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
# This Dockerfile should be run from the root Karamel directory
FROM ubuntu:23.10
# CI dependencies: opam, jq (to identify F* branch)
RUN apt-get update && \
apt-get install -y --no-install-recommends \
jq \
ca-certificates \
curl \
wget \
git \
gawk \
coreutils \
sudo \
opam \
python3 \
python3-distutils \
rust-all
# Create a new user and give them sudo rights
# NOTE: we give them the name "opam" to keep compatibility with
# derived hierarchical CI
RUN useradd -d /home/opam opam
RUN echo 'opam ALL=NOPASSWD: ALL' >> /etc/sudoers
RUN mkdir /home/opam
RUN chown opam:opam /home/opam
USER opam
ENV HOME /home/opam
WORKDIR $HOME
SHELL ["/bin/bash", "--login", "-c"]
# Install OCaml
ARG OCAML_VERSION=4.12.0
RUN opam init --compiler=$OCAML_VERSION --disable-sandboxing
RUN opam env --set-switch | tee --append $HOME/.profile $HOME/.bashrc $HOME/.bash_profile
ENV OPAMYES=1
ADD --chown=opam:opam ./ $HOME/karamel/
WORKDIR $HOME/karamel
# Dependencies (F* and opam packages)
ENV FSTAR_HOME=$HOME/FStar
RUN eval $(opam env) && .docker/build/install-deps.sh
# CI dependencies: node.js, ctypes-foreign
RUN opam depext ctypes-foreign uucp
RUN opam install ctypes-foreign uucp
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
RUN sudo apt-get install -y --no-install-recommends nodejs
# CI dependencies: sphinx (for the docs)
# sudo pip3 because of https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562
# jinja2==3.0.0 because of https://github.com/mkdocs/mkdocs/issues/2799
RUN sudo apt-get install --yes --no-install-recommends python3-pip python3-setuptools python3-distutils
RUN sudo pip3 install --break-system-packages pytz tzdata sphinx==1.7.2 jinja2==3.0.0 alabaster==0.7.13 sphinx_rtd_theme
# CI proper
ARG CI_THREADS=24
ARG CI_BRANCH=master
RUN --mount=type=secret,id=DZOMO_GITHUB_TOKEN eval $(opam env) && DZOMO_GITHUB_TOKEN=$(sudo cat /run/secrets/DZOMO_GITHUB_TOKEN) .docker/build/build-standalone.sh $CI_THREADS $CI_BRANCH
# RUN eval $(opam env) && .docker/build/build-standalone.sh $CI_THREADS $CI_BRANCH
WORKDIR $HOME
ENV KRML_HOME=$HOME/karamel