@@ -8,23 +8,33 @@ RUN apt-get update \
88 && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common pkg-config wget apt-transport-https ca-certificates \
99 && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
1010 && add-apt-repository "deb https://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" \
11- && DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-multilib g++-multilib \
11+ && add-apt-repository -y ppa:deadsnakes/ppa \
12+ && apt-get update \
13+ # python3 on x86 is required for cross compiling python :D
14+ && DEBIAN_FRONTEND=noninteractive apt-get install -y python3.11 \
15+ && DEBIAN_FRONTEND=noninteractive apt-get install -y libffi-dev binutils-multiarch binutils-aarch64-linux-gnu gcc-multilib g++-multilib \
16+ # llvm14-dev will install python 3.8 as bin/python3
1217 && DEBIAN_FRONTEND=noninteractive apt-get install -y llvm-14 clang-14 libclang-14-dev clang-14 \
1318 make cmake libsasl2-dev \
1419 libc6 libc6-dev libc6-arm64-cross libc6-dev-arm64-cross \
1520 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
1621 && apt-get autoremove -y \
1722 && rm -rf /var/lib/apt/lists/*;
1823
24+ # CLang
1925RUN update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 100
2026RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100
2127RUN update-alternatives --install /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-14 100
2228RUN update-alternatives --install /usr/bin/cc cc /usr/bin/clang-14 100
2329RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-14 100
30+ # Python
31+ RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1
32+ RUN update-alternatives --install /usr/bin/python3 python /usr/bin/python3.11 1
2433
2534# https://www.openssl.org/source/old/1.1.1/
2635ENV OPENSSL_VERSION=1.1.1q
2736ENV LIZB_VERSION=1.2.13
37+ ENV PYTHON_VERSION=3.11.3
2838
2939ENV ARCH=arm \
3040 MACHINE=armv8 \
@@ -35,6 +45,27 @@ ENV ARCH=arm \
3545 CPP=aarch64-linux-gnu-cpp \
3646 LD=aarch64-linux-gnu-ld
3747
48+ ENV PYO3_CROSS_PYTHON_VERSION=3.11 \
49+ PYO3_CROSS_INCLUDE_DIR=/usr/aarch64-linux-gnu/include \
50+ PYO3_CROSS_LIB_DIR=/usr/aarch64-linux-gnu/lib
51+
52+ RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz -O - | tar -xz && \
53+ cd Python-${PYTHON_VERSION} && \
54+ touch config.site-aarch64 && \
55+ echo "ac_cv_buggy_getaddrinfo=no" >> config.site-aarch64 && \
56+ echo "ac_cv_file__dev_ptmx=no" >> config.site-aarch64 && \
57+ echo "ac_cv_file__dev_ptc=no" >> config.site-aarch64 && \
58+ CONFIG_SITE=config.site-aarch64 ./configure \
59+ --enable-optimizations \
60+ --disable-ipv6 \
61+ --prefix=/usr/aarch64-linux-gnu \
62+ --build=aarch64-unknown-linux-gnu \
63+ --host=x86_64-linux-gnu \
64+ --with-build-python=/usr/bin/python3.11 && \
65+ make -j $(nproc) && \
66+ make install && \
67+ cd .. && rm -rf Python-${PYTHON_VERSION};
68+
3869RUN wget https://zlib.net/zlib-${LIZB_VERSION}.tar.gz -O - | tar -xz && \
3970 cd zlib-${LIZB_VERSION} && \
4071 ./configure --prefix=/usr/aarch64-linux-gnu && \
0 commit comments