diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2e22705..516f2ec 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1236,6 +1236,29 @@ jobs: cpython: "yes", cpython_arg: "--host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu", } + # manylinux_2_34 aarch64 images + - { + image: "manylinux_2_34-aarch64", + multiarch: "", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-aarch64", + C: "no", + C_arg: "", + SQLite: "yes", + SQLite_arg: "", + llama_cpp: "no", + llama_cpp_arg: "", + fmt: "no", + fmt_arg: "", + raylib: "no", + raylib_arg: "", + cpython: "yes", + cpython_arg: "--host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu", + } # web-wasm images - { image: "web-wasm", diff --git a/Makefile b/Makefile index 50905e5..764854b 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ GEN_IMAGES := android-arm android-arm64 \ linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \ manylinux_2_28-x64 manylinux_2_34-x64 \ manylinux2014-x64 manylinux2014-x86 \ - manylinux2014-aarch64 manylinux_2_28-aarch64 linux-arm64-lts \ + manylinux2014-aarch64 manylinux_2_28-aarch64 manylinux_2_34-aarch64 linux-arm64-lts \ web-wasm web-wasi web-wasi-emulated-threads web-wasi-threads linux-mips linux-mips-uclibc linux-mips-lts windows-arm64 windows-armv7 \ windows-static-x86 windows-static-x64 windows-static-x64-posix \ windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \ @@ -71,11 +71,11 @@ GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES)) # These images are expected to have explicit rules for *both* build and testing NON_STANDARD_IMAGES := manylinux_2_28-x64 manylinux_2_34-x64 manylinux2014-x64 manylinux2014-x86 \ - manylinux2014-aarch64 manylinux_2_28-aarch64 web-wasm web-wasi-emulated-threads web-wasi-threads + manylinux2014-aarch64 manylinux_2_28-aarch64 manylinux_2_34-aarch64 web-wasm web-wasi-emulated-threads web-wasi-threads # Docker composite files -DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.buildroot \ - common.crosstool common.webassembly common.windows common-manylinux.crosstool common-manylinux_2_28.crosstool common.dockcross \ +DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.manylinux_2_34 common.buildroot \ + common.crosstool common.webassembly common.windows common-manylinux.crosstool common-manylinux_2_28.crosstool common-manylinux_2_34.crosstool common.dockcross \ common.label-and-env DOCKER_COMPOSITE_FOLDER_PATH = common/ DOCKER_COMPOSITE_PATH = $(addprefix $(DOCKER_COMPOSITE_FOLDER_PATH),$(DOCKER_COMPOSITE_SOURCES)) @@ -205,6 +205,26 @@ manylinux_2_28-aarch64.test: manylinux_2_28-aarch64 && chmod +x $(BIN)/dockcross-manylinux_2_28-aarch64 $(BIN)/dockcross-manylinux_2_28-aarch64 -i $(ORG)/manylinux_2_28-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py +# +# manylinux_2_34-aarch64 +# +manylinux_2_34-aarch64: manylinux_2_34-aarch64/Dockerfile manylinux_2_34-x64 + mkdir -p $@/imagefiles && cp -r imagefiles $@/ + $(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_34-aarch64:$(TAG) \ + $(TAG_FLAG) $(ORG)/manylinux_2_34-aarch64:latest \ + --build-arg IMAGE=$(ORG)/manylinux_2_34-aarch64 \ + --build-arg VERSION=$(TAG) \ + --build-arg VCS_REF=`git rev-parse --short HEAD` \ + --build-arg VCS_URL=`git config --get remote.origin.url` \ + --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ + -f manylinux_2_34-aarch64/Dockerfile . + rm -rf $@/imagefiles + +manylinux_2_34-aarch64.test: manylinux_2_34-aarch64 + $(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_34-aarch64:latest > $(BIN)/dockcross-manylinux_2_34-aarch64 \ + && chmod +x $(BIN)/dockcross-manylinux_2_34-aarch64 + $(BIN)/dockcross-manylinux_2_34-aarch64 -i $(ORG)/manylinux_2_34-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py + # # manylinux_2_28-x64 # diff --git a/README.md b/README.md index 43610a6..b42cc0f 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ The dockcross script will execute the given command-line inside the container, a | dockcross/manylinux_2_28-x64 | x86_64 | GCC | Linux | | dockcross/manylinux_2_28-aarch64 | aarch64 | GCC | Linux | | dockcross/manylinux_2_34-x64 | x86_64 | GCC | Linux | +| dockcross/manylinux_2_34-aarch64 | ARMv8 | GCC | Linux | | dockcross/manylinux2014-x86 | x86 | GCC | Linux | | dockcross/manylinux2014-x64 | x86_64 | GCC | Linux | | dockcross/linux-i686 | x86 | GCC | Linux | @@ -398,6 +399,12 @@ Docker [manylinux_2_28](https://github.com/pypa/manylinux) image for building Li Docker [manylinux_2_34](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.8.10+, 3.9.5+, 3.10.0+. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_34** to \"TRUE\" in the toolchain. +### dockcross/manylinux_2_34-aarch64 + +![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux_2_34-aarch64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux_2_34-aarch64) + +Docker [manylinux_2_34](https://github.com/pypa/manylinux) image for building Linux aarch64 / arm64 [Python wheel packages](http://pythonwheels.com/). It includes CPython 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t (free-threaded) and PyPy 3.10. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_34** to "TRUE" in the toolchain. This image is designed to run on x86_64 hosts and cross-compile for aarch64 targets using QEMU emulation. + ### dockcross/manylinux2014-x64 ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux2014-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux2014-x64) diff --git a/common/common-manylinux_2_34.crosstool b/common/common-manylinux_2_34.crosstool new file mode 100644 index 0000000..728c6ec --- /dev/null +++ b/common/common-manylinux_2_34.crosstool @@ -0,0 +1,76 @@ +# crosstool.common-manylinux_2_34 +# +# Common Docker instructions to install "crosstool-ng" and build a full +# cross-compiler suite from a crosstool-ng configuration, CROSSTOOL_CONFIG. +# +# This import complements the "dockcross/base" image, adding: +# - "ct-ng", a cross-compiler building utilty. +# - A cross-compiler suite configured in "crosstool-ng.config". +# +# The generated cross-compiler will have a CROSS_ROOT of: +# ${XCC_PREFIX}/${CROSS_TRIPLE} +# +# A given platform will need to supply the appropriate "crosstool-ng.config" to +# generate its cross-compiler. This can be built using "ct-ng menuconfig" to +# generate a configuration. + +ENV MANYLINUX_DEPS="glibc-devel glibc-devel.i686 libstdc++-devel glib2-devel libX11-devel libXext-devel libXrender-devel mesa-libGL-devel libICE-devel libSM-devel" + +ENV PYTHON_COMPILE_DEPS="python-devel zlib-devel bzip2-devel expat-devel ncurses-devel readline-devel tk-devel gdbm-devel libdb-devel libpcap-devel xz-devel openssl-devel keyutils-libs-devel krb5-devel libcom_err-devel libidn-devel curl-devel perl-devel" + +ENV TOOLCHAIN_DEPS="gcc-toolset-14-binutils gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-gfortran" + +# Install dependent packages required for `ct-ng`. +RUN \ + dnf -y update && \ + dnf -y install \ + gawk \ + gperf \ + help2man \ + texinfo \ + flex \ + ncurses-devel \ + glibc-static \ + rsync \ + systemtap-devel \ + systemtap-sdt-devel \ + ${TOOLCHAIN_DEPS} \ + ${PYTHON_COMPILE_DEPS} \ + ${MANYLINUX_DEPS} && \ + dnf clean all + +ENV XCC_PREFIX=/usr/xcc + +# Add the crosstool-ng script and image-specific toolchain configuration into +# /dockcross/. +# +# Afterwards, we will leave the "ct-ng" config in the image as a reference +# for users. +COPY \ + imagefiles/install-crosstool-ng-toolchain.sh \ + imagefiles/patch/crosstool-ng/crosstool-ng-zlib-target.patch \ + manylinux_2_34-aarch64/crosstool-ng.config \ + /dockcross/ + +# Copy sys/sdt.h to a clean include directory to avoid pulling in all of +# /usr/include (which causes __float128 conflicts on AlmaLinux 9 when +# cross-compiling for aarch64). +RUN mkdir -p /opt/ct-ng-includes/sys && \ + cp /usr/include/sys/sdt.h /opt/ct-ng-includes/sys/ && \ + cp /usr/include/sys/sdt-config.h /opt/ct-ng-includes/sys/ + +# Build and install the toolchain, cleaning up artifacts afterwards. +RUN \ + mkdir /dockcross/crosstool && \ + cd /dockcross/crosstool && \ + /dockcross/install-crosstool-ng-toolchain.sh \ + -p "${XCC_PREFIX}" \ + -c /dockcross/crosstool-ng.config \ + -v "${CT_VERSION}" && \ + rm -rf /dockcross/crosstool /dockcross/install-crosstool-ng-toolchain.sh && \ + # Remove sudo provided by gcc-toolset since it doesn't work with + # our sudo wrapper calling gosu. + rm -f /opt/rh/gcc-toolset-14/root/usr/bin/sudo + +# Restore our default workdir (from "dockcross/base"). +WORKDIR /work diff --git a/common/common.manylinux_2_34 b/common/common.manylinux_2_34 index d55b32c..c804504 100644 --- a/common/common.manylinux_2_34 +++ b/common/common.manylinux_2_34 @@ -10,6 +10,11 @@ RUN \ wget \ nasm \ zip \ + perl-FindBin \ + perl-File-Compare \ + perl-File-Copy \ + perl-IPC-Cmd \ + perl-Time-Piece \ && \ yum clean all diff --git a/imagefiles/build-and-install-git.sh b/imagefiles/build-and-install-git.sh index 4d95f46..ec93a9b 100755 --- a/imagefiles/build-and-install-git.sh +++ b/imagefiles/build-and-install-git.sh @@ -33,8 +33,8 @@ tar xvzf "${GIT_ROOT}.tar.gz" --no-same-owner pushd "${GIT_ROOT}" ./configure --prefix=/usr/local --with-curl -make -j"$(nproc)" -make install +make -j"$(nproc)" NO_GETTEXT=YesPlease +make NO_GETTEXT=YesPlease install popd rm -rf "${GIT_ROOT}" "${GIT_ROOT}.tar.gz" diff --git a/manylinux_2_34-aarch64/Dockerfile.in b/manylinux_2_34-aarch64/Dockerfile.in new file mode 100644 index 0000000..dff80d2 --- /dev/null +++ b/manylinux_2_34-aarch64/Dockerfile.in @@ -0,0 +1,61 @@ +# manylinux_2_34-aarch64 is based on manylinux_2_34-x64 and the aarch64 toolchain installed. This allows to +# run the container on a x86_64 host. +# This image is not based on "pypa/manylinux_2_34_aarch64" because it would require the host to be aarch64. +# For more details, read https://github.com/dockcross/dockcross/issues/367 +ARG ORG=dockcross +FROM ${ORG}/manylinux_2_34-x64:latest + +LABEL maintainer="Matt McCormick matt@mmmccormick.com" + +# This is for 64-bit ARM Manylinux machine + +# Crosstool-ng version +ENV CT_VERSION=crosstool-ng-1.27.0 + +#include "common-manylinux_2_34.crosstool" + +# The cross-compiling emulator +# AlmaLinux 9 doesn't package qemu-user-static, so we download from multiarch/qemu-user-static +ARG QEMU_VERSION=v7.2.0-1 +RUN \ + curl -L -o /usr/bin/qemu-aarch64-static \ + https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-aarch64-static && \ + chmod +x /usr/bin/qemu-aarch64-static + +# The CROSS_TRIPLE is a configured alias of the "aarch64-unknown-linux-gnu" target. +ENV CROSS_TRIPLE=aarch64-unknown-linux-gnu +ENV CROSS_ROOT=${XCC_PREFIX}/${CROSS_TRIPLE} +ENV PATH=${PATH}:${CROSS_ROOT}/bin + +# Running scripts to cross compile python +ADD manylinux_2_34-aarch64/xc_script /tmp/ +RUN /tmp/docker_setup_scripts/prepare_cross_env.sh +RUN rm -rf /tmp/docker_setup_scripts +RUN rm -rf /tmp/usr/ + +ENV AS=${CROSS_TRIPLE}-as \ + AR=${CROSS_TRIPLE}-ar \ + CC=${CROSS_TRIPLE}-gcc \ + CPP=${CROSS_TRIPLE}-cpp \ + CXX=${CROSS_TRIPLE}-g++ \ + LD=${CROSS_TRIPLE}-ld \ + FC=${CROSS_TRIPLE}-gfortran \ + STRIP=${CROSS_TRIPLE}-strip \ + OBJCOPY=${CROSS_TRIPLE}-objcopy + +ENV QEMU_LD_PREFIX="${CROSS_ROOT}/${CROSS_TRIPLE}/sysroot" +ENV QEMU_SET_ENV="LD_LIBRARY_PATH=${CROSS_ROOT}/lib:${QEMU_LD_PREFIX}" + +COPY manylinux_2_34-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 CROSS_COMPILE=${CROSS_TRIPLE}- +ENV ARCH=arm64 + +ENV AUDITWHEEL_ARCH=aarch64 +ENV AUDITWHEEL_PLAT=manylinux_2_34_$AUDITWHEEL_ARCH + +#include "common.label-and-env" diff --git a/manylinux_2_34-aarch64/Toolchain.cmake b/manylinux_2_34-aarch64/Toolchain.cmake new file mode 100644 index 0000000..bbacc10 --- /dev/null +++ b/manylinux_2_34-aarch64/Toolchain.cmake @@ -0,0 +1,21 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR aarch64) +set(MANYLINUX_2_34 TRUE) + +set(cross_triple "aarch64-unknown-linux-gnu") +set(cross_root /usr/xcc/${cross_triple}) + +set(CMAKE_C_COMPILER $ENV{CC}) +set(CMAKE_CXX_COMPILER $ENV{CXX}) +set(CMAKE_Fortran_COMPILER $ENV{FC}) + +set(CMAKE_CXX_FLAGS "-I ${cross_root}/include/") + +list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH} ${cross_root} ${cross_root}/${cross_triple}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_SYSROOT ${cross_root}/${cross_triple}/sysroot) + +set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-aarch64-static) diff --git a/manylinux_2_34-aarch64/crosstool-ng.config b/manylinux_2_34-aarch64/crosstool-ng.config new file mode 100644 index 0000000..8af2642 --- /dev/null +++ b/manylinux_2_34-aarch64/crosstool-ng.config @@ -0,0 +1,914 @@ +# +# Automatically generated file; DO NOT EDIT. +# crosstool-NG 1.27.0 Configuration +# +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_cxx11=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_ninja=y +CT_CONFIGURE_has_rsync=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_make_4_0_or_newer=y +CT_CONFIGURE_has_libtool_2_4_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_65_or_newer=y +CT_CONFIGURE_has_autoreconf_2_65_or_newer=y +CT_CONFIGURE_has_automake_1_15_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_python_3_4_or_newer=y +CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_python=y +CT_CONFIGURE_has_git=y +CT_CONFIGURE_has_md5sum=y +CT_CONFIGURE_has_sha1sum=y +CT_CONFIGURE_has_sha256sum=y +CT_CONFIGURE_has_sha512sum=y +CT_CONFIGURE_has_install_with_strip_program=y +CT_VERSION="1.27.0" +CT_VCHECK="" +CT_CONFIG_VERSION_ENV="4" +CT_CONFIG_VERSION_CURRENT="4" +CT_CONFIG_VERSION="4" +CT_MODULES=y + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +# CT_EXPERIMENTAL is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +# CT_TARBALLS_BUILDROOT_LAYOUT is not set +CT_WORK_DIR="${CT_TOP_DIR}/.build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" +CT_PREFIX_DIR="${CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_RM_RF_PREFIX_DIR=y +CT_REMOVE_DOCS=y +CT_INSTALL_LICENSES=y +CT_PREFIX_DIR_RO=y +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +# CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES is not set + +# +# Downloading +# +CT_DOWNLOAD_AGENT_WGET=y +# CT_DOWNLOAD_AGENT_CURL is not set +# CT_DOWNLOAD_AGENT_NONE is not set +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_CONNECT_TIMEOUT=10 +CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary" +# CT_ONLY_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_VERIFY_DOWNLOAD_DIGEST=y +CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y +# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set +CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512" +# CT_VERIFY_DOWNLOAD_SIGNATURE is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERRIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set +CT_PATCH_BUNDLED=y +# CT_PATCH_BUNDLED_LOCAL is not set +CT_PATCH_ORDER="bundled" + +# +# Build behavior +# +CT_PARALLEL_JOBS=0 +CT_LOAD="" +CT_USE_PIPES=y +CT_EXTRA_CFLAGS_FOR_BUILD="" +CT_EXTRA_CXXFLAGS_FOR_BUILD="" +CT_EXTRA_LDFLAGS_FOR_BUILD="" +CT_EXTRA_CFLAGS_FOR_HOST="" +CT_EXTRA_LDFLAGS_FOR_HOST="" +# CT_CONFIG_SHELL_SH is not set +# CT_CONFIG_SHELL_ASH is not set +CT_CONFIG_SHELL_BASH=y +# CT_CONFIG_SHELL_CUSTOM is not set +CT_CONFIG_SHELL="${bash}" + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +CT_LOG_EXTRA=y +# CT_LOG_ALL is not set +# CT_LOG_DEBUG is not set +CT_LOG_LEVEL_MAX="EXTRA" +# CT_LOG_SEE_TOOLS_WARN is not set +CT_LOG_PROGRESS_BAR=n +CT_LOG_TO_FILE=y +CT_LOG_FILE_COMPRESS=y +# end of Paths and misc options + +# +# Target options +# +# CT_ARCH_ALPHA is not set +# CT_ARCH_ARC is not set +CT_ARCH_ARM=y +# CT_ARCH_AVR is not set +# CT_ARCH_M68K is not set +# CT_ARCH_MIPS is not set +# CT_ARCH_NIOS2 is not set +# CT_ARCH_POWERPC is not set +# CT_ARCH_PRU is not set +# CT_ARCH_S390 is not set +# CT_ARCH_SH is not set +# CT_ARCH_SPARC is not set +# CT_ARCH_X86 is not set +# CT_ARCH_XTENSA is not set +CT_ARCH="arm" +CT_ARCH_CHOICE_KSYM="ARM" +CT_ARCH_CPU="" +CT_ARCH_TUNE="" +CT_ARCH_ARM_SHOW=y + +# +# Options for arm +# +CT_ARCH_ARM_PKG_KSYM="" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR C6X M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" +CT_ARCH_SUFFIX="" +# CT_OMIT_TARGET_VENDOR is not set + +# +# Generic target options +# +# CT_MULTILIB is not set +CT_DEMULTILIB=y +CT_ARCH_SUPPORTS_BOTH_MMU=y +CT_ARCH_DEFAULT_HAS_MMU=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_FLAT_FORMAT=y +CT_ARCH_SUPPORTS_EITHER_ENDIAN=y +CT_ARCH_DEFAULT_LE=y +# CT_ARCH_BE is not set +CT_ARCH_LE=y +CT_ARCH_ENDIAN="little" +CT_ARCH_SUPPORTS_32=y +CT_ARCH_SUPPORTS_64=y +CT_ARCH_DEFAULT_32=y +CT_ARCH_BITNESS=64 +# CT_ARCH_32 is not set +CT_ARCH_64=y + +# +# Target optimisations +# +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_CPU=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_EXCLUSIVE_WITH_CPU=y +CT_ARCH_ARCH="" +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" +# end of Target options + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_FORCE_SYSROOT=y +CT_USE_SYSROOT=y +CT_SYSROOT_NAME="sysroot" +CT_SYSROOT_DIR_PREFIX="" +CT_WANTS_STATIC_LINK=y +CT_WANTS_STATIC_LINK_CXX=y +# CT_STATIC_TOOLCHAIN is not set +CT_SHOW_CT_VERSION=y +CT_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +CT_CROSS=y +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Misc options +# +# CT_TOOLCHAIN_ENABLE_NLS is not set +# end of Toolchain options + +# +# Operating System +# +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +# CT_KERNEL_BARE_METAL is not set +CT_KERNEL_LINUX=y +CT_KERNEL="linux" +CT_KERNEL_CHOICE_KSYM="LINUX" +CT_KERNEL_LINUX_SHOW=y + +# +# Options for linux +# +CT_KERNEL_LINUX_PKG_KSYM="LINUX" +CT_LINUX_DIR_NAME="linux" +CT_LINUX_USE_WWW_KERNEL_ORG=y +# CT_LINUX_USE_ORACLE is not set +CT_LINUX_USE="LINUX" +CT_LINUX_PKG_NAME="linux" +CT_LINUX_SRC_RELEASE=y +# CT_LINUX_SRC_DEVEL is not set +CT_LINUX_PATCH_ORDER="global" +# CT_LINUX_V_5_16 is not set +# CT_LINUX_V_5_15 is not set +CT_LINUX_V_5_14=y +# CT_LINUX_V_5_13 is not set +# CT_LINUX_V_5_12 is not set +# CT_LINUX_V_5_11 is not set +# CT_LINUX_V_5_10 is not set +# CT_LINUX_V_5_9 is not set +# CT_LINUX_V_5_8 is not set +# CT_LINUX_V_5_7 is not set +# CT_LINUX_V_5_4 is not set +# CT_LINUX_V_5_3 is not set +# CT_LINUX_V_5_2 is not set +# CT_LINUX_V_5_1 is not set +# CT_LINUX_V_5_0 is not set +# CT_LINUX_V_4_20 is not set +# CT_LINUX_V_4_19 is not set +# CT_LINUX_V_4_18 is not set +# CT_LINUX_V_4_17 is not set +# CT_LINUX_V_4_16 is not set +# CT_LINUX_V_4_15 is not set +# CT_LINUX_V_4_14 is not set +# CT_LINUX_V_4_13 is not set +# CT_LINUX_V_4_12 is not set +# CT_LINUX_V_4_11 is not set +# CT_LINUX_V_4_10 is not set +# CT_LINUX_V_4_9 is not set +# CT_LINUX_V_4_4 is not set +# CT_LINUX_V_4_1 is not set +# CT_LINUX_V_3_16 is not set +# CT_LINUX_V_3_13 is not set +# CT_LINUX_V_3_12 is not set +# CT_LINUX_V_3_10 is not set +CT_LINUX_VERSION="5.14.18" +CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})" +CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign" +CT_LINUX_later_than_5_12=y +CT_LINUX_5_12_or_later=y +CT_LINUX_later_than_5_3=y +CT_LINUX_5_3_or_later=y +CT_LINUX_later_than_4_8=y +CT_LINUX_4_8_or_later=y +CT_LINUX_later_than_3_7=y +CT_LINUX_3_7_or_later=y +CT_LINUX_REQUIRE_3_7_or_later=y +CT_LINUX_later_than_3_2=y +CT_LINUX_3_2_or_later=y +CT_KERNEL_DEP_RSYNC=y +CT_KERNEL_LINUX_VERBOSITY_0=y +# CT_KERNEL_LINUX_VERBOSITY_1 is not set +# CT_KERNEL_LINUX_VERBOSITY_2 is not set +CT_KERNEL_LINUX_VERBOSE_LEVEL=0 +CT_KERNEL_LINUX_INSTALL_CHECK=y +CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS" + +# +# Common kernel options +# +CT_SHARED_LIBS=y +# end of Operating System + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS_BINUTILS=y +CT_BINUTILS="binutils" +CT_BINUTILS_CHOICE_KSYM="BINUTILS" +CT_BINUTILS_BINUTILS_SHOW=y + +# +# Options for binutils +# +CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS" +CT_BINUTILS_DIR_NAME="binutils" +CT_BINUTILS_USE_GNU=y +# CT_BINUTILS_USE_ORACLE is not set +CT_BINUTILS_USE="BINUTILS" +CT_BINUTILS_PKG_NAME="binutils" +CT_BINUTILS_SRC_RELEASE=y +# CT_BINUTILS_SRC_DEVEL is not set +CT_BINUTILS_PATCH_ORDER="global" +CT_BINUTILS_V_2_37=y +# CT_BINUTILS_V_2_36 is not set +# CT_BINUTILS_V_2_35 is not set +# CT_BINUTILS_V_2_34 is not set +# CT_BINUTILS_V_2_33 is not set +# CT_BINUTILS_V_2_32 is not set +# CT_BINUTILS_V_2_31 is not set +# CT_BINUTILS_V_2_30 is not set +# CT_BINUTILS_V_2_29 is not set +# CT_BINUTILS_V_2_28 is not set +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +CT_BINUTILS_VERSION="2.37" +CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" +CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_30=y +CT_BINUTILS_2_30_or_later=y +CT_BINUTILS_later_than_2_27=y +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_later_than_2_26=y +CT_BINUTILS_2_26_or_later=y + +# +# GNU binutils +# +CT_BINUTILS_GOLD_SUPPORTS_ARCH=y +CT_BINUTILS_GOLD_SUPPORT=y +CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y +# CT_BINUTILS_LINKER_LD is not set +CT_BINUTILS_LINKER_LD_GOLD=y +CT_BINUTILS_GOLD_INSTALLED=y +CT_BINUTILS_GOLD_THREADS=y +CT_BINUTILS_LINKER_BOTH=y +CT_BINUTILS_LINKERS_LIST="ld,gold" +CT_BINUTILS_LD_WRAPPER=y +CT_BINUTILS_LINKER_DEFAULT="bfd" +CT_BINUTILS_PLUGINS=y +CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +# CT_BINUTILS_FOR_TARGET is not set +CT_ALL_BINUTILS_CHOICES="BINUTILS" +# end of Binary utilities + +# +# C-library +# +CT_LIBC_GLIBC=y +# CT_LIBC_UCLIBC_NG is not set +CT_LIBC="glibc" +CT_LIBC_CHOICE_KSYM="GLIBC" +CT_THREADS="nptl" +CT_LIBC_GLIBC_SHOW=y + +# +# Options for glibc +# +CT_LIBC_GLIBC_PKG_KSYM="GLIBC" +CT_GLIBC_DIR_NAME="glibc" +CT_GLIBC_USE_GNU=y +# CT_GLIBC_USE_ORACLE is not set +CT_GLIBC_USE="GLIBC" +CT_GLIBC_PKG_NAME="glibc" +CT_GLIBC_SRC_RELEASE=y +# CT_GLIBC_SRC_DEVEL is not set +CT_GLIBC_PATCH_ORDER="global" +# CT_GLIBC_V_2_35 is not set +CT_GLIBC_V_2_34=y +# CT_GLIBC_V_2_33 is not set +# CT_GLIBC_V_2_32 is not set +# CT_GLIBC_V_2_31 is not set +# CT_GLIBC_V_2_30 is not set +# CT_GLIBC_V_2_29 is not set +# CT_GLIBC_V_2_28 is not set +# CT_GLIBC_V_2_27 is not set +# CT_GLIBC_V_2_26 is not set +# CT_GLIBC_V_2_25 is not set +# CT_GLIBC_V_2_24 is not set +# CT_GLIBC_V_2_23 is not set +# CT_GLIBC_V_2_19 is not set +# CT_GLIBC_V_2_17 is not set +CT_GLIBC_VERSION="2.34" +CT_GLIBC_MIRRORS="$(CT_Mirrors GNU glibc)" +CT_GLIBC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GLIBC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GLIBC_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_GLIBC_SIGNATURE_FORMAT="packed/.sig" +CT_GLIBC_2_34_or_later=y +CT_GLIBC_2_34_or_older=y +CT_GLIBC_later_than_2_32=y +CT_GLIBC_2_32_or_later=y +CT_GLIBC_later_than_2_31=y +CT_GLIBC_2_31_or_later=y +CT_GLIBC_later_than_2_30=y +CT_GLIBC_2_30_or_later=y +CT_GLIBC_later_than_2_29=y +CT_GLIBC_2_29_or_later=y +CT_GLIBC_REQUIRE_2_29_or_later=y +CT_GLIBC_later_than_2_28=y +CT_GLIBC_2_28_or_later=y +CT_GLIBC_later_than_2_27=y +CT_GLIBC_2_27_or_later=y +CT_GLIBC_later_than_2_26=y +CT_GLIBC_2_26_or_later=y +CT_GLIBC_later_than_2_25=y +CT_GLIBC_2_25_or_later=y +CT_GLIBC_later_than_2_24=y +CT_GLIBC_2_24_or_later=y +CT_GLIBC_later_than_2_23=y +CT_GLIBC_2_23_or_later=y +CT_GLIBC_later_than_2_20=y +CT_GLIBC_2_20_or_later=y +CT_GLIBC_later_than_2_17=y +CT_GLIBC_2_17_or_later=y +CT_GLIBC_later_than_2_14=y +CT_GLIBC_2_14_or_later=y +CT_GLIBC_DEP_KERNEL_HEADERS_VERSION=y +CT_GLIBC_DEP_BINUTILS=y +CT_GLIBC_DEP_GCC=y +CT_GLIBC_DEP_PYTHON=y +CT_GLIBC_BUILD_SSP=y +CT_GLIBC_HAS_LIBIDN_ADDON=y +# CT_GLIBC_USE_LIBIDN_ADDON is not set +CT_GLIBC_NO_SPARC_V8=y +CT_GLIBC_EXTRA_CONFIG_ARRAY="" +CT_GLIBC_CONFIGPARMS="" +CT_GLIBC_EXTRA_CFLAGS="" +# CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set +# CT_GLIBC_DISABLE_VERSIONING is not set +CT_GLIBC_OLDEST_ABI="" +CT_GLIBC_FORCE_UNWIND=y +# CT_GLIBC_LOCALES is not set +# CT_GLIBC_KERNEL_VERSION_NONE is not set +# CT_GLIBC_KERNEL_VERSION_AS_HEADERS is not set +CT_GLIBC_KERNEL_VERSION_CHOSEN=y +CT_GLIBC_MIN_KERNEL_VERSION="5.4.0" +CT_GLIBC_MIN_KERNEL="5.4.0" +CT_GLIBC_SSP_DEFAULT=y +# CT_GLIBC_SSP_NO is not set +# CT_GLIBC_SSP_YES is not set +# CT_GLIBC_SSP_ALL is not set +# CT_GLIBC_SSP_STRONG is not set +# CT_GLIBC_ENABLE_WERROR is not set +# CT_GLIBC_ENABLE_COMMON_FLAG is not set +CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE UCLIBC_NG" +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y + +# +# Common C library options +# +CT_THREADS_NATIVE=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y +# end of C-library + +# +# C compiler +# +CT_CC_CORE_NEEDED=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y +CT_CC_GCC=y +CT_CC="gcc" +CT_CC_CHOICE_KSYM="GCC" +CT_CC_GCC_SHOW=y + +# +# Options for gcc +# +CT_CC_GCC_PKG_KSYM="GCC" +CT_GCC_DIR_NAME="gcc" +CT_GCC_USE_GNU=y +CT_GCC_USE="GCC" +CT_GCC_PKG_NAME="gcc" +CT_GCC_SRC_RELEASE=y +# CT_GCC_SRC_DEVEL is not set +CT_GCC_PATCH_ORDER="global" +CT_GCC_V_14=y +# CT_GCC_V_13 is not set +# CT_GCC_V_12 is not set +# CT_GCC_V_11 is not set +# CT_GCC_V_10 is not set +# CT_GCC_V_9 is not set +# CT_GCC_V_8 is not set +CT_GCC_VERSION="14.2.0" +CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" +CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_later_than_14=y +CT_GCC_14_or_later=y +CT_GCC_later_than_13=y +CT_GCC_13_or_later=y +CT_GCC_later_than_12=y +CT_GCC_12_or_later=y +CT_GCC_later_than_11=y +CT_GCC_11_or_later=y +CT_GCC_later_than_10=y +CT_GCC_10_or_later=y +CT_GCC_later_than_9=y +CT_GCC_9_or_later=y +CT_GCC_later_than_8=y +CT_GCC_8_or_later=y +CT_GCC_later_than_7=y +CT_GCC_7_or_later=y +CT_GCC_later_than_6=y +CT_GCC_6_or_later=y +CT_GCC_later_than_5=y +CT_GCC_5_or_later=y +CT_GCC_later_than_4_9=y +CT_GCC_4_9_or_later=y +CT_CC_GCC_ENABLE_PLUGINS=y +CT_CC_GCC_GOLD=y +CT_CC_GCC_HAS_LIBMPX=y +CT_CC_GCC_ENABLE_CXX_FLAGS="-I/opt/ct-ng-includes -fpermissive" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--disable-gcov" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="" +CT_CC_GCC_STATIC_LIBSTDCXX=y +CT_CC_GCC_SYSTEM_ZLIB=y +CT_CC_GCC_CONFIG_TLS=m + +# +# Optimisation features +# +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y +CT_CC_GCC_LTO_ZSTD=m + +# +# Settings for libraries running on target +# +CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y +# CT_CC_GCC_LIBMUDFLAP is not set +CT_CC_GCC_LIBGOMP=y +# CT_CC_GCC_LIBSSP is not set +# CT_CC_GCC_LIBQUADMATH is not set +# CT_CC_GCC_LIBSANITIZER is not set + +# +# Misc. obscure options. +# +CT_CC_CXA_ATEXIT=y +CT_CC_GCC_TM_CLONE_REGISTRY=m +# CT_CC_GCC_DISABLE_PCH is not set +CT_CC_GCC_SJLJ_EXCEPTIONS=m +CT_CC_GCC_LDBL_128=m +CT_CC_GCC_BUILD_ID=y +CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y +# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set +# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set +# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set +CT_CC_GCC_LNK_HASH_STYLE="" +CT_CC_GCC_DEC_FLOATS_AUTO=y +# CT_CC_GCC_DEC_FLOATS_BID is not set +# CT_CC_GCC_DEC_FLOATS_DPD is not set +# CT_CC_GCC_DEC_FLOATS_NO is not set +CT_CC_GCC_DEC_FLOATS="" +CT_ALL_CC_CHOICES="GCC" + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +CT_CC_LANG_FORTRAN=y +# end of C compiler + +# +# Debug facilities +# +# CT_DEBUG_DUMA is not set +CT_DEBUG_GDB=y +CT_DEBUG_GDB_PKG_KSYM="GDB" +CT_GDB_DIR_NAME="gdb" +CT_GDB_PKG_NAME="gdb" +CT_GDB_SRC_RELEASE=y +# CT_GDB_SRC_DEVEL is not set +CT_GDB_PATCH_ORDER="global" +CT_GDB_V_12=y +# CT_GDB_V_11 is not set +# CT_GDB_V_10 is not set +# CT_GDB_V_9 is not set +# CT_GDB_V_8_3 is not set +CT_GDB_VERSION="12.1" +CT_GDB_MIRRORS="$(CT_Mirrors GNU gdb) $(CT_Mirrors sourceware gdb/releases)" +CT_GDB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GDB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GDB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GDB_SIGNATURE_FORMAT="" +CT_GDB_later_than_12=y +CT_GDB_12_or_later=y +CT_GDB_later_than_11=y +CT_GDB_11_or_later=y +CT_GDB_later_than_10=y +CT_GDB_10_or_later=y +CT_GDB_GDBSERVER_TOPLEVEL=y +CT_GDB_later_than_8_3=y +CT_GDB_8_3_or_later=y +CT_GDB_later_than_8_0=y +CT_GDB_8_0_or_later=y +CT_GDB_later_than_7_12=y +CT_GDB_7_12_or_later=y +CT_GDB_later_than_7_11=y +CT_GDB_7_11_or_later=y +CT_GDB_CROSS=y +# CT_GDB_CROSS_STATIC is not set +# CT_GDB_CROSS_SIM is not set +# CT_GDB_CROSS_PYTHON is not set +CT_GDB_CROSS_EXTRA_CONFIG_ARRAY="" +# CT_GDB_NATIVE is not set +CT_GDB_GDBSERVER=y +# CT_GDB_NATIVE_BUILD_IPA_LIB is not set +# CT_GDB_NATIVE_STATIC_LIBSTDCXX is not set +# CT_DEBUG_LTRACE is not set +# CT_DEBUG_STRACE is not set +CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE" +# end of Debug facilities + +# +# Companion libraries +# +# CT_COMPLIBS_CHECK is not set +# CT_COMP_LIBS_CLOOG is not set +CT_COMP_LIBS_EXPAT=y +CT_COMP_LIBS_EXPAT_PKG_KSYM="EXPAT" +CT_EXPAT_DIR_NAME="expat" +CT_EXPAT_PKG_NAME="expat" +CT_EXPAT_SRC_RELEASE=y +# CT_EXPAT_SRC_DEVEL is not set +CT_EXPAT_PATCH_ORDER="global" +CT_EXPAT_V_2_4=y +CT_EXPAT_VERSION="2.4.1" +CT_EXPAT_MIRRORS="http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION} https://github.com/libexpat/libexpat/releases/download/R_${CT_EXPAT_VERSION//./_}" +CT_EXPAT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_EXPAT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_EXPAT_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2 .tar.gz" +CT_EXPAT_SIGNATURE_FORMAT="" +CT_COMP_LIBS_GETTEXT=y +CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT" +CT_GETTEXT_DIR_NAME="gettext" +CT_GETTEXT_PKG_NAME="gettext" +CT_GETTEXT_SRC_RELEASE=y +# CT_GETTEXT_SRC_DEVEL is not set +CT_GETTEXT_PATCH_ORDER="global" +# CT_GETTEXT_V_0_21 is not set +CT_GETTEXT_V_0_20_1=y +# CT_GETTEXT_V_0_19_8_1 is not set +CT_GETTEXT_VERSION="0.20.1" +CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)" +CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.gz" +CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" +CT_GETTEXT_0_21_or_older=y +CT_GETTEXT_older_than_0_21=y +CT_COMP_LIBS_GMP=y +CT_COMP_LIBS_GMP_PKG_KSYM="GMP" +CT_GMP_DIR_NAME="gmp" +CT_GMP_PKG_NAME="gmp" +CT_GMP_SRC_RELEASE=y +# CT_GMP_SRC_DEVEL is not set +CT_GMP_PATCH_ORDER="global" +CT_GMP_V_6_2=y +# CT_GMP_V_6_1 is not set +CT_GMP_VERSION="6.2.1" +CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)" +CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" +CT_GMP_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_ISL=y +CT_COMP_LIBS_ISL_PKG_KSYM="ISL" +CT_ISL_DIR_NAME="isl" +CT_ISL_PKG_NAME="isl" +CT_ISL_SRC_RELEASE=y +# CT_ISL_SRC_DEVEL is not set +CT_ISL_PATCH_ORDER="global" +CT_ISL_V_0_24=y +# CT_ISL_V_0_23 is not set +# CT_ISL_V_0_22 is not set +# CT_ISL_V_0_21 is not set +# CT_ISL_V_0_20 is not set +# CT_ISL_V_0_19 is not set +# CT_ISL_V_0_18 is not set +# CT_ISL_V_0_17 is not set +# CT_ISL_V_0_16 is not set +# CT_ISL_V_0_15 is not set +CT_ISL_VERSION="0.24" +CT_ISL_MIRRORS="https://libisl.sourceforge.io" +CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_ISL_SIGNATURE_FORMAT="" +CT_ISL_later_than_0_18=y +CT_ISL_0_18_or_later=y +CT_ISL_later_than_0_15=y +CT_ISL_0_15_or_later=y +# CT_COMP_LIBS_LIBELF is not set +CT_COMP_LIBS_LIBICONV=y +CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV" +CT_LIBICONV_DIR_NAME="libiconv" +CT_LIBICONV_PKG_NAME="libiconv" +CT_LIBICONV_SRC_RELEASE=y +# CT_LIBICONV_SRC_DEVEL is not set +CT_LIBICONV_PATCH_ORDER="global" +CT_LIBICONV_V_1_16=y +# CT_LIBICONV_V_1_15 is not set +CT_LIBICONV_VERSION="1.16" +CT_LIBICONV_MIRRORS="$(CT_Mirrors GNU libiconv)" +CT_LIBICONV_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LIBICONV_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LIBICONV_ARCHIVE_FORMATS=".tar.gz" +CT_LIBICONV_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_MPC=y +CT_COMP_LIBS_MPC_PKG_KSYM="MPC" +CT_MPC_DIR_NAME="mpc" +CT_MPC_PKG_NAME="mpc" +CT_MPC_SRC_RELEASE=y +# CT_MPC_SRC_DEVEL is not set +CT_MPC_PATCH_ORDER="global" +CT_MPC_V_1_2=y +# CT_MPC_V_1_1 is not set +# CT_MPC_V_1_0 is not set +CT_MPC_VERSION="1.2.1" +CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" +CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_FORMATS=".tar.gz" +CT_MPC_SIGNATURE_FORMAT="packed/.sig" +CT_MPC_later_than_1_1_0=y +CT_MPC_1_1_0_or_later=y +CT_COMP_LIBS_MPFR=y +CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR" +CT_MPFR_DIR_NAME="mpfr" +CT_MPFR_PKG_NAME="mpfr" +CT_MPFR_SRC_RELEASE=y +# CT_MPFR_SRC_DEVEL is not set +CT_MPFR_PATCH_ORDER="global" +CT_MPFR_V_4_1=y +# CT_MPFR_V_4_0 is not set +# CT_MPFR_V_3_1 is not set +CT_MPFR_VERSION="4.1.0" +CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)" +CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" +CT_MPFR_SIGNATURE_FORMAT="packed/.asc" +CT_MPFR_later_than_4_0_0=y +CT_MPFR_4_0_0_or_later=y +CT_COMP_LIBS_NCURSES=y +CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES" +CT_NCURSES_DIR_NAME="ncurses" +CT_NCURSES_PKG_NAME="ncurses" +CT_NCURSES_SRC_RELEASE=y +# CT_NCURSES_SRC_DEVEL is not set +CT_NCURSES_PATCH_ORDER="global" +CT_NCURSES_V_6_2=y +# CT_NCURSES_V_6_1 is not set +# CT_NCURSES_V_6_0 is not set +CT_NCURSES_VERSION="6.2" +CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)" +CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_FORMATS=".tar.gz" +CT_NCURSES_SIGNATURE_FORMAT="packed/.sig" +# CT_NCURSES_NEW_ABI is not set +CT_NCURSES_HOST_CONFIG_ARGS="" +CT_NCURSES_HOST_DISABLE_DB=y +CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100" +CT_NCURSES_TARGET_CONFIG_ARGS="" +# CT_NCURSES_TARGET_DISABLE_DB is not set +CT_NCURSES_TARGET_FALLBACKS="" +CT_COMP_LIBS_ZLIB=y +CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB" +CT_ZLIB_TARGET=y +CT_ZLIB_DIR_NAME="zlib" +CT_ZLIB_PKG_NAME="zlib" +CT_ZLIB_SRC_RELEASE=y +# CT_ZLIB_SRC_DEVEL is not set +CT_ZLIB_PATCH_ORDER="global" +CT_ZLIB_V_1_2_12=y +CT_ZLIB_VERSION="1.2.13" +CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" + +CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB" +CT_LIBICONV_NEEDED=y +CT_GETTEXT_NEEDED=y +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_EXPAT_NEEDED=y +CT_NCURSES_NEEDED=y +CT_ZLIB_NEEDED=y +CT_LIBICONV=y +CT_GETTEXT=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_EXPAT=y +CT_NCURSES=y +CT_ZLIB=y +# end of Companion libraries + +# +# Companion tools +# +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_AUTOCONF is not set +CT_COMP_TOOLS_AUTOMAKE=y +CT_COMP_TOOLS_AUTOMAKE_PKG_KSYM="AUTOMAKE" +CT_AUTOMAKE_DIR_NAME="automake" +CT_AUTOMAKE_PKG_NAME="automake" +CT_AUTOMAKE_SRC_RELEASE=y +# CT_AUTOMAKE_SRC_DEVEL is not set +CT_AUTOMAKE_PATCH_ORDER="global" +# CT_AUTOMAKE_V_1_16 is not set +CT_AUTOMAKE_V_1_15=y +CT_AUTOMAKE_VERSION="1.15.1" +CT_AUTOMAKE_MIRRORS="$(CT_Mirrors GNU automake)" +CT_AUTOMAKE_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_AUTOMAKE_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_AUTOMAKE_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_AUTOMAKE_SIGNATURE_FORMAT="packed/.sig" +# CT_COMP_TOOLS_BISON is not set +# CT_COMP_TOOLS_DTC is not set +CT_COMP_TOOLS_LIBTOOL=y +CT_COMP_TOOLS_LIBTOOL_PKG_KSYM="LIBTOOL" +CT_LIBTOOL_DIR_NAME="libtool" +CT_LIBTOOL_PKG_NAME="libtool" +CT_LIBTOOL_SRC_RELEASE=y +# CT_LIBTOOL_SRC_DEVEL is not set +CT_LIBTOOL_PATCH_ORDER="global" +CT_LIBTOOL_V_2_4=y +CT_LIBTOOL_VERSION="2.4.6" +CT_LIBTOOL_MIRRORS="$(CT_Mirrors GNU libtool)" +CT_LIBTOOL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LIBTOOL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LIBTOOL_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_LIBTOOL_SIGNATURE_FORMAT="packed/.sig" +# CT_COMP_TOOLS_M4 is not set +CT_COMP_TOOLS_MAKE=y +CT_COMP_TOOLS_MAKE_PKG_KSYM="MAKE" +CT_MAKE_DIR_NAME="make" +CT_MAKE_PKG_NAME="make" +CT_MAKE_SRC_RELEASE=y +# CT_MAKE_SRC_DEVEL is not set +CT_MAKE_PATCH_ORDER="global" +# CT_MAKE_V_4_3 is not set +CT_MAKE_V_4_2=y +CT_MAKE_VERSION="4.2.1" +CT_MAKE_MIRRORS="$(CT_Mirrors GNU make)" +CT_MAKE_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MAKE_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MAKE_ARCHIVE_FORMATS=".tar.bz2 .tar.gz" +CT_MAKE_SIGNATURE_FORMAT="packed/.sig" +# CT_MAKE_GMAKE_SYMLINK is not set +CT_MAKE_GNUMAKE_SYMLINK=y +CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" +# end of Companion tools diff --git a/manylinux_2_34-aarch64/xc_script/docker_setup_scripts/prepare_cross_env.sh b/manylinux_2_34-aarch64/xc_script/docker_setup_scripts/prepare_cross_env.sh new file mode 100755 index 0000000..3a7fe27 --- /dev/null +++ b/manylinux_2_34-aarch64/xc_script/docker_setup_scripts/prepare_cross_env.sh @@ -0,0 +1,114 @@ +#!/bin/bash + +# AUTHOR: odidev +# DATE: 2021-07-20 +# DESCRIPTION: This file intended to cross compile the python and create necessary +# crossenv environment + +# The current env is not compatible to build python so resetting it as +# in quay.io/pypa/manylinux_2_34_x86_64 containers +unset $(env | awk -F= '{print $1}') +export SSL_CERT_FILE=/opt/_internal/certs.pem +export TERM=xterm +export LC_ALL=en_US.UTF-8 +export LD_LIBRARY_PATH=/opt/rh/gcc-toolset-14/root/usr/lib64:/opt/rh/gcc-toolset-14/root/usr/lib:/opt/rh/gcc-toolset-14/root/usr/lib64/dyninst:/opt/rh/gcc-toolset-14/root/usr/lib/dyninst:/usr/local/lib64 +export PATH=/opt/rh/gcc-toolset-14/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export PWD=/work +export LANG=en_US.UTF-8 +export AUDITWHEEL_ARCH=x86_64 +export DEVTOOLSET_ROOTPATH=/opt/rh/gcc-toolset-14/root +export HOME=/root +export SHLVL=1 +export LANGUAGE=en_US.UTF-8 +export AUDITWHEEL_PLAT=manylinux_2_34_aarch64 +export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig +export AUDITWHEEL_POLICY=manylinux_2_34 + +# Cross compile Python versions present in manylinux containers +declare -A buildpy +python_vers="" + +for PY in /opt/python/cp*/bin/python; do + ver=`$PY --version | cut -d " " -f 2` + python_vers="${python_vers} ${ver}" + cpver=cp`echo ${ver} | cut -d "." -f 1-2 | sed 's/\.//'` + if [ ${cpver} = "cp36" ] || [ ${cpver} = "cp37" ]; then + cpver="${cpver}-${cpver}m" + else + cpver="${cpver}-${cpver}" + fi + buildpy[${ver}]=${cpver} +done + + +# Adding cross compiler path in PATH env variable +export PATH=/usr/xcc/aarch64-unknown-linux-gnu/bin:$PATH + +OLD_PATH=$PATH +CROSS_PY_BASE=/opt/_internal +CROSS_PY_BASE_LN=/opt/python +BUILD_DIR=/tmp/builds +LN=ln +sub_rel="" + +# Loop over each python version and cross compile it +for python_ver in $python_vers; do + rel="" + sub_rel="" + found_sub_rel=0 + for i in ` seq ${#python_ver}` + do + c=${python_ver:$i-1:1} + if [[ ${c} == [a-zA-Z] ]] ; then + found_sub_rel=1 + fi + if [[ $found_sub_rel == "0" ]]; then + rel=${rel}${c} + else + sub_rel=${sub_rel}${c} + fi + done + + mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} + wget https://www.python.org/ftp/python/${rel}/Python-${rel}${sub_rel}.tgz + tar xzf Python-${rel}${sub_rel}.tgz + cd Python-${rel}${sub_rel} + + # Setting up build python path required by crassenv + BUILD_PYBIN=${CROSS_PY_BASE_LN}/${buildpy[$python_ver]}/bin + BUILD_PIP=${BUILD_PYBIN}/pip3 + BUILD_PYTHON=${BUILD_PYBIN}/python3 + + # Setting up target python required by crossenv + TARGET_PYPATH=${CROSS_PY_BASE}/xc/xcpython-${python_ver} + TARGET_PYTHON=${TARGET_PYPATH}/bin/python3 + + # Setting up cross env path + CROSS_ENV=${CROSS_PY_BASE}/${buildpy[$python_ver]}-xc + CROSS_ENV_LN=${CROSS_PY_BASE_LN}/${buildpy[$python_ver]}-xc + CROSS_ENV_PIP=${CROSS_ENV_LN}/cross/bin/pip + + # Adding build python path as it is required to + # configure the python for cross compilation + PATH=${BUILD_PYBIN}:${OLD_PATH} + export PATH + + ./configure --prefix=${TARGET_PYPATH} \ + --host=aarch64-unknown-linux-gnu \ + --build=x86_64-linux-gnu \ + --with-build-python=yes \ + --without-ensurepip \ + ac_cv_buggy_getaddrinfo=no \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_file__dev_ptc=no \ + --enable-optimizations + make -j32 install + make install + + # Create the necessary env and its link + ${BUILD_PIP} install --upgrade pip crossenv + ${BUILD_PYTHON} -m crossenv ${TARGET_PYTHON} ${CROSS_ENV} + ${LN} -s ${CROSS_ENV} ${CROSS_ENV_LN} + ${CROSS_ENV_PIP} install wheel + rm -rf ${BUILD_DIR} +done diff --git a/manylinux_2_34-aarch64/xc_script/install_deps.sh b/manylinux_2_34-aarch64/xc_script/install_deps.sh new file mode 100755 index 0000000..e33b73a --- /dev/null +++ b/manylinux_2_34-aarch64/xc_script/install_deps.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# AUTHOR: odidev +# DATE: 2021-07-20 +# DESCRIPTION: This file will be invoked by cibuildwheel when before all is set. +# It will install the package in manylinux container and copy back +# the installed files on host machine will will be coppied to +# toolchain + +install_dir='/host/tmp/install_deps' +packages=$(echo $1 | sed 's/\(yum\s*\|install\s*\|-y\s*\)//g') + +# Installing the packages +echo "Installing dependencies: $packages" +if $1; then + echo "Installed successfully" +else + echo "Failed" + exit 1 +fi + +# Coping the installed files +if list=`rpm -ql $packages`; then + + echo "Copying dependencies files to prepare cross toolchain-" + + for file in $list; do + test -f $file && echo "Copy $file --> ${install_dir}${file}" + test -f $file && install -m 0644 -D $file "${install_dir}${file}" + done +else + echo $list + echo "Dependencies not resolved" + exit 1 +fi +exit 0 diff --git a/manylinux_2_34-aarch64/xc_script/repair_wheel.sh b/manylinux_2_34-aarch64/xc_script/repair_wheel.sh new file mode 100755 index 0000000..4480e07 --- /dev/null +++ b/manylinux_2_34-aarch64/xc_script/repair_wheel.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# AUTHOR: odidev +# DATE: 2021-07-20 +# DESCRIPTION: The wheels are cross compiled and we can't be repair in currnet +# environment. So, better to repair in manylinux container. So, +# we need to run BEFORE_ALL again in target manylinux contaner. So, +# instead of running BEFORE_ALL again we can copy the stored files. +# INPUT: $1 --> Dependeicies install path on host machine with respect to +# container +# $2 --> Wheel repair command + +install_dir="$1" + +for file in `find $install_dir -type f`; do + install_path=$(echo ${file} | sed 's/^.*usr/\/usr/') + install -m 0644 -D ${file} ${install_path} +done + +$2