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 \
	zip

# 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.8.0 && \
    pyenv global 3.8.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

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.65

# 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

CMD poetry export -o requirements.txt --without-hashes \
    && pip install -r requirements.txt \
	&& mkdir -p /repro \
	&& cd /repro \
	&& unzip /build/release/*.zip \
	&& cd clightning* \
    && tools/repro-build.sh \
	&& cp *.xz /build/release/
