# manylinux2014-aarch64 is based on manylinux2014-x64 and the aarch64 toolchain installed. This allows to # run the container on a x86_64 host. # This image is not based on "pypa/manylinux2014_aarch64" because it would require the host to be aarch64. # For more details, read https://github.com/dockcross/dockcross/issues/367 FROM dockcross/manylinux2014-x64:20210708-94745ff LABEL maintainer="Matt McCormick matt.mccormick@kitware.com" # This is for 64-bit ARM Manylinux machine # Crosstool-ng version # Issues with crosstool-ng-1.24.0 and up : https://github.com/dockcross/dockcross/issues/367 ENV CT_VERSION crosstool-ng-1.23.0 #include "common-manylinux.crosstool" # The cross-compiling emulator RUN \ yum -y update && \ yum -y install \ qemu-user \ qemu-system-arm && \ yum clean all # The CROSS_TRIPLE is a configured alias of the "aarch64-unknown-linux-gnueabi" target. ENV CROSS_TRIPLE aarch64-unknown-linux-gnueabi RUN cd ${XCC_PREFIX}/${CROSS_TRIPLE}/${CROSS_TRIPLE}/include && \ wget https://gist.githubusercontent.com/nhatminhle/5181506/raw/541482dbc61862bba8a156edaae57faa2995d791/stdatomic.h # Running scripts to cross compile python and copy libstdc++ into toolcain ADD manylinux2014-aarch64/xc_script /tmp/ RUN PASS=2 /tmp/docker_setup_scrpits/copy_libstd.sh RUN /tmp/docker_setup_scrpits/prepare_cross_env.sh RUN rm -rf /tmp/docker_setup_scrpits RUN rm -rf /tmp/usr/ ENV CROSS_ROOT ${XCC_PREFIX}/${CROSS_TRIPLE} ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \ CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \ CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \ CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \ LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld \ FC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gfortran ENV QEMU_LD_PREFIX "${CROSS_ROOT}/${CROSS_TRIPLE}/sysroot" ENV QEMU_SET_ENV "LD_LIBRARY_PATH=${CROSS_ROOT}/lib:${QEMU_LD_PREFIX}" COPY manylinux2014-aarch64/Toolchain.cmake ${CROSS_ROOT}/ ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake ENV PKG_CONFIG_PATH /usr/lib/aarch64-linux-gnu/pkgconfig # Linux kernel cross compilation variables ENV PATH ${PATH}:${CROSS_ROOT}/bin ENV CROSS_COMPILE ${CROSS_TRIPLE}- ENV ARCH arm64 ENV AUDITWHEEL_ARCH aarch64 ENV AUDITWHEEL_PLAT manylinux2014_$AUDITWHEEL_ARCH # Build-time metadata as defined at http://label-schema.org ARG BUILD_DATE ARG IMAGE=dockcross/manylinux2014-aarch64 ARG VERSION=latest ARG VCS_REF ARG VCS_URL LABEL org.label-schema.build-date=$BUILD_DATE \ org.label-schema.name=$IMAGE \ org.label-schema.version=$VERSION \ org.label-schema.vcs-ref=$VCS_REF \ org.label-schema.vcs-url=$VCS_URL \ org.label-schema.schema-version="1.0" ENV DEFAULT_DOCKCROSS_IMAGE ${IMAGE}:${VERSION}