1
1
mirror of https://github.com/anoma/juvix.git synced 2025-01-07 16:22:14 +03:00
juvix/.devcontainer/Dockerfile
Jonathan Cubides f2cc163998
Add initial setup for codespaces (#1713)
Once this PR is merged, Github codespaces will be available,
facilitating contributions from all kinds.

- Juvix Haskell Project CodeSpace

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=102404734&machine=standardLinux32gb&location=WestEurope)

- Juvix Standard Library CodeSpace

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=455254004)

Note that the change here to REAMDE.org only adds a badge that opens the
Juvix Standard Lib Open Spaces. Such an environment quickly loads the
Juvix binary, examples from anoma/juvix/examples, and all the files from
the Standard library. One needs more than 15 GB of memory RAM and more
than 15 GB of storage to load the Juvix Haskell project properly. These
are requirements that are not included in the free plan offered with
GitHub Codespace.
2023-01-18 11:25:18 +01:00

92 lines
2.7 KiB
Docker

# OS
ARG VARIANT="ubuntu-22.04"
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}
ENV DEBIAN_FRONTEND=noninteractive
ENV BOOTSTRAP_HASKELL_NONINTERACTIVE=1
ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.2.5
ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.8.1.0
ENV BOOTSTRAP_HASKELL_STACK_VERSION=2.9.1
ENV BOOTSTRAP_HASKELL_INSTALL_STACK=1
ENV BOOTSTRAP_HASKELL_INSTALL_HLS=1
# OS packages for ghcup and juvix runtime
RUN apt-get update && \
apt-get -y install --no-install-recommends \
curl \
sudo \
wget \
unzip \
git \
jq \
bc \
make \
cmake \
clang \
lldb \
lld \
llvm \
automake \
rsync \
htop \
build-essential \
lsb-release \
pkg-config \
libffi-dev \
libgmp-dev \
libgmp10 \
software-properties-common \
libssl-dev \
libicu-dev \
libtinfo-dev \
libsystemd-dev \
zlib1g-dev \
g++ \
libncurses-dev \
libncursesw5 \
libtinfo5 \
libtool \
autoconf && apt-get clean
RUN sudo bash -c 'curl -sSL https://get.haskellstack.org/ | sh'
ENV PATH=${PATH}:/home/vscode/.ghcup/bin
ENV PATH=${PATH}:/home/vscode/.local/bin
RUN sudo bash -c 'mkdir -p /home/vscode/.local/bin'
RUN sudo bash -c "chown -R vscode /home/vscode/.local/"
RUN sudo bash -c 'curl https://get.wasmer.io -sSfL | sudo WASMER_DIR=/home/vscode/.local sh'
# to be used by the juvix extension
RUN sudo bash -c 'mkdir -p /home/vscode/.local/juvix'
RUN sudo bash -c 'chmod -R a+rXw /home/vscode/.local/juvix'
RUN sudo bash -c 'curl -s https://api.github.com/repos/anoma/juvix/releases/latest \
| grep -a "browser_download_url.*linux" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget --output-document juvix.zip -qi - \
&& unzip juvix.zip \
&& mv juvix-linux* /home/vscode/.local/bin/juvix'
RUN sudo bash -c 'mkdir -p /home/vscode/.local/wasi-sysroot'
RUN sudo bash -c 'curl -s https://api.github.com/repos/WebAssembly/wasi-sdk/releases/tags/wasi-sdk-16 \
| grep -a "browser_download_url.*wasi-sysroot-16.*tar.gz" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget --output-document wasi-sysroot.tar.gz -qi - \
&& tar xvf wasi-sysroot.tar.gz --directory /home/vscode/.local/wasi-sysroot/'
ENV WASI_SYSROOT_PATH=/home/vscode/.local/wasi-sysroot/
RUN sudo bash -c 'curl -s https://api.github.com/repos/jonaprieto/smoke/releases/latest \
| grep -a "browser_download_url.*Linux" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget --output-document smoke -qi - \
&& mv smoke /home/vscode/.local/bin/smoke \
&& chmod a+x /home/vscode/.local/bin/smoke'
USER vscode
RUN bash -c "curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh"