- 
                Notifications
    
You must be signed in to change notification settings  - Fork 153
 
Building Docker
        vijay edwin edited this page Jun 15, 2024 
        ·
        8 revisions
      
    Clasp can also build and run in a Docker Container.
Here is a Dockerfile (based on a file yitzi kindly provided) for creating a container with clasp: If you have more memory than 12 GB, you might run more things in parallel (should be quicker) with the following values in the Dockerfile
- 
./koga --jobs=4& ninja -j 4 -C build
The Dockerfile is for Ubuntu 22.04 LTS (Jammy Jellyfish)
FROM ubuntu:jammy
SHELL ["/bin/bash", "-c"]
ARG D_USER=app
ARG D_UID=1000
ENV DEBIAN_FRONTEND=noninteractive
ENV USER ${D_USER}
ENV HOME /home/${D_USER}
ENV JUPYTER_PATH=${HOME}/.local/share/jupyter/
ENV JUPYTERLAB_DIR=${HOME}/.local/share/jupyter/lab/
ENV PATH "${HOME}/.local/bin:${PATH}"
RUN apt-get update
RUN apt-get dist-upgrade -y
RUN apt-get install -o Dpkg::Options::="--force-overwrite" -y \
	binutils-gold clang-13 libboost-dev libbsd-dev libclang-cpp13-dev \
	libelf-dev libgmp-dev libncurses-dev libunwind-dev llvm-13 ninja-build \
	sbcl zlib1g-dev sudo locales wget git pkg-config libclang-13-dev
RUN apt-get -y install software-properties-common
RUN add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main"
RUN apt-get -y install unzip
RUN apt-get -y install cmake build-essential
             
RUN echo 'en_US.UTF-8 UTF-8' >/etc/locale.gen
RUN sudo -E locale-gen
RUN useradd --create-home --shell=/bin/false --uid=${D_UID} ${D_USER} && \
    usermod -aG sudo $D_USER && \
    passwd -d $D_USER
WORKDIR ${HOME}
USER ${D_USER}
RUN wget https://github.com/fmtlib/fmt/releases/download/8.1.1/fmt-8.1.1.zip && \
    unzip fmt-8.1.1.zip && \
    cd fmt-8.1.1 && \
    mkdir build  && \
    cd build  && \
    cmake .. && \
    make && \
    sudo make install
    
RUN wget https://beta.quicklisp.org/quicklisp.lisp && \
    sbcl --non-interactive --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(ql-util:without-prompting (ql:add-to-init-file))' && \
    rm quicklisp.lisp
RUN git clone https://github.com/clasp-developers/clasp.git && \
    cd clasp && \
    ./koga --debug-release --debug-bclasp-lisp --debug-cclasp-lisp  --debug-compiler --debug-guard --debug-verify-modules --debug-jit-log-symbols --debug-assert-type-cast --skip-sync=mps && \
    ninja -j 2 -C buildTo create the docker container:
- Store the above content as 
Dockerfilein a directory and open a terminal there docker build --tag clasp .
To run it:
docker run --name test -it clasp- in the container run clasp with 
/home/app/clasp/build/boehmprecise/clasp - or install with 
sudo ninja -C build install(could also be added to the Dockerfile)