Build release binaries inside an Ubuntu 20.04 Docker container to produce executables with lower GLIBC requirements, compatible with older Linux distributions. - Add Dockerfile.compat (Ubuntu 20.04 base, full depends rebuild) - Add .dockerignore to exclude host build artifacts from context - Add --linux-compat flag to build.sh with Docker build/extract/package - Strip binaries inside container to avoid root ownership issues
32 lines
1.2 KiB
Docker
32 lines
1.2 KiB
Docker
FROM ubuntu:20.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool \
|
|
ncurses-dev unzip python3 zlib1g-dev wget bsdmainutils automake cmake \
|
|
libcurl4-openssl-dev curl git binutils \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /build
|
|
COPY . /build/
|
|
|
|
# Clean host-built depends and src artifacts to force full rebuild inside container
|
|
RUN rm -rf /build/depends/built /build/depends/work \
|
|
/build/depends/x86_64-unknown-linux-gnu \
|
|
/build/depends/x86_64-w64-mingw32 \
|
|
/build/src/RandomX/build \
|
|
&& find /build/src -name '*.o' -o -name '*.a' -o -name '*.la' -o -name '*.lo' \
|
|
-o -name '*.lai' | xargs rm -f \
|
|
&& rm -rf /build/src/univalue/.libs /build/src/univalue/.deps \
|
|
&& rm -rf /build/src/.libs /build/src/.deps \
|
|
&& rm -rf /build/src/cc/*.o /build/src/cc/*.a \
|
|
&& rm -f /build/config.status /build/config.log
|
|
|
|
RUN cd /build && ./util/build.sh --disable-tests -j$(nproc)
|
|
|
|
# Strip binaries inside the container so extracted files are already small
|
|
RUN strip /build/src/dragonxd /build/src/dragonx-cli /build/src/dragonx-tx
|
|
|
|
CMD ["/bin/bash"]
|