1- FROM ubuntu:16 .04
1+ FROM ubuntu:20 .04
22
33# The Rust toolchain to use when building our image
44ARG TOOLCHAIN=stable
55ARG TARGET=x86_64-unknown-linux-musl
66ARG OPENSSL_ARCH=linux-x86_64
7+ ARG RUST_MUSL_MAKE_VER=0.9.9
8+ ARG RUST_MUSL_MAKE_CONFIG=config.mak
79
10+ ENV DEBIAN_FRONTEND=noninteractive
811ENV RUST_MUSL_CROSS_TARGET=$TARGET
912
1013# Make sure we have basic dev tools for building C libraries. Our goal
@@ -26,15 +29,14 @@ RUN apt-get update && \
2629 apt-get clean && rm -rf /var/lib/apt/lists/*
2730
2831# Install cross-signed Let's Encrypt R3 CA certificate
29- ADD lets-encrypt-r3-cross-signed.crt /usr/local/share/ca-certificates
32+ COPY lets-encrypt-r3-cross-signed.crt /usr/local/share/ca-certificates
3033RUN update-ca-certificates
3134
32- ADD config.mak /tmp/config.mak
33- RUN cd /tmp && \
34- curl -Lsq -o musl-cross-make.zip https://github.com/richfelker/musl-cross-make/archive/v0.9.8.zip && \
35+ COPY $RUST_MUSL_MAKE_CONFIG /tmp/config.mak
36+ RUN cd /tmp && curl -Lsq -o musl-cross-make.zip https://github.com/richfelker/musl-cross-make/archive/v$RUST_MUSL_MAKE_VER.zip && \
3537 unzip -q musl-cross-make.zip && \
3638 rm musl-cross-make.zip && \
37- mv musl-cross-make-0.9.8 musl-cross-make && \
39+ mv musl-cross-make-$RUST_MUSL_MAKE_VER musl-cross-make && \
3840 cp /tmp/config.mak /tmp/musl-cross-make/config.mak && \
3941 cd /tmp/musl-cross-make && \
4042 TARGET=$TARGET make install -j 4 > /tmp/musl-cross-make.log && \
@@ -49,7 +51,8 @@ RUN mkdir -p /home/rust/libs /home/rust/src
4951ENV PATH=/root/.cargo/bin:/usr/local/musl/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
5052ENV TARGET_CC=$TARGET-gcc
5153ENV TARGET_CXX=$TARGET-g++
52- ENV TARGET_C_INCLUDE_PATH=/usr/local/musl/$TARGET/include/
54+ ENV TARGET_HOME=/usr/local/musl/$TARGET
55+ ENV TARGET_C_INCLUDE_PATH=$TARGET_HOME/include/
5356
5457# Install our Rust toolchain and the `musl` target. We patch the
5558# command-line we pass to the installer so that it won't attempt to
@@ -79,25 +82,29 @@ RUN export CC=$TARGET_CC && \
7982 echo "$CHECKSUM zlib-$VERS.tar.gz" > checksums.txt && \
8083 sha256sum -c checksums.txt && \
8184 tar xzf zlib-$VERS.tar.gz && cd zlib-$VERS && \
82- ./configure --static --archs="-fPIC" --prefix=/usr/local/musl/$TARGET && \
85+ ./configure --static --archs="-fPIC" --prefix=$TARGET_HOME && \
8386 make && sudo make install -j 4 && \
84- cd .. && rm -rf zlib-$VERS.tar.gz zlib-$VERS checksums.txt && \
87+ cd .. && rm -rf zlib-$VERS.tar.gz zlib-$VERS checksums.txt
88+
89+ RUN export CC=$TARGET_CC && \
90+ export C_INCLUDE_PATH=$TARGET_C_INCLUDE_PATH && \
91+ export LD=$TARGET-ld && \
8592 echo "Building OpenSSL" && \
86- VERS=1.0.2q && \
87- CHECKSUM=5744cfcbcec2b1b48629f7354203bc1e5e9b5466998bbccc5b5fcde3b18eb684 && \
93+ VERS=1.0.2u && \
94+ CHECKSUM=ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16 && \
8895 curl -sqO https://www.openssl.org/source/openssl-$VERS.tar.gz && \
8996 echo "$CHECKSUM openssl-$VERS.tar.gz" > checksums.txt && \
9097 sha256sum -c checksums.txt && \
9198 tar xzf openssl-$VERS.tar.gz && cd openssl-$VERS && \
92- ./Configure $OPENSSL_ARCH -fPIC --prefix=/usr/local/musl/$TARGET && \
99+ ./Configure $OPENSSL_ARCH -fPIC --prefix=$TARGET_HOME && \
93100 make depend && \
94- make && sudo make install -j 4 && \
101+ make && sudo make install && \
95102 cd .. && rm -rf openssl-$VERS.tar.gz openssl-$VERS checksums.txt
96103
97- ENV OPENSSL_DIR=/usr/local/musl/$TARGET / \
98- OPENSSL_INCLUDE_DIR=/usr/local/musl/$TARGET /include/ \
99- DEP_OPENSSL_INCLUDE=/usr/local/musl/$TARGET /include/ \
100- OPENSSL_LIB_DIR=/usr/local/musl/$TARGET /lib/ \
104+ ENV OPENSSL_DIR=$TARGET_HOME / \
105+ OPENSSL_INCLUDE_DIR=$TARGET_HOME /include/ \
106+ DEP_OPENSSL_INCLUDE=$TARGET_HOME /include/ \
107+ OPENSSL_LIB_DIR=$TARGET_HOME /lib/ \
101108 OPENSSL_STATIC=1
102109
103110# Remove docs and more stuff not needed in this images to make them smaller
0 commit comments