forked from MinaProtocol/mina
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3-toolchain
More file actions
116 lines (99 loc) · 3.97 KB
/
Copy path3-toolchain
File metadata and controls
116 lines (99 loc) · 3.97 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#################################################################################################
# The "toolchain" Stage
# - installs optional tools that are required in our CI/CD but are not required to build mina
#################################################################################################
FROM opam-deps AS toolchain
ARG deb_codename=focal
ARG DOCKER_VERSION=19.03.4
ARG TERRAFORM_VERSION=0.14.11
ARG DEBS3_VERSION=0.11.6
# location of repo used for pins and external package commits
ARG MINA_DIR=mina
# location of external packages
ARG EXTERNAL_PKG_DIR=$MINA_DIR/src/external
# Rust nightly toolchain for WebAssembly builds
ARG RUST_NIGHTLY=2021-11-16
ENV PATH "$PATH:$HOME/.cargo/bin"
# don't keep sources, to force reinstall of pinned packages from Mina sources
# and to keep Docker image reasonable size
ENV OPAMKEEPBUILDDIR=false
ENV OPAMREUSEBUILDDIR=false
ENV DEBIAN_FRONTEND=noninteractive
# OS package dependencies
RUN sudo apt-get update -y \
&& sudo apt-get install -y \
apt-transport-https \
apt-utils \
awscli \
cmake \
jq \
libboost-dev \
libboost-program-options-dev \
libbz2-dev \
libffi-dev \
libgmp-dev \
libgmp3-dev \
libgmp10 \
libgomp1 \
libjemalloc-dev \
libpq-dev \
libprocps-dev \
libsodium-dev \
libssl-dev \
lsb-release \
m4 \
pandoc \
patchelf \
postgresql \
postgresql-contrib \
perl \
pkg-config \
rubygems \
zlib1g-dev
# -- Debian Buster python dependencies (largely installed above from apt)
# Buster images are used in our migrated integration tests which reqiure python2 jinja2
# Ocaml lints scripts/require-ppxs.py is already python3 and requires sexpdata
RUN test "$deb_codename" = "buster" \
&& sudo apt-get install -y \
python \
python-pip \
python-jinja2 \
python-flake8 \
python-sexpdata \
python3-sexpdata \
&& sudo pip install readchar \
|| exit 0
# --- deb-s3 tool
# tweag version, with lock only on manifest upload
RUN curl -sLO https://github.com/tweag/deb-s3/releases/download/${DEBS3_VERSION}/deb-s3-${DEBS3_VERSION}.gem \
&& sudo gem install deb-s3-${DEBS3_VERSION}.gem \
&& rm -f deb-s3-${DEBS3_VERSION}.gem
# --- Docker Daemon
RUN curl -L -o /tmp/docker-${DOCKER_VERSION}.tgz https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz \
&& tar -xz -C /tmp -f /tmp/docker-${DOCKER_VERSION}.tgz \
&& sudo mv /tmp/docker/* /usr/bin
# --- Terraform tools
RUN curl -sL https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip -o terraform.zip \
&& unzip terraform.zip \
&& sudo mv terraform /usr/bin \
&& sudo ln -s /usr/bin/terraform /usr/local/bin/terraform
# --- Google Cloud tools
RUN echo "deb http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
&& curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - \
&& sudo apt-get update -y \
&& sudo apt-get install -y google-cloud-sdk kubectl
# --- Helm tools
RUN curl https://baltocdn.com/helm/signing.asc | sudo apt-key add - \
&& echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list \
&& sudo apt-get update -y \
&& sudo apt-get install -y helm
# --- yarn + nodejs
RUN curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list \
&& sudo apt update \
&& sudo apt install -y nodejs yarn
# --- extra Rust toolchain and wasm-pack for Wasm builds
RUN rustup toolchain install "nightly-${RUST_NIGHTLY}" \
&& rustup component add rust-src --toolchain "nightly-${RUST_NIGHTLY}"
RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh