mirror of
https://github.com/anoma/juvix.git
synced 2025-01-07 16:22:14 +03:00
f2cc163998
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.
92 lines
2.7 KiB
Docker
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"
|