1- # Based on top of ubuntu 16.04
1+ # Based on top of ubuntu 20.04
2+ # TODO: Migrate to https://github.com/cross-rs/cross/pkgs/container/aarch64-unknown-linux-gnu, when it will be released!
23# https://github.com/rust-embedded/cross/blob/master/docker/Dockerfile.aarch64-unknown-linux-gnu
3- FROM rustembedded /cross: aarch64-unknown-linux-gnu
4+ FROM cubejs /cross- aarch64-unknown-linux-gnu:31122022
45
56RUN apt-get update \
67 && apt-get -y upgrade \
78 && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common pkg-config wget apt-transport-https ca-certificates \
89 && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
9- && add-apt-repository "deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-12 main" \
10- && apt-get update \
10+ && add-apt-repository "deb https://apt.llvm.org/focal/ llvm-toolchain-focal-12 main" \
1111 && DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-multilib g++-multilib \
12- && DEBIAN_FRONTEND=noninteractive apt-get install -y llvm-12 clang-12 libclang-12-dev clang-12 make libssl-dev libsasl2-dev \
12+ && DEBIAN_FRONTEND=noninteractive apt-get install -y llvm-12 clang-12 libclang-12-dev clang-12 \
13+ make cmake libsasl2-dev \
1314 libc6 libc6-dev libc6-arm64-cross libc6-dev-arm64-cross \
1415 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
16+ && apt-get autoremove -y \
1517 && rm -rf /var/lib/apt/lists/*;
1618
1719RUN update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-12 100
1820RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 100
1921RUN update-alternatives --install /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-12 100
2022
2123# https://www.openssl.org/source/old/1.1.1/
22- ARG OPENSSL_VERSION=1.1.1l
23-
24- ENV MACHINE=armv8
25- ENV ARCH=arm
26- ENV CC=aarch64-linux-gnu-gcc
24+ ENV OPENSSL_VERSION=1.1.1l
25+ ENV LIZB_VERSION=1.2.13
26+
27+ ENV ARCH=arm \
28+ MACHINE=armv8 \
29+ AS=aarch64-linux-gnu-as \
30+ AR=aarch64-linux-gnu-ar \
31+ CC=aarch64-linux-gnu-gcc \
32+ CXX=aarch64-linux-gnu-g++ \
33+ CPP=aarch64-linux-gnu-cpp \
34+ LD=aarch64-linux-gnu-ld
35+
36+ RUN wget https://zlib.net/zlib-${LIZB_VERSION}.tar.gz -O - | tar -xz && \
37+ cd zlib-${LIZB_VERSION} && \
38+ ./configure --prefix=/usr/aarch64-linux-gnu && \
39+ make -j $(nproc) && \
40+ make install && \
41+ cd .. && rm -rf zlib-${LIZB_VERSION};
2742
2843RUN wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -O - | tar -xz &&\
2944 cd openssl-${OPENSSL_VERSION} && \
30- ./Configure --prefix=/openssl --openssldir=/openssl /lib linux-aarch64 && \
45+ ./Configure --prefix=/usr/aarch64-linux-gnu --openssldir=/usr/aarch64-linux-gnu /lib linux-aarch64 && \
3146 make depend && \
3247 make -j $(nproc) && \
3348 make install_sw && \
@@ -38,13 +53,11 @@ ENV PKG_CONFIG_ALLOW_CROSS=true
3853ENV PKG_CONFIG_ALL_STATIC=true
3954ENV RUSTFLAGS="-C target-feature=-crt-static"
4055
41- ENV OPENSSL_DIR=/openssl \
56+ ENV OPENSSL_DIR=/usr/aarch64-linux-gnu \
4257 OPENSSL_STATIC=yes \
43- OPENSSL_INCLUDE_DIR=/openssl/include \
44- OPENSSL_LIB_DIR=/openssl/lib
45-
46- ENV OPENSSL_ROOT_DIR=/openssl
47- ENV OPENSSL_LIBRARIES=/openssl/lib
48- ENV LIBZ_SYS_STATIC=1
58+ OPENSSL_INCLUDE_DIR=/usr/aarch64-linux-gnu/include \
59+ OPENSSL_LIB_DIR=/usr/aarch64-linux-gnu/lib \
60+ OPENSSL_LIBRARIES=/usr/aarch64-linux-gnu/lib \
61+ LIBZ_SYS_STATIC=1
4962
5063ENV PATH="/cargo/bin:$PATH"
0 commit comments