mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 14:42:40 +01:00
- Locked grpcio-tools version to fix dirty tree issue. Ref: https://github.com/ElementsProject/lightning/pull/7376#issuecomment-2161102381 - Updated python version to 3.10 for future proofing - Added manual dispatch for github action
78 lines
2.4 KiB
Text
78 lines
2.4 KiB
Text
FROM focal
|
|
|
|
ENV TZ=UTC
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
ENV RUST_PROFILE=release
|
|
ENV PATH=/root/.pyenv/shims:/root/.pyenv/bin:/root/.cargo/bin:$PATH
|
|
ENV PROTOC_VERSION=22.0
|
|
|
|
RUN sed -i '/updates/d' /etc/apt/sources.list && \
|
|
sed -i '/security/d' /etc/apt/sources.list
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
autoconf \
|
|
build-essential \
|
|
ca-certificates \
|
|
file \
|
|
gettext \
|
|
git \
|
|
libpq-dev \
|
|
libsodium23 \
|
|
libtool \
|
|
m4 \
|
|
sudo \
|
|
unzip \
|
|
wget \
|
|
git \
|
|
zip
|
|
|
|
# Ensure correct ownership
|
|
RUN chown root:root /etc/sudoers
|
|
RUN chown root:root /usr/lib/sudo/sudoers.so
|
|
|
|
# Download and install jq from official repository
|
|
RUN wget -O /usr/local/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64 \
|
|
&& chmod +x /usr/local/bin/jq
|
|
|
|
# install Python3.8 (more reproducible than relying on python3-setuptools)
|
|
RUN git clone https://github.com/pyenv/pyenv.git /root/.pyenv && \
|
|
apt-get install -y --no-install-recommends \
|
|
libbz2-dev \
|
|
libffi-dev \
|
|
libreadline-dev \
|
|
libsqlite3-dev \
|
|
libssl-dev \
|
|
zlib1g-dev && \
|
|
pyenv install 3.10.0 && \
|
|
pyenv global 3.10.0
|
|
|
|
RUN wget https://bootstrap.pypa.io/get-pip.py -O /tmp/get-pip.py && python3 /tmp/get-pip.py \
|
|
&& rm /tmp/get-pip.py \
|
|
&& pip install poetry mako grpcio-tools==1.62.2
|
|
|
|
RUN wget https://sh.rustup.rs -O rustup-install.sh && \
|
|
bash rustup-install.sh --default-toolchain none --quiet -y && \
|
|
rm rustup-install.sh && \
|
|
/root/.cargo/bin/rustup install 1.73
|
|
|
|
# Download protoc manually, it is in the update repos which we
|
|
# disabled above, so `apt-get` can't find it anymore.
|
|
RUN cd /tmp/ && \
|
|
wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
|
unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
|
mv bin/protoc /usr/local/bin && \
|
|
rm -rf include bin protoc-${PROTOC_VERSION}-linux-x86_64.zip
|
|
|
|
RUN mkdir /build
|
|
WORKDIR /build
|
|
|
|
# We mount the repo into `/repo` and then we take a snapshot of it
|
|
# first by cloning it. This ensures we're not including any
|
|
# uncommitted changes in the working directory on the host. Notice
|
|
# that we no longer take the zipfile.
|
|
CMD git clone /repo . \
|
|
&& poetry export -o requirements.txt --without-hashes \
|
|
&& pip install -r requirements.txt \
|
|
&& tools/repro-build.sh \
|
|
&& cp *.xz /repo/release/
|