From f87f2a8461272cfe32893f3a7777b2ab0a61bc1e Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Thu, 19 Sep 2024 18:18:22 -0700 Subject: [PATCH 01/41] Use ppbt toolchain when building. Instead of having relenv maintain, build and distribute it's own toolchain use ppbt. The benefits of ppbt are that the toolchain comes packaged in python wheel. Also we'll only need to build ppbt when changes take place to the toolchain instead of every relenv release. --- .github/workflows/build-native-action.yml | 11 - .github/workflows/ci.yml | 31 +- .../aarch64/aarch64-linux-gnu-ct-ng.config | 798 ----------------- .../aarch64/x86_64-linux-gnu-ct-ng.config | 800 ----------------- .../x86_64/aarch64-linux-gnu-ct-ng.config | 799 ----------------- .../x86_64/x86_64-linux-gnu-ct-ng.config | 801 ------------------ relenv/build/common.py | 3 +- relenv/common.py | 12 +- relenv/toolchain.py | 188 +--- 9 files changed, 28 insertions(+), 3415 deletions(-) delete mode 100644 relenv/_toolchain/aarch64/aarch64-linux-gnu-ct-ng.config delete mode 100644 relenv/_toolchain/aarch64/x86_64-linux-gnu-ct-ng.config delete mode 100644 relenv/_toolchain/x86_64/aarch64-linux-gnu-ct-ng.config delete mode 100644 relenv/_toolchain/x86_64/x86_64-linux-gnu-ct-ng.config diff --git a/.github/workflows/build-native-action.yml b/.github/workflows/build-native-action.yml index f0ac238b..fe431649 100644 --- a/.github/workflows/build-native-action.yml +++ b/.github/workflows/build-native-action.yml @@ -57,17 +57,6 @@ jobs: venv/bin/python3 --version venv/bin/python3 -c 'import os; print(os.name)' - - name: Download Toolchain Artifact - uses: actions/download-artifact@v4 - with: - name: toolchain-${{ matrix.host }}-${{ matrix.target }}-linux-gnu.tar.xz - path: . - - - name: Extract Toolchain Artifact - run: | - mkdir -p toolchain - tar -C toolchain -xvf toolchain-${{ matrix.host }}-${{ matrix.target }}-linux-gnu.tar.xz - - name: Build run: | venv/bin/python3 -m relenv build --arch=${{ matrix.target }} --python=${{ matrix.version }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bff42d4c..407dc72a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,12 +55,6 @@ jobs: deleted: - deleted: - '**' - toolchain: - - added|modified: - - '.github/workflows/*toolchain*.yml' - - 'relenv/toolchain.py' - - 'relenv/_toolchain/**' - pre-commit: name: Pre-Commit uses: ./.github/workflows/pre-commit-action.yml @@ -79,20 +73,11 @@ jobs: kind: "${{ inputs.kind }}" cmd: "${{ inputs.package_command }}" - toolchain: - name: Toolchain Builds - uses: ./.github/workflows/toolchain-action.yml - needs: - - get-changed-files - with: - changed-files: ${{ needs.get-changed-files.outputs.changed-files }} - build-native: name: Python Native Builds uses: ./.github/workflows/build-native-action.yml needs: - get-changed-files - - toolchain with: changed-files: ${{ needs.get-changed-files.outputs.changed-files }} @@ -108,7 +93,6 @@ jobs: # uses: ./.github/workflows/build-action.yml # needs: # - get-changed-files - # - toolchain # - build-native # with: # changed-files: ${{ needs.get-changed-files.outputs.changed-files }} @@ -142,6 +126,18 @@ jobs: # - test-fips # secrets: # PYPI_API_TOKEN: "${{ secrets.PYPI_API_TOKEN }}" + # + upload-build-artifacts: + name: Deploy Prebuilt Python Builds + if: ${{ inputs.kind == 'release' && success() }} + uses: ./.github/workflows/deploy-build-action.yml + needs: + - build-python-package + - build-native + - test-fips + #- build-cross + with: + version: "${{ needs.build-python-package.outputs.version }}" deploy-python-package: name: "Deploy python package" @@ -153,6 +149,7 @@ jobs: - docs - build-python-package - test-fips + - upload-build-artifacts steps: - uses: actions/create-github-app-token@v1 id: app-token @@ -185,11 +182,11 @@ jobs: if: always() needs: - pre-commit - - toolchain - build-native #- build-cross - test - docs + - upload-build-artifacts - deploy-python-package - create-release steps: diff --git a/relenv/_toolchain/aarch64/aarch64-linux-gnu-ct-ng.config b/relenv/_toolchain/aarch64/aarch64-linux-gnu-ct-ng.config deleted file mode 100644 index ffd43142..00000000 --- a/relenv/_toolchain/aarch64/aarch64-linux-gnu-ct-ng.config +++ /dev/null @@ -1,798 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# crosstool-NG 1.25.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_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_dtc=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.25.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 is not set -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=y -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=y - -# -# 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=y -CT_SHOW_CT_VERSION=y -CT_TOOLCHAIN_PKGVERSION="" -CT_TOOLCHAIN_BUGURL="" - -# -# Tuple completion and aliasing -# -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=y -# CT_LINUX_V_5_15 is not set -# CT_LINUX_V_5_14 is not set -# 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.16.9" -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_29=y -# 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.29.1" -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_2_30_or_older=y -CT_BINUTILS_older_than_2_30=y -CT_BINUTILS_REQUIRE_older_than_2_30=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_FORCE_LD_BFD_DEFAULT=y -CT_BINUTILS_LINKER_LD=y -CT_BINUTILS_LINKERS_LIST="ld" -CT_BINUTILS_LINKER_DEFAULT="bfd" -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 is not set -# 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=y -CT_GLIBC_VERSION="2.17" -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_older=y -CT_GLIBC_older_than_2_34=y -CT_GLIBC_2_32_or_older=y -CT_GLIBC_older_than_2_32=y -CT_GLIBC_2_31_or_older=y -CT_GLIBC_older_than_2_31=y -CT_GLIBC_2_30_or_older=y -CT_GLIBC_older_than_2_30=y -CT_GLIBC_2_29_or_older=y -CT_GLIBC_older_than_2_29=y -CT_GLIBC_2_28_or_older=y -CT_GLIBC_older_than_2_28=y -CT_GLIBC_2_27_or_older=y -CT_GLIBC_older_than_2_27=y -CT_GLIBC_2_26_or_older=y -CT_GLIBC_older_than_2_26=y -CT_GLIBC_2_25_or_older=y -CT_GLIBC_older_than_2_25=y -CT_GLIBC_2_24_or_older=y -CT_GLIBC_older_than_2_24=y -CT_GLIBC_2_23_or_older=y -CT_GLIBC_older_than_2_23=y -CT_GLIBC_2_20_or_older=y -CT_GLIBC_older_than_2_20=y -CT_GLIBC_2_17_or_later=y -CT_GLIBC_2_17_or_older=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_SPARC_ALLOW_V7=y -CT_GLIBC_HAS_NPTL_ADDON=y -CT_GLIBC_HAS_PORTS_ADDON=y -CT_GLIBC_HAS_LIBIDN_ADDON=y -CT_GLIBC_USE_PORTS_ADDON=y -CT_GLIBC_USE_NPTL_ADDON=y -# CT_GLIBC_USE_LIBIDN_ADDON is not set -CT_GLIBC_HAS_OBSOLETE_RPC=y -CT_GLIBC_EXTRA_CONFIG_ARRAY="" -CT_GLIBC_CONFIGPARMS="" -CT_GLIBC_EXTRA_CFLAGS="-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" -CT_GLIBC_ENABLE_OBSOLETE_RPC=y -# CT_GLIBC_DISABLE_VERSIONING is not set -CT_GLIBC_OLDEST_ABI="glibc-2.17" -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=y -# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set -CT_GLIBC_MIN_KERNEL="5.16.9" -CT_GLIBC_ENABLE_COMMON_FLAG=y -CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC 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 is not set -# 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_11=y -# CT_GCC_V_10 is not set -# CT_GCC_V_9 is not set -# CT_GCC_V_8 is not set -# CT_GCC_V_7 is not set -# CT_GCC_V_6 is not set -# CT_GCC_V_5 is not set -# CT_GCC_V_4_9 is not set -CT_GCC_VERSION="11.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_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_HAS_LIBMPX=y -CT_CC_GCC_ENABLE_CXX_FLAGS="" -CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_STATIC_LIBSTDCXX=y -# CT_CC_GCC_SYSTEM_ZLIB is not set -CT_CC_GCC_CONFIG_TLS=m - -# -# Optimisation features -# -CT_CC_GCC_USE_GRAPHITE=y - -# -# Settings for libraries running on target -# -CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y -# CT_CC_GCC_LIBMUDFLAP is not set -# CT_CC_GCC_LIBGOMP is not set -# 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 is not set -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 is not set -# end of C compiler - -# -# Debug facilities -# -# CT_DEBUG_DUMA is not set -# CT_DEBUG_GDB 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 is not set -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=y -# CT_GETTEXT_V_0_20_1 is not set -# CT_GETTEXT_V_0_19_8_1 is not set -CT_GETTEXT_VERSION="0.21" -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.gz" -CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" -CT_GETTEXT_0_21_or_later=y -CT_GETTEXT_0_21_or_older=y -CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y - -# -# This version of gettext is not compatible with uClibc-NG. Select -# - -# -# a different version if uClibc-NG is used on the target or (in a -# - -# -# Canadian cross build) on the host. -# -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=y -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_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_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_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 is not set -# CT_COMP_TOOLS_BISON is not set -# CT_COMP_TOOLS_DTC is not set -# CT_COMP_TOOLS_LIBTOOL is not set -# CT_COMP_TOOLS_M4 is not set -# CT_COMP_TOOLS_MAKE is not set -CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" -# end of Companion tools diff --git a/relenv/_toolchain/aarch64/x86_64-linux-gnu-ct-ng.config b/relenv/_toolchain/aarch64/x86_64-linux-gnu-ct-ng.config deleted file mode 100644 index 4f51dbc5..00000000 --- a/relenv/_toolchain/aarch64/x86_64-linux-gnu-ct-ng.config +++ /dev/null @@ -1,800 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# crosstool-NG 1.25.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_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_dtc=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.25.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 is not set -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=y -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 is not set -# 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=y -# CT_ARCH_XTENSA is not set -CT_ARCH="x86" -CT_ARCH_CHOICE_KSYM="X86" -CT_ARCH_CPU="" -CT_ARCH_TUNE="" -CT_ARCH_X86_SHOW=y - -# -# Options for x86 -# -CT_ARCH_X86_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=y - -# -# Generic target options -# -# CT_MULTILIB is not set -CT_DEMULTILIB=y -CT_ARCH_USE_MMU=y -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 -CT_ARCH_SUPPORTS_WITH_32_64=y - -# -# Target optimisations -# -CT_ARCH_SUPPORTS_WITH_ARCH=y -CT_ARCH_SUPPORTS_WITH_CPU=y -CT_ARCH_SUPPORTS_WITH_TUNE=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=y -CT_SHOW_CT_VERSION=y -CT_TOOLCHAIN_PKGVERSION="" -CT_TOOLCHAIN_BUGURL="" - -# -# Tuple completion and aliasing -# -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=y -# CT_LINUX_V_5_15 is not set -# CT_LINUX_V_5_14 is not set -# 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_V_3_4 is not set -# CT_LINUX_V_3_2 is not set -# CT_LINUX_V_2_6_32 is not set -CT_LINUX_VERSION="5.16.9" -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_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_38 is not set -# CT_BINUTILS_V_2_37 is not set -# 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=y -# 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.29.1" -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_2_30_or_older=y -CT_BINUTILS_older_than_2_30=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_FORCE_LD_BFD_DEFAULT=y -CT_BINUTILS_LINKER_LD=y -CT_BINUTILS_LINKERS_LIST="ld" -CT_BINUTILS_LINKER_DEFAULT="bfd" -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 is not set -# 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=y -CT_GLIBC_VERSION="2.17" -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_older=y -CT_GLIBC_older_than_2_34=y -CT_GLIBC_2_32_or_older=y -CT_GLIBC_older_than_2_32=y -CT_GLIBC_2_31_or_older=y -CT_GLIBC_older_than_2_31=y -CT_GLIBC_2_30_or_older=y -CT_GLIBC_older_than_2_30=y -CT_GLIBC_2_29_or_older=y -CT_GLIBC_older_than_2_29=y -CT_GLIBC_2_28_or_older=y -CT_GLIBC_older_than_2_28=y -CT_GLIBC_2_27_or_older=y -CT_GLIBC_older_than_2_27=y -CT_GLIBC_2_26_or_older=y -CT_GLIBC_older_than_2_26=y -CT_GLIBC_2_25_or_older=y -CT_GLIBC_older_than_2_25=y -CT_GLIBC_2_24_or_older=y -CT_GLIBC_older_than_2_24=y -CT_GLIBC_2_23_or_older=y -CT_GLIBC_older_than_2_23=y -CT_GLIBC_2_20_or_older=y -CT_GLIBC_older_than_2_20=y -CT_GLIBC_2_17_or_later=y -CT_GLIBC_2_17_or_older=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_SPARC_ALLOW_V7=y -CT_GLIBC_HAS_NPTL_ADDON=y -CT_GLIBC_HAS_PORTS_ADDON=y -CT_GLIBC_HAS_LIBIDN_ADDON=y -CT_GLIBC_USE_NPTL_ADDON=y -# CT_GLIBC_USE_LIBIDN_ADDON is not set -CT_GLIBC_HAS_OBSOLETE_RPC=y -CT_GLIBC_EXTRA_CONFIG_ARRAY="" -CT_GLIBC_CONFIGPARMS="" -CT_GLIBC_EXTRA_CFLAGS="-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" -CT_GLIBC_ENABLE_OBSOLETE_RPC=y -# CT_GLIBC_DISABLE_VERSIONING is not set -CT_GLIBC_OLDEST_ABI="glibc-2.17" -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=y -# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set -CT_GLIBC_MIN_KERNEL="5.16.9" -CT_GLIBC_ENABLE_COMMON_FLAG=y -CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC 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 is not set -# 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_11=y -# CT_GCC_V_10 is not set -# CT_GCC_V_9 is not set -# CT_GCC_V_8 is not set -# CT_GCC_V_7 is not set -# CT_GCC_V_6 is not set -# CT_GCC_V_5 is not set -# CT_GCC_V_4_9 is not set -CT_GCC_VERSION="11.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_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_HAS_LIBMPX=y -CT_CC_GCC_ENABLE_CXX_FLAGS="" -CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_STATIC_LIBSTDCXX=y -# CT_CC_GCC_SYSTEM_ZLIB is not set -CT_CC_GCC_CONFIG_TLS=m - -# -# Optimisation features -# -CT_CC_GCC_USE_GRAPHITE=y - -# -# Settings for libraries running on target -# -CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y -# CT_CC_GCC_LIBMUDFLAP is not set -# CT_CC_GCC_LIBGOMP is not set -# CT_CC_GCC_LIBSSP is not set -# CT_CC_GCC_LIBQUADMATH is not set -# CT_CC_GCC_LIBSANITIZER is not set -# CT_CC_GCC_LIBMPX 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 is not set -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 is not set -# end of C compiler - -# -# Debug facilities -# -# CT_DEBUG_DUMA is not set -# CT_DEBUG_GDB 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 is not set -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=y -# CT_GETTEXT_V_0_20_1 is not set -# CT_GETTEXT_V_0_19_8_1 is not set -CT_GETTEXT_VERSION="0.21" -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.gz" -CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" -CT_GETTEXT_0_21_or_later=y -CT_GETTEXT_0_21_or_older=y -CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y - -# -# This version of gettext is not compatible with uClibc-NG. Select -# - -# -# a different version if uClibc-NG is used on the target or (in a -# - -# -# Canadian cross build) on the host. -# -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=y -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_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_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_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 is not set -# CT_COMP_TOOLS_BISON is not set -# CT_COMP_TOOLS_DTC is not set -# CT_COMP_TOOLS_LIBTOOL is not set -# CT_COMP_TOOLS_M4 is not set -# CT_COMP_TOOLS_MAKE is not set -CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" -# end of Companion tools diff --git a/relenv/_toolchain/x86_64/aarch64-linux-gnu-ct-ng.config b/relenv/_toolchain/x86_64/aarch64-linux-gnu-ct-ng.config deleted file mode 100644 index 5396025d..00000000 --- a/relenv/_toolchain/x86_64/aarch64-linux-gnu-ct-ng.config +++ /dev/null @@ -1,799 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# crosstool-NG 1.25.0 Configuration -# -CT_CONFIGURE_has_static_link=y -CT_CONFIGURE_has_cxx11=y -CT_CONFIGURE_has_lzip=y -CT_CONFIGURE_has_wget=y -CT_CONFIGURE_has_curl=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_svn=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.25.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 is not set -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=y -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=y - -# -# 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=y -CT_SHOW_CT_VERSION=y -CT_TOOLCHAIN_PKGVERSION="" -CT_TOOLCHAIN_BUGURL="" - -# -# Tuple completion and aliasing -# -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=y -# CT_LINUX_V_5_15 is not set -# CT_LINUX_V_5_14 is not set -# 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.16.9" -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_29=y -# 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.29.1" -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_2_30_or_older=y -CT_BINUTILS_older_than_2_30=y -CT_BINUTILS_REQUIRE_older_than_2_30=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_FORCE_LD_BFD_DEFAULT=y -CT_BINUTILS_LINKER_LD=y -CT_BINUTILS_LINKERS_LIST="ld" -CT_BINUTILS_LINKER_DEFAULT="bfd" -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 is not set -# 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=y -CT_GLIBC_VERSION="2.17" -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_older=y -CT_GLIBC_older_than_2_34=y -CT_GLIBC_2_32_or_older=y -CT_GLIBC_older_than_2_32=y -CT_GLIBC_2_31_or_older=y -CT_GLIBC_older_than_2_31=y -CT_GLIBC_2_30_or_older=y -CT_GLIBC_older_than_2_30=y -CT_GLIBC_2_29_or_older=y -CT_GLIBC_older_than_2_29=y -CT_GLIBC_2_28_or_older=y -CT_GLIBC_older_than_2_28=y -CT_GLIBC_2_27_or_older=y -CT_GLIBC_older_than_2_27=y -CT_GLIBC_2_26_or_older=y -CT_GLIBC_older_than_2_26=y -CT_GLIBC_2_25_or_older=y -CT_GLIBC_older_than_2_25=y -CT_GLIBC_2_24_or_older=y -CT_GLIBC_older_than_2_24=y -CT_GLIBC_2_23_or_older=y -CT_GLIBC_older_than_2_23=y -CT_GLIBC_2_20_or_older=y -CT_GLIBC_older_than_2_20=y -CT_GLIBC_2_17_or_later=y -CT_GLIBC_2_17_or_older=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_SPARC_ALLOW_V7=y -CT_GLIBC_HAS_NPTL_ADDON=y -CT_GLIBC_HAS_PORTS_ADDON=y -CT_GLIBC_HAS_LIBIDN_ADDON=y -CT_GLIBC_USE_PORTS_ADDON=y -CT_GLIBC_USE_NPTL_ADDON=y -# CT_GLIBC_USE_LIBIDN_ADDON is not set -CT_GLIBC_HAS_OBSOLETE_RPC=y -CT_GLIBC_EXTRA_CONFIG_ARRAY="" -CT_GLIBC_CONFIGPARMS="" -CT_GLIBC_EXTRA_CFLAGS="-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" -CT_GLIBC_ENABLE_OBSOLETE_RPC=y -# CT_GLIBC_DISABLE_VERSIONING is not set -CT_GLIBC_OLDEST_ABI="2.17" -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=y -# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set -CT_GLIBC_MIN_KERNEL="5.16.9" -CT_GLIBC_ENABLE_COMMON_FLAG=y -CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC 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_11=y -# CT_GCC_V_10 is not set -# CT_GCC_V_9 is not set -# CT_GCC_V_8 is not set -# CT_GCC_V_7 is not set -# CT_GCC_V_6 is not set -# CT_GCC_V_5 is not set -# CT_GCC_V_4_9 is not set -CT_GCC_VERSION="11.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_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_HAS_LIBMPX=y -CT_CC_GCC_ENABLE_CXX_FLAGS="" -CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_STATIC_LIBSTDCXX=y -# CT_CC_GCC_SYSTEM_ZLIB is not set -CT_CC_GCC_CONFIG_TLS=m - -# -# Optimisation features -# -CT_CC_GCC_USE_GRAPHITE=y - -# -# Settings for libraries running on target -# -CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y -# CT_CC_GCC_LIBMUDFLAP is not set -# CT_CC_GCC_LIBGOMP is not set -# 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 is not set -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 is not set -# end of C compiler - -# -# Debug facilities -# -# CT_DEBUG_DUMA is not set -# CT_DEBUG_GDB 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 is not set -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=y -# CT_GETTEXT_V_0_20_1 is not set -# CT_GETTEXT_V_0_19_8_1 is not set -CT_GETTEXT_VERSION="0.21" -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.gz" -CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" -CT_GETTEXT_0_21_or_later=y -CT_GETTEXT_0_21_or_older=y -CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y - -# -# This version of gettext is not compatible with uClibc-NG. Select -# - -# -# a different version if uClibc-NG is used on the target or (in a -# - -# -# Canadian cross build) on the host. -# -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=y -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_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_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_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 is not set -# CT_COMP_TOOLS_BISON is not set -# CT_COMP_TOOLS_DTC is not set -# CT_COMP_TOOLS_LIBTOOL is not set -# CT_COMP_TOOLS_M4 is not set -# CT_COMP_TOOLS_MAKE is not set -CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" -# end of Companion tools diff --git a/relenv/_toolchain/x86_64/x86_64-linux-gnu-ct-ng.config b/relenv/_toolchain/x86_64/x86_64-linux-gnu-ct-ng.config deleted file mode 100644 index 98e9b281..00000000 --- a/relenv/_toolchain/x86_64/x86_64-linux-gnu-ct-ng.config +++ /dev/null @@ -1,801 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# crosstool-NG 1.25.0 Configuration -# -CT_CONFIGURE_has_static_link=y -CT_CONFIGURE_has_cxx11=y -CT_CONFIGURE_has_lzip=y -CT_CONFIGURE_has_wget=y -CT_CONFIGURE_has_curl=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_svn=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.25.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="/tmp" -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 is not set -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=y -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 is not set -# 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=y -# CT_ARCH_XTENSA is not set -CT_ARCH="x86" -CT_ARCH_CHOICE_KSYM="X86" -CT_ARCH_CPU="" -CT_ARCH_TUNE="" -CT_ARCH_X86_SHOW=y - -# -# Options for x86 -# -CT_ARCH_X86_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=y - -# -# Generic target options -# -# CT_MULTILIB is not set -CT_DEMULTILIB=y -CT_ARCH_USE_MMU=y -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 -CT_ARCH_SUPPORTS_WITH_32_64=y - -# -# Target optimisations -# -CT_ARCH_SUPPORTS_WITH_ARCH=y -CT_ARCH_SUPPORTS_WITH_CPU=y -CT_ARCH_SUPPORTS_WITH_TUNE=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=y -CT_SHOW_CT_VERSION=y -CT_TOOLCHAIN_PKGVERSION="" -CT_TOOLCHAIN_BUGURL="" - -# -# Tuple completion and aliasing -# -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=y -# CT_LINUX_V_5_15 is not set -# CT_LINUX_V_5_14 is not set -# 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_V_3_4 is not set -# CT_LINUX_V_3_2 is not set -# CT_LINUX_V_2_6_32 is not set -CT_LINUX_VERSION="5.16.9" -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_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_38 is not set -# CT_BINUTILS_V_2_37 is not set -# 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=y -# 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.29.1" -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_2_30_or_older=y -CT_BINUTILS_older_than_2_30=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_FORCE_LD_BFD_DEFAULT=y -CT_BINUTILS_LINKER_LD=y -CT_BINUTILS_LINKERS_LIST="ld" -CT_BINUTILS_LINKER_DEFAULT="bfd" -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 is not set -# 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=y -CT_GLIBC_VERSION="2.17" -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_older=y -CT_GLIBC_older_than_2_34=y -CT_GLIBC_2_32_or_older=y -CT_GLIBC_older_than_2_32=y -CT_GLIBC_2_31_or_older=y -CT_GLIBC_older_than_2_31=y -CT_GLIBC_2_30_or_older=y -CT_GLIBC_older_than_2_30=y -CT_GLIBC_2_29_or_older=y -CT_GLIBC_older_than_2_29=y -CT_GLIBC_2_28_or_older=y -CT_GLIBC_older_than_2_28=y -CT_GLIBC_2_27_or_older=y -CT_GLIBC_older_than_2_27=y -CT_GLIBC_2_26_or_older=y -CT_GLIBC_older_than_2_26=y -CT_GLIBC_2_25_or_older=y -CT_GLIBC_older_than_2_25=y -CT_GLIBC_2_24_or_older=y -CT_GLIBC_older_than_2_24=y -CT_GLIBC_2_23_or_older=y -CT_GLIBC_older_than_2_23=y -CT_GLIBC_2_20_or_older=y -CT_GLIBC_older_than_2_20=y -CT_GLIBC_2_17_or_later=y -CT_GLIBC_2_17_or_older=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_SPARC_ALLOW_V7=y -CT_GLIBC_HAS_NPTL_ADDON=y -CT_GLIBC_HAS_PORTS_ADDON=y -CT_GLIBC_HAS_LIBIDN_ADDON=y -CT_GLIBC_USE_NPTL_ADDON=y -# CT_GLIBC_USE_LIBIDN_ADDON is not set -CT_GLIBC_HAS_OBSOLETE_RPC=y -CT_GLIBC_EXTRA_CONFIG_ARRAY="" -CT_GLIBC_CONFIGPARMS="" -CT_GLIBC_EXTRA_CFLAGS="-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" -CT_GLIBC_ENABLE_OBSOLETE_RPC=y -# CT_GLIBC_DISABLE_VERSIONING is not set -CT_GLIBC_OLDEST_ABI="glibc-2.17" -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=y -# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set -CT_GLIBC_MIN_KERNEL="5.16.9" -CT_GLIBC_ENABLE_COMMON_FLAG=y -CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC 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 is not set -# 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_11=y -# CT_GCC_V_10 is not set -# CT_GCC_V_9 is not set -# CT_GCC_V_8 is not set -# CT_GCC_V_7 is not set -# CT_GCC_V_6 is not set -# CT_GCC_V_5 is not set -# CT_GCC_V_4_9 is not set -CT_GCC_VERSION="11.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_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_HAS_LIBMPX=y -CT_CC_GCC_ENABLE_CXX_FLAGS="" -CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_EXTRA_CONFIG_ARRAY="" -CT_CC_GCC_STATIC_LIBSTDCXX=y -# CT_CC_GCC_SYSTEM_ZLIB is not set -CT_CC_GCC_CONFIG_TLS=m - -# -# Optimisation features -# -CT_CC_GCC_USE_GRAPHITE=y - -# -# Settings for libraries running on target -# -CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y -# CT_CC_GCC_LIBMUDFLAP is not set -# CT_CC_GCC_LIBGOMP is not set -# CT_CC_GCC_LIBSSP is not set -# CT_CC_GCC_LIBQUADMATH is not set -# CT_CC_GCC_LIBSANITIZER is not set -# CT_CC_GCC_LIBMPX 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 is not set -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 is not set -# end of C compiler - -# -# Debug facilities -# -# CT_DEBUG_DUMA is not set -# CT_DEBUG_GDB 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 is not set -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=y -# CT_GETTEXT_V_0_20_1 is not set -# CT_GETTEXT_V_0_19_8_1 is not set -CT_GETTEXT_VERSION="0.21" -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.gz" -CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" -CT_GETTEXT_0_21_or_later=y -CT_GETTEXT_0_21_or_older=y -CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y - -# -# This version of gettext is not compatible with uClibc-NG. Select -# - -# -# a different version if uClibc-NG is used on the target or (in a -# - -# -# Canadian cross build) on the host. -# -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=y -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_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_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_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 is not set -# CT_COMP_TOOLS_BISON is not set -# CT_COMP_TOOLS_DTC is not set -# CT_COMP_TOOLS_LIBTOOL is not set -# CT_COMP_TOOLS_M4 is not set -# CT_COMP_TOOLS_MAKE is not set -CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" -# end of Companion tools diff --git a/relenv/build/common.py b/relenv/build/common.py index f273087e..da2270bb 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -974,6 +974,7 @@ def run( env["RELENV_NATIVE_PY"] = str(native_root / "bin" / "python3") self.populate_env(env, dirs) + _ = dirs.to_dict() for k in _: log.info("Directory %s %s", k, _[k]) @@ -1193,7 +1194,7 @@ def check_prereqs(self): fail = [] if self.toolchain and not self.toolchain.exists(): fail.append( - f"Toolchain for {self.arch} does not exist. Please use relenv toolchain to obtain a toolchain." + f"Toolchain for {self.arch} does not exist. Please pip install ppbt." ) return fail diff --git a/relenv/common.py b/relenv/common.py index 62a9acae..ce66a837 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -224,10 +224,14 @@ def get_toolchain(arch=None, root=None): :return: The directory holding the toolchain :rtype: ``pathlib.Path`` """ - dirs = work_dirs(root) - if arch: - return dirs.toolchain / "{}-linux-gnu".format(arch) - return dirs.toolchain + import ppbt + + env = ppbt.environ(auto_extract=False) + return pathlib.Path(env["TOOLCHAIN_PATH"]) + # dirs = work_dirs(root) + # if arch: + # return dirs.toolchain / "{}-linux-gnu".format(arch) + # return dirs.toolchain def get_triplet(machine=None, plat=None): diff --git a/relenv/toolchain.py b/relenv/toolchain.py index 65b0137b..f4af2f18 100644 --- a/relenv/toolchain.py +++ b/relenv/toolchain.py @@ -4,34 +4,6 @@ The ``relenv toolchain`` command. """ -import os -import pathlib -import platform -import shutil -import sys - -from .common import ( - CHECK_HOSTS, - DATA_DIR, - __version__, - arches, - build_arch, - check_url, - download_url, - extract_archive, - get_toolchain, - get_triplet, - runcmd, - work_dirs, -) - -CT_NG_VER = "1.25.0" -CT_URL = "http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-{version}.tar.bz2" -TC_URL = "https://{hostname}/relenv/{version}/toolchain/{host}/{triplet}.tar.xz" -CICD = "CI" in os.environ - -LAST_RELENV_W_TOOLCHAIN = "0.17.4" - def setup_parser(subparsers): """ @@ -43,165 +15,13 @@ def setup_parser(subparsers): subparser = subparsers.add_parser("toolchain", description="Build Linux Toolchains") subparser.set_defaults(func=main) - subparser.add_argument( - "command", - default="fetch", - choices=["build", "fetch"], - help="What type of toolchain operation to perform: build or fetch", - ) - subparser.add_argument( - "--arch", - default=build_arch(), - choices=arches[sys.platform], - help="Architecture to build or fetch", - ) - subparser.add_argument( - "--clean", - default=False, - action="store_true", - help="Whether or not to clean the toolchain directories", - ) - subparser.add_argument( - "--crosstool-only", - default=False, - action="store_true", - help="When building only build Crosstool NG. Do not build toolchains", - ) - - -def fetch(arch, toolchain, clean=False, version=__version__): - """ - Fetch a toolchain and extract it to the filesystem. - - :param arch: The architecture of the toolchain - :type arch: str - :param toolchain: Where to extract the toolchain - :type toolchain: str - :param clean: If true, clean the toolchain directories first - :type clean: bool - """ - triplet = get_triplet(arch) - archdir = get_toolchain(root=pathlib.Path(DATA_DIR) / "toolchain", arch=arch) - if clean: - shutil.rmtree(archdir) - if archdir.exists(): - print(f"Toolchain directory exists, skipping {arch}") - return - - check_hosts = CHECK_HOSTS - if os.environ.get("RELENV_FETCH_HOST", ""): - check_hosts = [os.environ["RELENV_FETCH_HOST"]] - for host in check_hosts: - url = TC_URL.format( - hostname=host, - version=LAST_RELENV_W_TOOLCHAIN, - host=platform.machine(), - triplet=triplet, - ) - if check_url(url, timeout=5): - break - else: - print(f"Unable to find file on an hosts {' '.join(check_hosts)}") - sys.exit(1) - - archive = download_url(url, toolchain) - extract_archive(toolchain, archive) - -def _configure_ctng(ctngdir, dirs): +def main(*args, **kwargs): """ - Configure crosstool-ng. - - :param ctngdir: The directory holding crosstool-ng - :type ctngdir: str - :param dirs: The working directories - :type dirs: ``relenv.common.WorkDirs`` - """ - if not ctngdir.exists(): - url = CT_URL.format(version=CT_NG_VER) - archive = download_url(url, dirs.toolchain) - extract_archive(dirs.toolchain, archive) - os.chdir(ctngdir) - ctng = ctngdir / "ct-ng" - if not ctng.exists(): - runcmd(["./configure", "--enable-local"]) - runcmd(["make"]) - - -def build(arch, dirs, machine, ctngdir): - """ - Build a toolchaing for the given arch. - - :param arch: The architecture to build for - :type arch: str - :param dirs: The working directories - :type dirs: ``relenv.common.WorkDirs`` - :param machine: The machine to build for - :type machine: str - :param ctngdir: The directory holding crosstool-ng - :type ctngdir: ``pathlib.Path`` + Notify users of toolchain command deprecation. """ - os.chdir(dirs.toolchain) - ctng = ctngdir / "ct-ng" - triplet = get_triplet(arch) - archdir = dirs.toolchain / triplet - if archdir.exists(): - print("Toolchain directory exists: {}".format(archdir)) - else: - config = dirs.toolchain_config / machine / "{}-ct-ng.config".format(triplet) - if not config.exists(): - print("Toolchain config missing: {}".format(config)) - sys.exit(1) - with open(config, "r") as rfp: - with open(".config", "w") as wfp: - wfp.write(rfp.read()) - env = os.environ.copy() - env["CT_PREFIX"] = dirs.toolchain - env["CT_ALLOW_BUILD_AS_ROOT"] = "y" - env["CT_ALLOW_BUILD_AS_ROOT_SURE"] = "y" - if CICD: - env["CT_LOG_PROGRESS"] = "n" - runcmd( - [ - str(ctng), - "source", - ], - env=env, - ) - runcmd( - [ - str(ctng), - "build", - ], - env=env, - ) - - -def main(args): - """ - The entrypoint into the ``relenv toolchain`` command. - - :param args: The arguments for the command - :type args: ``argparse.Namespace`` - """ - version = os.environ.get("RELENV_FETCH_VERSION", __version__) - machine = platform.machine() - dirs = work_dirs() - print(f"Toolchain directory: {dirs.toolchain}") - if not dirs.toolchain.exists(): - os.makedirs(dirs.toolchain) - if args.command == "fetch": - fetch(args.arch, dirs.toolchain, args.clean, version) - sys.exit(0) - elif args.command == "build": - ctngdir = dirs.toolchain / "crosstool-ng-{}".format(CT_NG_VER) - _configure_ctng(ctngdir, dirs) - if args.crosstool_only: - sys.exit(0) - build(args.arch, dirs, machine, ctngdir) + print("The relenv toolchain command has been deprecated. Please pip install ppbt.") if __name__ == "__main__": - from argparse import ArgumentParser - - main(ArgumentParser()) + main() From e5192f086fb425efc60fb744dcce1498c5189bf3 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 14:27:17 -0700 Subject: [PATCH 02/41] Add ppbt to build dependencies --- .github/workflows/build-cross-action.yml | 4 ++-- .github/workflows/build-native-action.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-cross-action.yml b/.github/workflows/build-cross-action.yml index cc8b51db..d2120bd7 100644 --- a/.github/workflows/build-cross-action.yml +++ b/.github/workflows/build-cross-action.yml @@ -53,9 +53,9 @@ jobs: - name: Install Dependencies run: | sudo apt-get update - sudo apt-get install -y build-essential bison python3-all patchelf swig python3-virtualenv virtualenv venv - venv/bin/pip3 install nox + sudo apt-get install -y build-essential bison python3-all patchelf swig python3-virtualenv + env/bin/python3 -m pip install nox ppbt - name: Python Version run: | diff --git a/.github/workflows/build-native-action.yml b/.github/workflows/build-native-action.yml index fe431649..09ce1036 100644 --- a/.github/workflows/build-native-action.yml +++ b/.github/workflows/build-native-action.yml @@ -48,9 +48,9 @@ jobs: - name: Install Dependencies run: | sudo apt-get update - sudo apt-get install -y build-essential bison python3-all patchelf swig cmake libldap2-dev libsasl2-dev ldap-utils libssl-dev pkg-config libvirt-dev default-libmysqlclient-dev python3-virtualenv virtualenv venv - venv/bin/pip3 install nox + sudo apt-get install -y build-essential bison python3-all patchelf swig cmake libldap2-dev libsasl2-dev ldap-utils libssl-dev pkg-config libvirt-dev default-libmysqlclient-dev python3-virtualenv + venv/bin/python3 -m pip install nox ppbt - name: Python Version run: | From f4c6afc45e38b4c2ffe8afdca9f9ceb510e2a612 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 14:34:00 -0700 Subject: [PATCH 03/41] Fix ppbt import and extract --- relenv/common.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/relenv/common.py b/relenv/common.py index ce66a837..da6c68aa 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -17,6 +17,11 @@ import threading import time +try: + import ppbt +except ImportError: + ppbt = None + # relenv package version __version__ = "0.19.4" @@ -224,14 +229,14 @@ def get_toolchain(arch=None, root=None): :return: The directory holding the toolchain :rtype: ``pathlib.Path`` """ - import ppbt - - env = ppbt.environ(auto_extract=False) - return pathlib.Path(env["TOOLCHAIN_PATH"]) - # dirs = work_dirs(root) - # if arch: - # return dirs.toolchain / "{}-linux-gnu".format(arch) - # return dirs.toolchain + if sys.platform in ["darwin", "win32"]: + dirs = work_dirs(root) + return dirs.toolchain + if ppbt: + env = ppbt.environ(auto_extract=True) + return pathlib.Path(env["TOOLCHAIN_PATH"]) + else: + raise RuntimeError("Please `pip install ppbt` to build on linux") def get_triplet(machine=None, plat=None): From aa78ec5a959d1ff4689585b513826872b3327be0 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 14:41:06 -0700 Subject: [PATCH 04/41] Fix unit tests --- tests/test_build.py | 6 ++- tests/test_common.py | 4 +- tests/test_toolchain.py | 107 ---------------------------------------- 3 files changed, 6 insertions(+), 111 deletions(-) delete mode 100644 tests/test_toolchain.py diff --git a/tests/test_build.py b/tests/test_build.py index 0fc04825..a46a36ef 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -29,8 +29,10 @@ def test_builder_defaults_linux(): assert builder.prefix == DATA_DIR / "build" / "3.10.10-x86_64-linux-gnu" assert builder.sources == DATA_DIR / "src" assert builder.downloads == DATA_DIR / "download" - assert builder.toolchains == DATA_DIR / "toolchain" - assert builder.toolchain == DATA_DIR / "toolchain" / "x86_64-linux-gnu" + assert "ppbt" in str(builder.toolchains) + assert "_toolchain" in str(builder.toolchains) + assert "ppbt" in str(builder.toolchain) + assert "_toolchain" in str(builder.toolchain) assert callable(builder.build_default) assert callable(builder.populate_env) assert builder.recipies == {} diff --git a/tests/test_common.py b/tests/test_common.py index bac5969c..f2ebc6a2 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -124,14 +124,14 @@ def test_get_toolchain(tmp_path): data_dir = tmp_path / "data" with patch("relenv.common.DATA_DIR", data_dir): ret = get_toolchain(arch="aarch64") - assert ret == data_dir / "toolchain" / "aarch64-linux-gnu" + assert "ppbt" in str(ret) def test_get_toolchain_no_arch(tmp_path): data_dir = tmp_path / "data" with patch("relenv.common.DATA_DIR", data_dir): ret = get_toolchain() - assert ret == data_dir / "toolchain" + assert "ppbt" in str(ret) @pytest.mark.parametrize("open_arg", (":gz", ":xz", ":bz2", "")) diff --git a/tests/test_toolchain.py b/tests/test_toolchain.py deleted file mode 100644 index 66cd1c25..00000000 --- a/tests/test_toolchain.py +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright 2022-2025 Broadcom. -# SPDX-License-Identifier: Apache-2.0 -# -from unittest.mock import call, patch - -import pytest - -from relenv.common import WorkDirs -from relenv.toolchain import _configure_ctng, build, fetch - - -def test_fetch(tmp_path): - archdir = tmp_path / "archdir" - archive = str(tmp_path / "archive") - with patch("relenv.toolchain.get_triplet", return_value="a-fake-triplet"): - with patch("relenv.toolchain.check_url", return_value=True): - with patch("relenv.toolchain.get_toolchain", return_value=archdir): - with patch( - "relenv.toolchain.download_url", return_value=archive - ) as dl_mock: - with patch("relenv.toolchain.extract_archive") as extract_mock: - fetch("fake_arch", "fake_toolchain") - dl_mock.assert_called_once() - extract_mock.assert_called_with("fake_toolchain", archive) - - -def test_fetch_directory_exists(tmp_path): - with patch("relenv.toolchain.get_triplet", return_value="a-fake-triplet"): - with patch("relenv.toolchain.get_toolchain", return_value=tmp_path): - with patch("relenv.toolchain.check_url", return_value=True): - with patch("relenv.toolchain.download_url") as dl_mock: - fetch("fake_arch", "fake_toolchain") - dl_mock.assert_not_called() - - -def test__configure_ctng(tmp_path): - ctngdir = tmp_path / "ctngdir" - ctngdir.mkdir() - data_dir = tmp_path / "data" - root_dir = tmp_path / "root_dir" - with patch("relenv.common.DATA_DIR", data_dir): - with patch("relenv.toolchain.runcmd") as cmd_mock: - dirs = WorkDirs(root=root_dir) - _configure_ctng(ctngdir, dirs) - calls = [call(["./configure", "--enable-local"]), call(["make"])] - cmd_mock.assert_has_calls(calls) - - -def test_build(tmp_path): - ctngdir = tmp_path / "ctngdir" - ctngdir.mkdir() - ctng = ctngdir / "ct-ng" - data_dir = tmp_path / "data" - root_dir = tmp_path / "root_dir" - machine = "fake_machine" - arch = "fake_arch" - triplet = "a-fake-triplet" - with patch("relenv.common.DATA_DIR", data_dir): - with patch("relenv.toolchain.get_triplet", return_value=triplet): - with patch("relenv.toolchain.runcmd") as cmd_mock: - dirs = WorkDirs(root=root_dir) - tc_config_dir = dirs.toolchain_config / machine - tc_config_dir.mkdir(parents=True) - (tc_config_dir / "{}-ct-ng.config".format(triplet)).write_text( - "some text" - ) - dirs.toolchain.mkdir(parents=True) - build(arch, dirs, machine, ctngdir) - assert (dirs.toolchain / ".config").read_text() == "some text" - assert cmd_mock.call_count == 2 - assert cmd_mock.call_args_list[0].args[0] == [str(ctng), "source"] - assert cmd_mock.call_args_list[1].args[0] == [str(ctng), "build"] - - -def test_build_directory_exists(tmp_path): - ctngdir = tmp_path / "ctngdir" - ctngdir.mkdir() - data_dir = tmp_path / "data" - root_dir = tmp_path / "root_dir" - machine = "fake_machine" - arch = "fake_arch" - triplet = "a-fake-triplet" - with patch("relenv.common.DATA_DIR", data_dir): - with patch("relenv.toolchain.get_triplet", return_value=triplet): - with patch("relenv.toolchain.runcmd") as cmd_mock: - dirs = WorkDirs(root=root_dir) - (dirs.toolchain / triplet).mkdir(parents=True) - build(arch, dirs, machine, ctngdir) - cmd_mock.assert_not_called() - - -def test_build_config_doesnt_exist(tmp_path): - ctngdir = tmp_path / "ctngdir" - ctngdir.mkdir() - data_dir = tmp_path / "data" - root_dir = tmp_path / "root_dir" - machine = "fake_machine" - arch = "fake_arch" - triplet = "a-fake-triplet" - with patch("relenv.common.DATA_DIR", data_dir): - with patch("relenv.toolchain.get_triplet", return_value=triplet): - with patch("relenv.toolchain.runcmd") as cmd_mock: - dirs = WorkDirs(root=root_dir) - dirs.toolchain.mkdir(parents=True) - with pytest.raises(SystemExit): - build(arch, dirs, machine, ctngdir) - cmd_mock.assert_not_called() From 019dc3c1e70c65f60b9644e7291aae404c5d0aaf Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 14:43:46 -0700 Subject: [PATCH 05/41] Add no-pretty argument for building --- .github/workflows/build-native-action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-native-action.yml b/.github/workflows/build-native-action.yml index 09ce1036..a2b81174 100644 --- a/.github/workflows/build-native-action.yml +++ b/.github/workflows/build-native-action.yml @@ -59,7 +59,7 @@ jobs: - name: Build run: | - venv/bin/python3 -m relenv build --arch=${{ matrix.target }} --python=${{ matrix.version }} + venv/bin/python3 -m relenv build --no-pretty --arch=${{ matrix.target }} --python=${{ matrix.version }} - name: Verify Build if: ${{ matrix.host == matrix.target }} @@ -119,7 +119,7 @@ jobs: - name: Build run: | - python3 -m relenv build --python=${{ matrix.version }} + python3 -m relenv build --no-pretty --python=${{ matrix.version }} - name: Verify Build run: | @@ -177,7 +177,7 @@ jobs: - name: Build run: | - python3 -m relenv build --python=${{ matrix.version }} + python3 -m relenv build --no-pretty --python=${{ matrix.version }} - name: Verify Build run: | From e567f3c6c35044bf0853db1ef96c0199a771b5f3 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 14:56:07 -0700 Subject: [PATCH 06/41] Add ppbt to test and docs deps --- .github/workflows/docs-action.yml | 2 +- .github/workflows/test-action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs-action.yml b/.github/workflows/docs-action.yml index 270dd977..70826389 100644 --- a/.github/workflows/docs-action.yml +++ b/.github/workflows/docs-action.yml @@ -31,7 +31,7 @@ jobs: - name: Install Nox run: | python -m pip install --upgrade pip - pip install nox + pip install nox ppbt - name: Build Docs run: | diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml index bf845e65..b887d524 100644 --- a/.github/workflows/test-action.yml +++ b/.github/workflows/test-action.yml @@ -32,7 +32,7 @@ jobs: - name: Install python dependencies run: | - pip3 install nox + pip3 install nox ppbt - name: Install Linux dependencies if: ${{ matrix.runs-on == 'linux' }} From a40d327ba89ad5db3c8c88c89c77ed772a136562 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 15:52:12 -0700 Subject: [PATCH 07/41] Add ppbt to test requirements --- noxfile.py | 6 ------ requirements/tests.txt | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/noxfile.py b/noxfile.py index 86f8e1ec..587d5b0b 100644 --- a/noxfile.py +++ b/noxfile.py @@ -47,12 +47,6 @@ def build(session, arch): invoke_relenv(session, "build", f"--arch={arch}") -@nox.session -@nox.parametrize("arch", ("x86_64", "aarch64")) -def toolchain(session, arch): - invoke_relenv(session, "toolchain", "build", f"--arch={arch}") - - # Convenience sessions @nox.session def build_x86_64(session): diff --git a/requirements/tests.txt b/requirements/tests.txt index 238cb017..a46ca0b6 100644 --- a/requirements/tests.txt +++ b/requirements/tests.txt @@ -4,3 +4,4 @@ pytest pytest-skip-markers swig +ppbt From 77cf2bd6eba47000e42fd9a770a41e6bff60bf38 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 20 Sep 2024 15:59:50 -0700 Subject: [PATCH 08/41] Only require ppbt on linux --- requirements/docs.txt | 2 ++ requirements/tests.txt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements/docs.txt b/requirements/docs.txt index 5db24c04..9d522971 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -5,3 +5,5 @@ sphinx sphinx-argparse furo sphinx-mdinclude +ppbt; sys_platform == 'linux' + diff --git a/requirements/tests.txt b/requirements/tests.txt index a46ca0b6..c31bda0d 100644 --- a/requirements/tests.txt +++ b/requirements/tests.txt @@ -4,4 +4,4 @@ pytest pytest-skip-markers swig -ppbt +ppbt; sys_platform == 'linux' From 2a300ac57082ce11ba792e5b948a0f05f5304bfe Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 22 Sep 2024 14:45:41 -0700 Subject: [PATCH 09/41] ppbt is in requirements file --- .github/workflows/docs-action.yml | 2 +- .github/workflows/test-action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs-action.yml b/.github/workflows/docs-action.yml index 70826389..270dd977 100644 --- a/.github/workflows/docs-action.yml +++ b/.github/workflows/docs-action.yml @@ -31,7 +31,7 @@ jobs: - name: Install Nox run: | python -m pip install --upgrade pip - pip install nox ppbt + pip install nox - name: Build Docs run: | diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml index b887d524..bf845e65 100644 --- a/.github/workflows/test-action.yml +++ b/.github/workflows/test-action.yml @@ -32,7 +32,7 @@ jobs: - name: Install python dependencies run: | - pip3 install nox ppbt + pip3 install nox - name: Install Linux dependencies if: ${{ matrix.runs-on == 'linux' }} From 64e997f95701777722878f08b4de51190dbc10c5 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 21 Oct 2024 13:45:11 -0700 Subject: [PATCH 10/41] Fix unit test on non linux platforms --- tests/test_common.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_common.py b/tests/test_common.py index f2ebc6a2..b6cda08b 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -124,14 +124,20 @@ def test_get_toolchain(tmp_path): data_dir = tmp_path / "data" with patch("relenv.common.DATA_DIR", data_dir): ret = get_toolchain(arch="aarch64") - assert "ppbt" in str(ret) + if sys.platform in ["darwin", "win32"]: + assert "data" in str(ret) + else: + assert "ppbt" in str(ret) def test_get_toolchain_no_arch(tmp_path): data_dir = tmp_path / "data" with patch("relenv.common.DATA_DIR", data_dir): ret = get_toolchain() - assert "ppbt" in str(ret) + if sys.platform in ["darwin", "win32"]: + assert "data" in str(ret) + else: + assert "ppbt" in str(ret) @pytest.mark.parametrize("open_arg", (":gz", ":xz", ":bz2", "")) From c7b087870a6c5e058848b70847a4a934a7bb93e8 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 21 Oct 2024 16:54:10 -0700 Subject: [PATCH 11/41] fix tests/test_verify_build.py::test_pip_install_salt_git --- relenv/build/common.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/relenv/build/common.py b/relenv/build/common.py index da2270bb..343aabd3 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -78,7 +78,9 @@ SYSCONFIGDATA = """ -import pathlib, sys, platform, os +import pathlib, sys, platform, os, logging + +log = logging.getLogger(__name__) def build_arch(): machine = platform.machine() @@ -112,7 +114,22 @@ def get_triplet(machine=None, plat=None): DATA_DIR = DEFAULT_DATA_DIR buildroot = pydir.parent.parent -toolchain = DATA_DIR / "toolchain" / get_triplet() + +if sys.platform == "linux": + toolchain = "" + ppbt = None + try: + import ppbt + except ImportError: + pass + if ppbt: + env = ppbt.environ(auto_extract=True) + toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) + else: + log.warning("ppbt package not installed") +else: + toolchain = DATA_DIR / "toolchain" / get_triplet() + build_time_vars = {} for key in _build_time_vars: val = _build_time_vars[key] From 264ca63f45ea7bab8c628eeb56708491049ee222 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 28 Feb 2025 00:12:22 -0700 Subject: [PATCH 12/41] Fix command order --- .github/workflows/build-native-action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-native-action.yml b/.github/workflows/build-native-action.yml index a2b81174..0edb4aab 100644 --- a/.github/workflows/build-native-action.yml +++ b/.github/workflows/build-native-action.yml @@ -48,8 +48,8 @@ jobs: - name: Install Dependencies run: | sudo apt-get update + sudo apt-get install -y build-essential bison python3-all patchelf swig cmake libldap2-dev libsasl2-dev ldap-utils libssl-dev pkg-config libvirt-dev default-libmysqlclient-dev python3-virtualenv virtualenv venv - sudo apt-get install -y build-essential bison python3-all patchelf swig cmake libldap2-dev libsasl2-dev ldap-utils libssl-dev pkg-config libvirt-dev default-libmysqlclient-dev python3-virtualenv venv/bin/python3 -m pip install nox ppbt - name: Python Version From 4c3ba4449c3066faecf90026c23ab59ab1d9168d Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 28 Feb 2025 14:26:46 -0700 Subject: [PATCH 13/41] Move cargo home directory to relenv data dir Migrating cargo home from relenv's toolchain directory which has been removed to relenv's data directory. --- relenv/buildenv.py | 24 ++++++++++++++++++------ relenv/common.py | 1 + relenv/runtime.py | 33 +++++++++++++++++++++++++++++---- tests/test_verify_build.py | 24 +++++++++++++++--------- 4 files changed, 63 insertions(+), 19 deletions(-) diff --git a/relenv/buildenv.py b/relenv/buildenv.py index 8a28e1d6..5f4c2f7b 100644 --- a/relenv/buildenv.py +++ b/relenv/buildenv.py @@ -3,10 +3,16 @@ """ Helper for building libraries to install into a relenv environment. """ +import json import logging import sys -from .common import MACOS_DEVELOPMENT_TARGET, RelenvException, get_triplet, work_dirs +from .common import ( + MACOS_DEVELOPMENT_TARGET, + RelenvException, + get_toolchain, + get_triplet, +) log = logging.getLogger() @@ -22,6 +28,12 @@ def setup_parser(subparsers): "buildenv", description="Relenv build environment" ) subparser.set_defaults(func=main) + subparser.add_argument( + "--json", + default=False, + action="store_true", + help=("Output json to stdout instead of export statments"), + ) def is_relenv(): @@ -43,9 +55,8 @@ def buildenv(relenv_path=None): if sys.platform != "linux": raise RelenvException("buildenv is only supported on Linux") - dirs = work_dirs() triplet = get_triplet() - toolchain = dirs.toolchain / get_triplet() + toolchain = get_toolchain() env = { "RELENV_BUILDENV": "1", "TOOLCHAIN_PATH": f"{toolchain}", @@ -90,12 +101,13 @@ def main(args): if sys.platform != "linux": log.error("buildenv is only supported on Linux.") - # dirs = work_dirs() - # triplet = get_triplet() - # toolchain = dirs.toolchain / get_triplet() + if args.json: + print(json.dumps(buildenv())) + sys.exit(0) script = "" for k, v in buildenv().items(): script += f'export {k}="{v}"\n' print(script) + sys.exit(0) diff --git a/relenv/common.py b/relenv/common.py index da6c68aa..d221a227 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -165,6 +165,7 @@ class WorkDirs: def __init__(self, root): self.root = root + self.data = DATA_DIR self.toolchain_config = work_dir("toolchain", self.root) self.toolchain = work_dir("toolchain", DATA_DIR) self.build = work_dir("build", DATA_DIR) diff --git a/relenv/runtime.py b/relenv/runtime.py index 0888d8f3..0d19c761 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -602,7 +602,20 @@ def wrap(func): @functools.wraps(func) def wrapper(*args, **kwargs): dirs = common().work_dirs() - toolchain = dirs.toolchain / common().get_triplet() + cargo_home = str(dirs.data / "cargo") + # toolchain = dirs.toolchain / common().get_triplet() + ppbt = None + try: + import ppbt + except ImportError: + pass + if ppbt: + env = ppbt.environ(auto_extract=True) + toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) + else: + debug("ppbt package not installed") + return func(*args, **kwargs) + if not toolchain.exists(): debug("Unable to set CARGO_HOME no toolchain exists") else: @@ -612,7 +625,6 @@ def wrapper(*args, **kwargs): f"-C link-arg=-L{relenvroot}/lib " f"-C link-arg=-L{toolchain}/sysroot/lib" ) - cargo_home = str(toolchain / "cargo") set_env_if_not_set("CARGO_HOME", cargo_home) set_env_if_not_set("OPENSSL_DIR", relenvroot) set_env_if_not_set("RUSTFLAGS", rustflags) @@ -827,11 +839,24 @@ def install_cargo_config(): return triplet = common().get_triplet() dirs = common().work_dirs() - toolchain = dirs.toolchain / triplet + + ppbt = None + try: + import ppbt + except ImportError: + pass + if ppbt: + env = ppbt.environ(auto_extract=True) + toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) + else: + debug("Unable to set CARGO_HOME ppbt package not installed") + return + if not toolchain.exists(): debug("Unable to set CARGO_HOME no toolchain exists") return - cargo_home = toolchain / "cargo" + + cargo_home = dirs.data / "cargo" if not cargo_home.exists(): cargo_home.mkdir() cargo_config = cargo_home / "config.toml" diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index 91a3b649..2b606744 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -4,6 +4,7 @@ """ Verify relenv builds. """ +import json import os import pathlib import platform @@ -16,7 +17,7 @@ import packaging import pytest -from relenv.common import DATA_DIR, build_arch, get_triplet +from relenv.common import build_arch, get_triplet from .conftest import get_build_version @@ -611,6 +612,17 @@ def test_pip_install_m2crypto_relenv_ssl( ): if m2crypto_version == "0.38.0" and minor_version in ["3.12", "3.13"]: pytest.xfail("Fails due to no distutils") + p = subprocess.run( + [ + pyexec, + "-m", + "relenv", + "buildenv", + "--json", + ], + capture_output=True, + ) + buildenv = json.loads(p.stdout) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["RELENV_DEBUG"] = "yes" @@ -632,13 +644,7 @@ def test_pip_install_m2crypto_relenv_ssl( stderr=subprocess.PIPE, ) assert p.returncode == 0, "Failed to pip install m2crypto" - gcc = str( - pathlib.Path(DATA_DIR) - / "toolchain" - / f"{get_triplet()}" - / "bin" - / f"{get_triplet()}-gcc" - ) + gcc = str(pathlib.Path(buildenv["TOOLCHAIN_PATH"]) / "bin" / f"{get_triplet()}-gcc") include = str(pathlib.Path(build) / "include") found_include = False for _ in p.stderr.splitlines(): @@ -647,7 +653,7 @@ def test_pip_install_m2crypto_relenv_ssl( for arg in line.split(): if arg == f"-I{include}": found_include = True - assert found_include + assert found_include, f"{include}\n{p.stderr.decode()}" p = subprocess.run( [str(pyexec), "-c", "import M2Crypto"], env=env, From f6a5dae1d70985708e82473c79818ab694cc3474 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 02:40:42 -0700 Subject: [PATCH 14/41] Make ppbt optional --- relenv/build/common.py | 7 +- relenv/buildenv.py | 5 +- relenv/runtime.py | 3 +- relenv/toolchain.py | 4 +- setup.cfg | 1 - tests/test_verify_build.py | 146 ++++++++++++++++++++++++++++++++++++- 6 files changed, 156 insertions(+), 10 deletions(-) diff --git a/relenv/build/common.py b/relenv/build/common.py index 343aabd3..c7f26a0f 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -125,8 +125,8 @@ def get_triplet(machine=None, plat=None): if ppbt: env = ppbt.environ(auto_extract=True) toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) - else: - log.warning("ppbt package not installed") + #else: + # log.warning("ppbt package not installed") else: toolchain = DATA_DIR / "toolchain" / get_triplet() @@ -1488,6 +1488,9 @@ def find_pythonlib(libdir): env["RELENV_CROSS"] = dirs.prefix python = env["RELENV_NATIVE_PY"] logfp.write("\nRUN ENSURE PIP\n") + + env.pop("RELENV_BUILDENV") + runcmd( [str(python), "-m", "ensurepip"], env=env, diff --git a/relenv/buildenv.py b/relenv/buildenv.py index 5f4c2f7b..0af9a31b 100644 --- a/relenv/buildenv.py +++ b/relenv/buildenv.py @@ -55,8 +55,11 @@ def buildenv(relenv_path=None): if sys.platform != "linux": raise RelenvException("buildenv is only supported on Linux") - triplet = get_triplet() toolchain = get_toolchain() + if not toolchain: + raise RelenvException("buildenv is only supported on Linux") + + triplet = get_triplet() env = { "RELENV_BUILDENV": "1", "TOOLCHAIN_PATH": f"{toolchain}", diff --git a/relenv/runtime.py b/relenv/runtime.py index 0d19c761..4af9da9c 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -613,7 +613,8 @@ def wrapper(*args, **kwargs): env = ppbt.environ(auto_extract=True) toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) else: - debug("ppbt package not installed") + if os.environ.get("RELENV_BUILDENV", 0): + raise RuntimeError("No toolchain installed") return func(*args, **kwargs) if not toolchain.exists(): diff --git a/relenv/toolchain.py b/relenv/toolchain.py index f4af2f18..18db7391 100644 --- a/relenv/toolchain.py +++ b/relenv/toolchain.py @@ -20,7 +20,9 @@ def main(*args, **kwargs): """ Notify users of toolchain command deprecation. """ - print("The relenv toolchain command has been deprecated. Please pip install ppbt.") + print( + "The relenv toolchain command has been deprecated. Please pip install relenv[toolchain]." + ) if __name__ == "__main__": diff --git a/setup.cfg b/setup.cfg index 16579870..06df52f6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -18,7 +18,6 @@ package_dir = relenv = relenv include_package_data = True - [options.entry_points] console_scripts = relenv = relenv.__main__:main diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index 2b606744..23d73b6c 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -130,10 +130,14 @@ def test_pip_install_salt_git(pipexec, build, build_dir, pyexec, build_version): if sys.platform == "darwin" and "3.13" in build_version: pytest.xfail("Salt does not work with 3.13 on macos yet") - # if sys.platform == "linux": - # subprocess.run( - # [pipexec, "--upgrade", "install", "setuptools>=72.2.0"], check=True - # ) + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" @@ -174,6 +178,15 @@ def test_pip_install_salt_git(pipexec, build, build_dir, pyexec, build_version): reason="3.11.7 and greater will not work with 3005.x", ) def test_pip_install_salt(pipexec, build, tmp_path, pyexec): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + packages = [ "salt==3005", ] @@ -199,6 +212,15 @@ def test_pip_install_salt(pipexec, build, tmp_path, pyexec): @pytest.mark.skip_on_windows def test_symlinked_scripts(pipexec, tmp_path, build): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + name = "chardet==5.1.0" env = os.environ.copy() env["RELENV_DEBUG"] = "yes" @@ -238,6 +260,15 @@ def test_pip_install_salt_w_static_requirements( if salt_branch == "3006.x" and sys.platform == "win32": pytest.xfail("Known failure") + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["USE_STATIC_REQUIREMENTS"] = "1" @@ -297,6 +328,15 @@ def test_pip_install_salt_w_package_requirements( if sys.platform == "darwin" and salt_branch == "3006.x": pytest.xfail("Known failure") + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["USE_STATIC_REQUIREMENTS"] = "1" @@ -396,6 +436,15 @@ def test_pip_install_pyzmq(pipexec, pyzmq_version, build_version, arch, build): if pyzmq_version == "26.4.0" and sys.platform == "win32": pytest.xfail("Needs troubleshooting 4/12/25") + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + env = os.environ.copy() p = subprocess.run( @@ -456,6 +505,14 @@ def test_pip_install_cryptography(pipexec): packages = [ "cryptography", ] + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" for name in packages: @@ -467,6 +524,14 @@ def test_pip_install_idem(pipexec): packages = [ "idem", ] + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" for name in packages: @@ -476,6 +541,14 @@ def test_pip_install_idem(pipexec): def test_pip_install_and_import_libcloud(pipexec, pyexec): name = "apache-libcloud" + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" p = subprocess.run([str(pipexec), "install", name, "--no-cache-dir"], env=env) @@ -501,6 +574,14 @@ def test_pip_install_salt_pip_dir(pipexec, build, build_version, arch): if sys.platform == "darwin" and "3.13" in build_version: pytest.xfail("Salt does not work with 3.13 on macos yet") + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["RELENV_DEBUG"] = "yes" @@ -518,6 +599,14 @@ def test_pip_install_salt_pip_dir(pipexec, build, build_version, arch): def test_nox_virtualenvs(pipexec, build, tmp_path): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["RELENV_DEBUG"] = "yes" @@ -612,6 +701,14 @@ def test_pip_install_m2crypto_relenv_ssl( ): if m2crypto_version == "0.38.0" and minor_version in ["3.12", "3.13"]: pytest.xfail("Fails due to no distutils") + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" p = subprocess.run( [ pyexec, @@ -691,6 +788,14 @@ def validate_shebang(path): # XXX Mac support @pytest.mark.skip_unless_on_linux def test_moving_pip_installed_c_extentions(pipexec, build, minor_version): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_DEBUG"] = "yes" env["RELENV_BUILDENV"] = "yes" @@ -720,6 +825,15 @@ def test_moving_pip_installed_c_extentions(pipexec, build, minor_version): @pytest.mark.skip_unless_on_linux @pytest.mark.parametrize("cryptography_version", ["40.0.1", "39.0.2"]) def test_cryptography_rpath(pipexec, build, minor_version, cryptography_version): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + def find_library(path, search): for root, dirs, files in os.walk(path): for fname in files: @@ -786,6 +900,14 @@ def find_library(path, search): @pytest.mark.skip_unless_on_linux def test_install_pycurl(pipexec, build): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" curlver = "8.0.1" # Build curl and install it into the relenv environment @@ -882,6 +1004,14 @@ def build_dir(tmp_path): ], ) def test_install_libgit2(pipexec, build, minor_version, build_dir, versions): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" buildscript = textwrap.dedent( """\ @@ -958,6 +1088,14 @@ def test_install_libgit2(pipexec, build, minor_version, build_dir, versions): @pytest.mark.skip_unless_on_linux def test_install_python_ldap(pipexec, build): + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" saslver = "2.1.28" ldapver = "2.5.14" From d001c34b934437d1323a70492dd9e731b4fd17c0 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 03:01:41 -0700 Subject: [PATCH 15/41] Skip ppbt when not on linux --- tests/test_verify_build.py | 160 +++++++------------------------------ 1 file changed, 31 insertions(+), 129 deletions(-) diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index 23d73b6c..7742dee7 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -48,6 +48,19 @@ def setup(pth_file_path): """ +def _install_ppbt(pipexec): + if sys.platform in ["win32", "darwin"]: + return + p = subprocess.run( + [ + str(pipexec), + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" + + @pytest.fixture(scope="module") def arch(): return build_arch() @@ -130,14 +143,7 @@ def test_pip_install_salt_git(pipexec, build, build_dir, pyexec, build_version): if sys.platform == "darwin" and "3.13" in build_version: pytest.xfail("Salt does not work with 3.13 on macos yet") - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" @@ -178,14 +184,8 @@ def test_pip_install_salt_git(pipexec, build, build_dir, pyexec, build_version): reason="3.11.7 and greater will not work with 3005.x", ) def test_pip_install_salt(pipexec, build, tmp_path, pyexec): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + + _install_ppbt(pipexec) packages = [ "salt==3005", @@ -212,14 +212,7 @@ def test_pip_install_salt(pipexec, build, tmp_path, pyexec): @pytest.mark.skip_on_windows def test_symlinked_scripts(pipexec, tmp_path, build): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) name = "chardet==5.1.0" env = os.environ.copy() @@ -260,14 +253,7 @@ def test_pip_install_salt_w_static_requirements( if salt_branch == "3006.x" and sys.platform == "win32": pytest.xfail("Known failure") - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" @@ -328,14 +314,7 @@ def test_pip_install_salt_w_package_requirements( if sys.platform == "darwin" and salt_branch == "3006.x": pytest.xfail("Known failure") - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" @@ -436,14 +415,7 @@ def test_pip_install_pyzmq(pipexec, pyzmq_version, build_version, arch, build): if pyzmq_version == "26.4.0" and sys.platform == "win32": pytest.xfail("Needs troubleshooting 4/12/25") - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() @@ -502,17 +474,10 @@ def test_pip_install_pyzmq(pipexec, pyzmq_version, build_version, arch, build): def test_pip_install_cryptography(pipexec): + _install_ppbt(pipexec) packages = [ "cryptography", ] - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" for name in packages: @@ -521,17 +486,10 @@ def test_pip_install_cryptography(pipexec): def test_pip_install_idem(pipexec): + _install_ppbt(pipexec) packages = [ "idem", ] - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" for name in packages: @@ -574,14 +532,7 @@ def test_pip_install_salt_pip_dir(pipexec, build, build_version, arch): if sys.platform == "darwin" and "3.13" in build_version: pytest.xfail("Salt does not work with 3.13 on macos yet") - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["RELENV_DEBUG"] = "yes" @@ -599,14 +550,7 @@ def test_pip_install_salt_pip_dir(pipexec, build, build_version, arch): def test_nox_virtualenvs(pipexec, build, tmp_path): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" env["RELENV_DEBUG"] = "yes" @@ -701,14 +645,9 @@ def test_pip_install_m2crypto_relenv_ssl( ): if m2crypto_version == "0.38.0" and minor_version in ["3.12", "3.13"]: pytest.xfail("Fails due to no distutils") - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + + _install_ppbt(pipexec) + p = subprocess.run( [ pyexec, @@ -788,14 +727,7 @@ def validate_shebang(path): # XXX Mac support @pytest.mark.skip_unless_on_linux def test_moving_pip_installed_c_extentions(pipexec, build, minor_version): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_DEBUG"] = "yes" env["RELENV_BUILDENV"] = "yes" @@ -825,14 +757,7 @@ def test_moving_pip_installed_c_extentions(pipexec, build, minor_version): @pytest.mark.skip_unless_on_linux @pytest.mark.parametrize("cryptography_version", ["40.0.1", "39.0.2"]) def test_cryptography_rpath(pipexec, build, minor_version, cryptography_version): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) def find_library(path, search): for root, dirs, files in os.walk(path): @@ -900,14 +825,7 @@ def find_library(path, search): @pytest.mark.skip_unless_on_linux def test_install_pycurl(pipexec, build): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) curlver = "8.0.1" # Build curl and install it into the relenv environment @@ -1004,15 +922,6 @@ def build_dir(tmp_path): ], ) def test_install_libgit2(pipexec, build, minor_version, build_dir, versions): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" - buildscript = textwrap.dedent( """\ set -e @@ -1088,14 +997,7 @@ def test_install_libgit2(pipexec, build, minor_version, build_dir, versions): @pytest.mark.skip_unless_on_linux def test_install_python_ldap(pipexec, build): - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" + _install_ppbt(pipexec) saslver = "2.1.28" ldapver = "2.5.14" From 7a3cd19c622c51e0ea0bbd0cf1d46497bf7d6b30 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 03:18:38 -0700 Subject: [PATCH 16/41] Do not raise missing ppbt unless on linux --- relenv/runtime.py | 2 +- tests/test_verify_build.py | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/relenv/runtime.py b/relenv/runtime.py index 4af9da9c..c7f67784 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -613,7 +613,7 @@ def wrapper(*args, **kwargs): env = ppbt.environ(auto_extract=True) toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) else: - if os.environ.get("RELENV_BUILDENV", 0): + if sys.platform == "linux" and os.environ.get("RELENV_BUILDENV", 0): raise RuntimeError("No toolchain installed") return func(*args, **kwargs) diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index 7742dee7..f5b30a94 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -498,15 +498,8 @@ def test_pip_install_idem(pipexec): def test_pip_install_and_import_libcloud(pipexec, pyexec): + _install_ppbt(pipexec) name = "apache-libcloud" - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) - assert p.returncode == 0, "Failed to install ppbt" env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" p = subprocess.run([str(pipexec), "install", name, "--no-cache-dir"], env=env) From 653be02a0d96d2b8674e26930b935e1287441880 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 14:12:14 -0700 Subject: [PATCH 17/41] Clean up and simplify --- .github/workflows/build-cross-action.yml | 2 +- .github/workflows/ci.yml | 10 ---------- relenv/common.py | 15 +++++--------- relenv/runtime.py | 25 +++++------------------- 4 files changed, 11 insertions(+), 41 deletions(-) diff --git a/.github/workflows/build-cross-action.yml b/.github/workflows/build-cross-action.yml index d2120bd7..34ebf235 100644 --- a/.github/workflows/build-cross-action.yml +++ b/.github/workflows/build-cross-action.yml @@ -53,8 +53,8 @@ jobs: - name: Install Dependencies run: | sudo apt-get update - virtualenv venv sudo apt-get install -y build-essential bison python3-all patchelf swig python3-virtualenv + virtualenv venv env/bin/python3 -m pip install nox ppbt - name: Python Version diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 407dc72a..939dcd6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,16 +88,6 @@ jobs: - get-changed-files uses: ./.github/workflows/test-fips-action.yml - #build-cross: - # name: Python Cross Builds - # uses: ./.github/workflows/build-action.yml - # needs: - # - get-changed-files - # - build-native - # with: - # changed-files: ${{ needs.get-changed-files.outputs.changed-files }} - # kind: "cross" - test: name: Test needs: diff --git a/relenv/common.py b/relenv/common.py index d221a227..3a5e7dcd 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -17,11 +17,6 @@ import threading import time -try: - import ppbt -except ImportError: - ppbt = None - # relenv package version __version__ = "0.19.4" @@ -230,14 +225,14 @@ def get_toolchain(arch=None, root=None): :return: The directory holding the toolchain :rtype: ``pathlib.Path`` """ - if sys.platform in ["darwin", "win32"]: - dirs = work_dirs(root) - return dirs.toolchain + + ppbt = None + + import ppbt + if ppbt: env = ppbt.environ(auto_extract=True) return pathlib.Path(env["TOOLCHAIN_PATH"]) - else: - raise RuntimeError("Please `pip install ppbt` to build on linux") def get_triplet(machine=None, plat=None): diff --git a/relenv/runtime.py b/relenv/runtime.py index c7f67784..214d9e67 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -603,18 +603,10 @@ def wrap(func): def wrapper(*args, **kwargs): dirs = common().work_dirs() cargo_home = str(dirs.data / "cargo") - # toolchain = dirs.toolchain / common().get_triplet() - ppbt = None - try: - import ppbt - except ImportError: - pass - if ppbt: - env = ppbt.environ(auto_extract=True) - toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) + toolchain = common().get_toolchain(extract=True) + if not toolchain and sys.platform == "linux" and os.environ.get("RELENV_BUILDENV", 0): + raise RuntimeError("No toolchain installed") else: - if sys.platform == "linux" and os.environ.get("RELENV_BUILDENV", 0): - raise RuntimeError("No toolchain installed") return func(*args, **kwargs) if not toolchain.exists(): @@ -841,15 +833,8 @@ def install_cargo_config(): triplet = common().get_triplet() dirs = common().work_dirs() - ppbt = None - try: - import ppbt - except ImportError: - pass - if ppbt: - env = ppbt.environ(auto_extract=True) - toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) - else: + toolchain = common().get_toolchain() + if not toolchain: debug("Unable to set CARGO_HOME ppbt package not installed") return From 028ed1b3866c93708363d73f8f9aeb6e2c5bf93a Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 14:30:19 -0700 Subject: [PATCH 18/41] Wrap ppbt import in exception handler --- relenv/build/common.py | 2 ++ relenv/common.py | 6 ++++-- relenv/runtime.py | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/relenv/build/common.py b/relenv/build/common.py index c7f26a0f..5b87f160 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -878,6 +878,8 @@ def set_arch(self, arch): self.toolchain = None else: self.toolchain = get_toolchain(self.arch, self.dirs.root) + if not self.toolchain: + raise RuntimeError("No toolchain found") @property def _triplet(self): diff --git a/relenv/common.py b/relenv/common.py index 3a5e7dcd..f2fd77a0 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -225,10 +225,12 @@ def get_toolchain(arch=None, root=None): :return: The directory holding the toolchain :rtype: ``pathlib.Path`` """ - ppbt = None - import ppbt + try: + import ppbt + except ImportError: + pass if ppbt: env = ppbt.environ(auto_extract=True) diff --git a/relenv/runtime.py b/relenv/runtime.py index 214d9e67..791ed36b 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -604,7 +604,11 @@ def wrapper(*args, **kwargs): dirs = common().work_dirs() cargo_home = str(dirs.data / "cargo") toolchain = common().get_toolchain(extract=True) - if not toolchain and sys.platform == "linux" and os.environ.get("RELENV_BUILDENV", 0): + if ( + not toolchain + and sys.platform == "linux" + and os.environ.get("RELENV_BUILDENV", 0) + ): raise RuntimeError("No toolchain installed") else: return func(*args, **kwargs) From 460e9bd86529f2554be484019b4b225542253392 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 14:31:58 -0700 Subject: [PATCH 19/41] Fix function call --- relenv/runtime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relenv/runtime.py b/relenv/runtime.py index 791ed36b..1230c547 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -603,7 +603,7 @@ def wrap(func): def wrapper(*args, **kwargs): dirs = common().work_dirs() cargo_home = str(dirs.data / "cargo") - toolchain = common().get_toolchain(extract=True) + toolchain = common().get_toolchain() if ( not toolchain and sys.platform == "linux" From 5135586bb7bc37d0282fe656151a959633aba831 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 15:08:58 -0700 Subject: [PATCH 20/41] Log detected version --- tests/conftest.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index fb871c6d..635cf41d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -25,7 +25,9 @@ def get_build_version(): if sysplat == sys.platform and arch == platform.machine().lower(): versions.append(version) if versions: - return versions[0] + version = versions[0] + log.warn("Environment RELENV_PY_VERSION not set, detected version %s", version) + return version def pytest_report_header(config): From d58dce604177aa830357f6193748ad07fd869314 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 15:09:20 -0700 Subject: [PATCH 21/41] Fix build unit test --- tests/test_build.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_build.py b/tests/test_build.py index a46a36ef..b151831a 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -29,8 +29,6 @@ def test_builder_defaults_linux(): assert builder.prefix == DATA_DIR / "build" / "3.10.10-x86_64-linux-gnu" assert builder.sources == DATA_DIR / "src" assert builder.downloads == DATA_DIR / "download" - assert "ppbt" in str(builder.toolchains) - assert "_toolchain" in str(builder.toolchains) assert "ppbt" in str(builder.toolchain) assert "_toolchain" in str(builder.toolchain) assert callable(builder.build_default) From 18578edcc898fc0eafbde8395cab90ea722de6c3 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 15:09:39 -0700 Subject: [PATCH 22/41] Cleaner syntax --- .github/workflows/build-native-action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-native-action.yml b/.github/workflows/build-native-action.yml index 0edb4aab..9966d7d8 100644 --- a/.github/workflows/build-native-action.yml +++ b/.github/workflows/build-native-action.yml @@ -76,7 +76,7 @@ jobs: - name: "Upload artifact: build/${{ matrix.version }}-${{ matrix.target }}-linux-gnu.tar.xz" uses: actions/upload-artifact@v4 - if: ${{ matrix.host == matrix.target && always()}} + if: ${{ matrix.host == matrix.target && always() }} with: name: ${{ matrix.version }}-${{ matrix.target }}-linux-gnu.tar.xz path: build/${{ matrix.version }}-${{ matrix.target }}-linux-gnu.tar.xz From ec477ed655c4aad8c4bdf406c785a5079b704916 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 1 Mar 2025 15:33:36 -0700 Subject: [PATCH 23/41] run ppbt extract to test why cryptography failes --- relenv/build/common.py | 23 +++++++++++------------ relenv/common.py | 2 ++ relenv/runtime.py | 27 ++++++++++++++++----------- tests/test_verify_build.py | 15 +++++++++++---- 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/relenv/build/common.py b/relenv/build/common.py index 5b87f160..277df6f2 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -125,8 +125,8 @@ def get_triplet(machine=None, plat=None): if ppbt: env = ppbt.environ(auto_extract=True) toolchain = pathlib.Path(env["TOOLCHAIN_PATH"]) - #else: - # log.warning("ppbt package not installed") + else: + print("ppbt package not installed") else: toolchain = DATA_DIR / "toolchain" / get_triplet() @@ -878,8 +878,6 @@ def set_arch(self, arch): self.toolchain = None else: self.toolchain = get_toolchain(self.arch, self.dirs.root) - if not self.toolchain: - raise RuntimeError("No toolchain found") @property def _triplet(self): @@ -1211,7 +1209,11 @@ def check_prereqs(self): :rtype: list """ fail = [] - if self.toolchain and not self.toolchain.exists(): + if ( + sys.platform == "linux" + and not self.toolchain + or not self.toolchain.exists() + ): fail.append( f"Toolchain for {self.arch} does not exist. Please pip install ppbt." ) @@ -1601,9 +1603,8 @@ def create_archive(tarfp, toarchive, globs, logfp=None): :param logfp: A pointer to the log file :type logfp: file """ - if logfp is None: - log.info("Current directory %s", os.getcwd()) - log.info("Creating archive %s", tarfp.name) + log.debug("Current directory %s", os.getcwd()) + log.debug("Creating archive %s", tarfp.name) for root, _dirs, files in os.walk(toarchive): relroot = pathlib.Path(root).relative_to(toarchive) for f in files: @@ -1614,9 +1615,7 @@ def create_archive(tarfp, toarchive, globs, logfp=None): matches = True break if matches: - if logfp is None: - log.info("Adding %s", relpath) + log.debug("Adding %s", relpath) tarfp.add(relpath, relpath, recursive=False) else: - if logfp is None: - log.info("Skipping %s", relpath) + log.debug("Skipping %s", relpath) diff --git a/relenv/common.py b/relenv/common.py index f2fd77a0..1adc974c 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -225,6 +225,8 @@ def get_toolchain(arch=None, root=None): :return: The directory holding the toolchain :rtype: ``pathlib.Path`` """ + if sys.platform != "linux": + return DATA_DIR ppbt = None try: diff --git a/relenv/runtime.py b/relenv/runtime.py index 1230c547..68568150 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -21,6 +21,7 @@ import site import subprocess import sys +import tempfile import textwrap import warnings @@ -601,16 +602,16 @@ def wrap_pip_build_wheel(name): def wrap(func): @functools.wraps(func) def wrapper(*args, **kwargs): - dirs = common().work_dirs() - cargo_home = str(dirs.data / "cargo") + # dirs = common().work_dirs() + # import tempfile + # tmpdir = tempfile.TemporaryDirectory(prefix='relenvcargo') + # cargo_home = tmpdir.name #str(dirs.data / "cargo") + cargo_home = install_cargo_config.tmpdir.name + # cargo_home = str(dirs.data / "cargo") toolchain = common().get_toolchain() - if ( - not toolchain - and sys.platform == "linux" - and os.environ.get("RELENV_BUILDENV", 0) - ): - raise RuntimeError("No toolchain installed") - else: + if not toolchain: + if sys.platform == "linux" and os.environ.get("RELENV_BUILDENV", 0): + raise RuntimeError("No toolchain installed") return func(*args, **kwargs) if not toolchain.exists(): @@ -834,8 +835,12 @@ def install_cargo_config(): """ if sys.platform != "linux": return + + install_cargo_config.tmpdir = tempfile.TemporaryDirectory(prefix="relenvcargo") + cargo_home = pathlib.Path(install_cargo_config.tmpdir.name) + triplet = common().get_triplet() - dirs = common().work_dirs() + # dirs = common().work_dirs() toolchain = common().get_toolchain() if not toolchain: @@ -846,7 +851,7 @@ def install_cargo_config(): debug("Unable to set CARGO_HOME no toolchain exists") return - cargo_home = dirs.data / "cargo" + # cargo_home = dirs.data / "cargo" if not cargo_home.exists(): cargo_home.mkdir() cargo_config = cargo_home / "config.toml" diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index f5b30a94..dd30e427 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -1,5 +1,4 @@ -# Copyright 2025 Broadcom. -# Copyright 2022-2024 VMware, Inc. +# Copyright 2022-2025 Broadcom. # SPDX-License-Identifier: Apache-2 """ Verify relenv builds. @@ -749,8 +748,15 @@ def test_moving_pip_installed_c_extentions(pipexec, build, minor_version): @pytest.mark.skip_unless_on_linux @pytest.mark.parametrize("cryptography_version", ["40.0.1", "39.0.2"]) -def test_cryptography_rpath(pipexec, build, minor_version, cryptography_version): +def test_cryptography_rpath( + pyexec, pipexec, build, minor_version, cryptography_version +): _install_ppbt(pipexec) + # log.warn("Extract ppbt") + # p = subprocess.run( + # [pyexec, "-c", "import ppbt; ppbt.extract()"], + # ) + # assert p.returncode == 0 def find_library(path, search): for root, dirs, files in os.walk(path): @@ -764,6 +770,7 @@ def find_library(path, search): [ str(pipexec), "install", + "-v", f"cryptography=={cryptography_version}", "--no-cache-dir", "--no-binary=cryptography", @@ -813,7 +820,7 @@ def find_library(path, search): if "GLIBC_2.33" in line: valid = False break - assert valid + assert valid, p.stdout.decode() @pytest.mark.skip_unless_on_linux From c5b65b69d821f73374d7a4ab66b7d637111dc941 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 2 Mar 2025 14:49:34 -0700 Subject: [PATCH 24/41] Do not hide errors --- relenv/__main__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/relenv/__main__.py b/relenv/__main__.py index 50757d0f..8857159f 100644 --- a/relenv/__main__.py +++ b/relenv/__main__.py @@ -47,10 +47,9 @@ def main(): """ parser = setup_cli() args = parser.parse_args() - # args.func(args) - try: + if hasattr(args, 'func'): args.func(args) - except AttributeError: + else: parser.print_help() parser.exit(1, "\nNo subcommand given...\n\n") From 6d96af53178f06067682eb825c91c88f727a6524 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 2 Mar 2025 14:49:51 -0700 Subject: [PATCH 25/41] Toolchains only exist on linux --- relenv/build/common.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/relenv/build/common.py b/relenv/build/common.py index 277df6f2..985481c4 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -1209,14 +1209,11 @@ def check_prereqs(self): :rtype: list """ fail = [] - if ( - sys.platform == "linux" - and not self.toolchain - or not self.toolchain.exists() - ): - fail.append( - f"Toolchain for {self.arch} does not exist. Please pip install ppbt." - ) + if sys.platform == "linux": + if not self.toolchain or not self.toolchain.exists(): + fail.append( + f"Toolchain for {self.arch} does not exist. Please pip install ppbt." + ) return fail def __call__( From b8b2504df7bd23d8e108e9bbbcfcbce9faf625a0 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 2 Mar 2025 14:51:57 -0700 Subject: [PATCH 26/41] Fix pre-commit wart --- relenv/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relenv/__main__.py b/relenv/__main__.py index 8857159f..8789c0b0 100644 --- a/relenv/__main__.py +++ b/relenv/__main__.py @@ -47,7 +47,7 @@ def main(): """ parser = setup_cli() args = parser.parse_args() - if hasattr(args, 'func'): + if hasattr(args, "func"): args.func(args) else: parser.print_help() From a3529f258dbb5af7e2097e249c8dc1bbe28282e3 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 2 Mar 2025 15:13:26 -0700 Subject: [PATCH 27/41] Only linux has toolchains --- relenv/runtime.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/relenv/runtime.py b/relenv/runtime.py index 68568150..bf1cea22 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -602,15 +602,16 @@ def wrap_pip_build_wheel(name): def wrap(func): @functools.wraps(func) def wrapper(*args, **kwargs): - # dirs = common().work_dirs() - # import tempfile - # tmpdir = tempfile.TemporaryDirectory(prefix='relenvcargo') - # cargo_home = tmpdir.name #str(dirs.data / "cargo") + if sys.platform != "linux": + return func(*args, **kwargs) + if not hasattr(install_cargo_config, "tmpdir") and os.environ.get( + "RELENV_BUILDENV", 0 + ): + raise RuntimeError("No toolchain installed") cargo_home = install_cargo_config.tmpdir.name - # cargo_home = str(dirs.data / "cargo") toolchain = common().get_toolchain() if not toolchain: - if sys.platform == "linux" and os.environ.get("RELENV_BUILDENV", 0): + if os.environ.get("RELENV_BUILDENV", 0): raise RuntimeError("No toolchain installed") return func(*args, **kwargs) From 4072eb2b329fc982ecf080e9c4aa4c269a90584d Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 2 Mar 2025 17:28:39 -0700 Subject: [PATCH 28/41] Install ppbt for fips tests --- tests/test_fips_photon.py | 3 +++ tests/test_verify_build.py | 28 ++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/tests/test_fips_photon.py b/tests/test_fips_photon.py index d2888561..4e5728a0 100644 --- a/tests/test_fips_photon.py +++ b/tests/test_fips_photon.py @@ -7,6 +7,8 @@ import pytest +from tests.test_verify_build import _install_ppbt + from .conftest import get_build_version @@ -27,6 +29,7 @@ def check_test_environment(): def test_fips_mode(pyexec, build): + _install_ppbt(pyexec) env = os.environ.copy() proc = subprocess.run( [ diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index dd30e427..c461236e 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -47,16 +47,28 @@ def setup(pth_file_path): """ -def _install_ppbt(pipexec): +def _install_ppbt(pexec): if sys.platform in ["win32", "darwin"]: return - p = subprocess.run( - [ - str(pipexec), - "install", - "ppbt", - ] - ) + if "pip" in str(pexec): + p = subprocess.run( + [ + str(pexec), + "install", + "ppbt", + ] + ) + else: + p = subprocess.run( + [ + str(pexec), + "-m", + "pip", + "install", + "ppbt", + ] + ) + assert p.returncode == 0, "Failed to install ppbt" From 41756f572c6bb7d89dcc6134812c3d315d80c597 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 3 Mar 2025 14:31:01 -0700 Subject: [PATCH 29/41] Add python3-devel to system dependencies for fips tests --- .github/workflows/test-fips-action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-fips-action.yml b/.github/workflows/test-fips-action.yml index 2454a7ee..4d3e4c7d 100644 --- a/.github/workflows/test-fips-action.yml +++ b/.github/workflows/test-fips-action.yml @@ -27,7 +27,7 @@ jobs: - name: Install System Dependencies run: | - yum install -y openssl-fips-provider python3 python3-virtualenv git gcc + yum install -y openssl-fips-provider python3 python3-devel python3-virtualenv git gcc - uses: actions/checkout@v3 From 1ea27bd1663394d50099a37031ef3e08ecb78562 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 3 Mar 2025 15:54:02 -0700 Subject: [PATCH 30/41] Add glibc-devel to fips system deps --- .github/workflows/test-fips-action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-fips-action.yml b/.github/workflows/test-fips-action.yml index 4d3e4c7d..c4ab8f26 100644 --- a/.github/workflows/test-fips-action.yml +++ b/.github/workflows/test-fips-action.yml @@ -27,7 +27,7 @@ jobs: - name: Install System Dependencies run: | - yum install -y openssl-fips-provider python3 python3-devel python3-virtualenv git gcc + yum install -y openssl-fips-provider python3 python3-devel python3-virtualenv git gcc binutils glibc-devel linux-api-headers libffi-devel - uses: actions/checkout@v3 From 7d289901a771a506e85275593049436af30abc1f Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 4 Mar 2025 14:03:54 -0700 Subject: [PATCH 31/41] debug pip --- .github/workflows/test-fips-action.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test-fips-action.yml b/.github/workflows/test-fips-action.yml index c4ab8f26..5bfab686 100644 --- a/.github/workflows/test-fips-action.yml +++ b/.github/workflows/test-fips-action.yml @@ -45,6 +45,10 @@ jobs: run: | ./venv/bin/pip3 install -r requirements/tests.txt + - name: Pip debug + run: | + ./venv/bin/pip3 debug --verbose + - name: Run Fips Tests run: | ./venv/bin/python3 -m pytest -v tests/test_fips_photon.py From a5b7659df15c4d58e3d1cf24ea5f693c148da49f Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 4 Mar 2025 15:03:09 -0700 Subject: [PATCH 32/41] fix order --- .github/workflows/ci.yml | 1 + .github/workflows/test-fips-action.yml | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 939dcd6d..cff68cb7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,6 +180,7 @@ jobs: - deploy-python-package - create-release steps: + - name: Get workflow information id: get-workflow-info uses: technote-space/workflow-conclusion-action@v3 diff --git a/.github/workflows/test-fips-action.yml b/.github/workflows/test-fips-action.yml index 5bfab686..97b10a7c 100644 --- a/.github/workflows/test-fips-action.yml +++ b/.github/workflows/test-fips-action.yml @@ -41,14 +41,16 @@ jobs: run: | virtualenv venv - - name: Install Virtual Environment Dependencies - run: | - ./venv/bin/pip3 install -r requirements/tests.txt - - name: Pip debug run: | + ./venv/bin/python3 -m pip install --upgrade pip + ./venv/bin/python3 -c 'import platform; print(platform.libc_ver())' ./venv/bin/pip3 debug --verbose + - name: Install Virtual Environment Dependencies + run: | + ./venv/bin/pip3 install -r requirements/tests.txt + - name: Run Fips Tests run: | ./venv/bin/python3 -m pytest -v tests/test_fips_photon.py From 29de542714c4b81fb2b8e5387c96e914328f84cb Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Wed, 5 Mar 2025 19:03:13 -0700 Subject: [PATCH 33/41] Fix fips test failures --- relenv/runtime.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/relenv/runtime.py b/relenv/runtime.py index bf1cea22..96fbd79b 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -21,7 +21,6 @@ import site import subprocess import sys -import tempfile import textwrap import warnings @@ -837,6 +836,11 @@ def install_cargo_config(): if sys.platform != "linux": return + # We need this as a late import for python < 3.12 becuase importing it will + # load the ssl module. Causing out setup_openssl method to fail to load + # fips module. + import tempfile + install_cargo_config.tmpdir = tempfile.TemporaryDirectory(prefix="relenvcargo") cargo_home = pathlib.Path(install_cargo_config.tmpdir.name) From 8f387b41a7416b772a2d6bc60aaee9596a936cfc Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Thu, 8 May 2025 23:49:13 -0700 Subject: [PATCH 34/41] Add pyversions --- relenv/common.py | 55 ++++++++++++++++ relenv/pyversions.py | 150 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 205 insertions(+) create mode 100644 relenv/pyversions.py diff --git a/relenv/common.py b/relenv/common.py index 1adc974c..deb8eaae 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -413,6 +413,61 @@ def fetch_url(url, fp, backoff=3, timeout=30): # fp.close() log.info("Download complete %s", url) +def fetch_url_content(url, backoff=3, timeout=30): + """ + Fetch the contents of a url. + + This method will store the contents in the given file like object. + """ + # Late import so we do not import hashlib before runtime.bootstrap is called. + import urllib.error + import urllib.request + import io + import gzip + + fp = io.BytesIO() + + last = time.time() + if backoff < 1: + backoff = 1 + n = 0 + while n < backoff: + n += 1 + try: + fin = urllib.request.urlopen(url, timeout=timeout) + except ( + urllib.error.HTTPError, + urllib.error.URLError, + http.client.RemoteDisconnected, + ) as exc: + if n >= backoff: + raise RelenvException(f"Error fetching url {url} {exc}") + log.debug("Unable to connect %s", url) + time.sleep(n * 10) + log.info("url opened %s", url) + try: + total = 0 + size = 1024 * 300 + block = fin.read(size) + while block: + total += size + if time.time() - last > 10: + log.info("%s > %d", url, total) + last = time.time() + fp.write(block) + block = fin.read(10240) + finally: + fin.close() + # fp.close() + log.info("Download complete %s", url) + fp.seek(0) + info = fin.info() + if 'content-encoding' in info: + if info['content-encoding'] == 'gzip': + print("GZIPED") + fp = gzip.GzipFile(fileobj=fp) + return fp.read().decode() + def download_url(url, dest, verbose=True, backoff=3, timeout=60): """ diff --git a/relenv/pyversions.py b/relenv/pyversions.py new file mode 100644 index 00000000..b9391bc9 --- /dev/null +++ b/relenv/pyversions.py @@ -0,0 +1,150 @@ +""" +tools to determin python versions and download source code and signatures +""" +try: + import requests + from packaging.version import Version +except ImportError: + raise RuntimeError("Required dependencies not found. Please pip install relenv[pyversions]") + +from relenv.common import fetch_url_content + +import subprocess +import logging +import re + + +KEYSERVERS = [ + "keyserver.ubuntu.com", + "keys.openpgp.org", + "pgp.mit.edu", +] + + +def ref_version(x): + _ = x.split("Python ", 1)[1].split("<", 1)[0] + return Version(_) + +def ref_path(x): + return x.split('href="')[1].split('"')[0] + + +ARCHIVE = "https://www.python.org/ftp/python/{version}/Python-{version}.{ext}" + +def release_urls(version, gzip=False): + if gzip: + tarball = f"https://www.python.org/ftp/python/{version}/Python-{version}.tgz" + else: + tarball = f"https://www.python.org/ftp/python/{version}/Python-{version}.tar.xz" + # No signatures prior to 2.3 + if version < Version("2.3"): + return tarball, None + return tarball, f"{tarball}.asc" + + +print("Get downloads page") +#reply = requests.get("https://www.python.org/downloads/") +content = fetch_url_content("https://www.python.org/downloads/") +print("Got downloads page") + +matched = re.findall(rf'Python.*', content) + +versions = sorted([ref_version(_) for _ in matched], reverse=True) + +def download_file(url): + local_filename = url.split('/')[-1] + # NOTE the stream=True parameter below + with requests.get(url, stream=True) as r: + r.raise_for_status() + with open(local_filename, 'wb') as f: + for chunk in r.iter_content(chunk_size=65032): + # If you have chunk encoded response uncomment if + # and set chunk_size parameter to None. + #if chunk: + f.write(chunk) + return local_filename + +def check_status(url): + reply = requests.head(url) + if reply.status_code != 200: + print(f"Got {reply.status_code} for {url}") + return False + return True + + +def receive_key(keyid, server): + proc = subprocess.run(["gpg", "--keyserver", server, "--recv-keys", keyid], capture_output=True) + if proc.returncode == 0: + return True + return False + +def get_keyid(proc): + try: + err = proc.stderr.decode() + return err.splitlines()[1].rsplit(" ", 1)[-1] + except (AttributeError, IndexError): + return False + +def verify_signature(path, signature): + proc = subprocess.run(["gpg", "--verify", signature, path], capture_output=True) + keyid = get_keyid(proc) + if proc.returncode == 0: + print(f"Valid signature {path} {keyid}") + return True + err = proc.stderr.decode() + if "No public key" in err: + for server in KEYSERVERS: + if receive_key(keyid, server): + print(f"found public key {keyid} on {server}") + break + else: + print("Unable to find key {keyid} on any server") + else: + print(f"Signature verification failed {proc.stderr.decode()}") + return False + proc = subprocess.run(["gpg", "--verify", signature, path], capture_output=True) + if proc.returncode == 0: + print(f"Valid signature {path} {signature}") + return True + err = proc.stderr.decode() + print(f"Signature verification failed {proc.stderr.decode()}") + return False + +CHECK = True +VERSION = None # '3.13.2' + +def main(): + for version in versions: + if VERSION and Version(VERSION) != version: + continue + print(f"Check version {version}") + + # Prior to 3.2.0 the url format only included major and minor. + if version <= Version('3.2') and version.micro == 0: + version = Version(f"{version.major}.{version.minor}") + + # No xz archives prior to 3.1.4 + if version >= Version('3.1.4'): + url = ARCHIVE.format(version=version, ext="tar.xz") + if CHECK: + check_status(url) + check_status(f"{url}.asc") + else: + path = download_file(url) + sig_path = download_file(f"{url}.asc") + verify_signature(path, sig_path) + + url = ARCHIVE.format(version=version, ext="tgz") + if CHECK: + check_status(url) + # No signatures prior to 2.3 + if version >= Version("2.3"): + check_status(f"{url}.asc") + else: + path = download_file(url) + if version >= Version("2.3"): + sig_path = download_file(f"{url}.asc") + verify_signature(path, sig_path) + +if __name__ == "__main__": + main() From 3a408e6a1ce081a90ec075d008aa849c7497c879 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 9 May 2025 18:39:48 -0700 Subject: [PATCH 35/41] Detect python versions --- relenv/__main__.py | 3 +- relenv/build/__init__.py | 45 ++++-- relenv/build/common.py | 19 +-- relenv/build/linux.py | 30 ++-- relenv/common.py | 30 +++- relenv/create.py | 6 +- relenv/fetch.py | 6 +- relenv/manifest.py | 34 +++++ relenv/python-versions.json | 1 + relenv/pyversions.py | 279 ++++++++++++++++++++++++++++-------- relenv/runtime.py | 5 + setup.cfg | 4 +- setup.py | 3 + 13 files changed, 353 insertions(+), 112 deletions(-) create mode 100644 relenv/manifest.py create mode 100644 relenv/python-versions.json diff --git a/relenv/__main__.py b/relenv/__main__.py index 8789c0b0..c40fd31c 100644 --- a/relenv/__main__.py +++ b/relenv/__main__.py @@ -6,7 +6,7 @@ from argparse import ArgumentParser -from . import build, buildenv, check, create, fetch, toolchain +from . import build, buildenv, check, create, fetch, pyversions, toolchain from .common import __version__ @@ -34,6 +34,7 @@ def setup_cli(): fetch, check, buildenv, + pyversions, ] for mod in modules_to_setup: mod.setup_parser(subparsers) diff --git a/relenv/build/__init__.py b/relenv/build/__init__.py index 828dbf30..37202e2b 100644 --- a/relenv/build/__init__.py +++ b/relenv/build/__init__.py @@ -3,6 +3,12 @@ """ The ``relenv build`` command. """ +try: + from packaging.version import Version +except ImportError: + raise RuntimeError( + "Required dependencies not found. Please pip install relenv[pyversions]" + ) import sys import random import codecs @@ -11,6 +17,8 @@ from . import linux, darwin, windows from .common import builds, CHECK_VERSIONS_SUPPORT +from ..pyversions import python_versions + from ..common import build_arch @@ -26,13 +34,6 @@ def platform_module(): return windows -def platform_versions(): - """ - Return the right module based on `sys.platform`. - """ - return list(builds.builds[sys.platform].keys()) - - def setup_parser(subparsers): """ Setup the subparser for the ``build`` command. @@ -63,8 +64,7 @@ def setup_parser(subparsers): ) build_subparser.add_argument( "--python", - default=platform_versions()[0], - choices=platform_versions(), + default="3.10.17", type=str, help="The python version [default: %(default)s]", ) @@ -146,8 +146,33 @@ def main(args): print(f"Unsupported platform: {sys.platform}") sys.exit(1) + requested = Version(args.python) + + if requested.micro: + pyversions = python_versions() + if requested not in pyversions: + print(f"Unknown version {requested}") + sys.exit(1) + build_version = requested + else: + pyversions = python_versions(args.python) + build_version = pyversions[0] + + # print(pyversions) + # print(pyversions[0].major) + # print(pyversions[0].minor) + # print(pyversions[0].micro) + # print(pyversions[0].pre) + # print(pyversions[0].post) + # print(pyversions) + print(f"Build Python {build_version}") + sys.exit() + # XXX - build = builds.builds[sys.platform][args.python] + build = builds.builds[sys.platform] + build.version = str(build_version) + build.dirs.version = str(build_version) + build.recipies["python"]["download"].version = str(build_version) if args.check_versions: if not CHECK_VERSIONS_SUPPORT: diff --git a/relenv/build/common.py b/relenv/build/common.py index 985481c4..e0ba6bfa 100644 --- a/relenv/build/common.py +++ b/relenv/build/common.py @@ -785,9 +785,9 @@ def add(self, platform, *args, **kwargs): else: build = Builder(*args, **kwargs) if platform not in self.builds: - self.builds[platform] = {build.version: build} + self.builds[platform] = build else: - self.builds[platform][build.version] = build + self.builds[platform] = build return build @@ -826,10 +826,6 @@ def __init__( self.build_arch = build_arch() self.build_triplet = get_triplet(self.build_arch) self.arch = arch - self.triplet = get_triplet(self.arch) - self.version = version - # XXX Refactor WorkDirs, Dirs and Builder so as not to duplicate logic - self.prefix = self.dirs.build / f"{self.version}-{self.triplet}" self.sources = self.dirs.src self.downloads = self.dirs.download @@ -840,6 +836,7 @@ def __init__( self.build_default = build_default self.populate_env = populate_env + self.version = version self.toolchains = get_toolchain(root=self.dirs.root) self.set_arch(self.arch) @@ -872,13 +869,19 @@ def set_arch(self, arch): :type arch: str """ self.arch = arch - self.triplet = get_triplet(self.arch) - self.prefix = self.dirs.build / f"{self.version}-{self.triplet}" if sys.platform in ["darwin", "win32"]: self.toolchain = None else: self.toolchain = get_toolchain(self.arch, self.dirs.root) + @property + def triplet(self): + return get_triplet(self.arch) + + @property + def prefix(self): + return self.dirs.build / f"{self.version}-{self.triplet}" + @property def _triplet(self): if sys.platform == "darwin": diff --git a/relenv/build/linux.py b/relenv/build/linux.py index 7f866dec..15f7de75 100644 --- a/relenv/build/linux.py +++ b/relenv/build/linux.py @@ -445,7 +445,7 @@ def build_python(env, dirs, logfp): # runcmd([str(python), "-m", "ensurepip", "-U"], env=env, stderr=logfp, stdout=logfp) -build = builds.add("linux", populate_env=populate_env, version="3.10.17") +build = builds.add("linux", populate_env=populate_env) # , version="3.10.17") build.add( "openssl", @@ -652,17 +652,17 @@ def build_python(env, dirs, logfp): ], ) -build = build.copy( - version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" -) -builds.add("linux", builder=build) - -build = build.copy( - version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" -) -builds.add("linux", builder=build) - -build = build.copy( - version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" -) -builds.add("linux", builder=build) +# build = build.copy( +# version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" +# ) +# builds.add("linux", builder=build) +# +# build = build.copy( +# version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" +# ) +# builds.add("linux", builder=build) +# +# build = build.copy( +# version="3.13.3", checksum="f26085cf12daef7b60b8a6fe93ef988b9a094aea" +# ) +# builds.add("linux", builder=build) diff --git a/relenv/common.py b/relenv/common.py index deb8eaae..35aaad63 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -28,6 +28,8 @@ MACOS_DEVELOPMENT_TARGET = "10.15" +REQUEST_HEADERS = {"User-Agent": f"relenv {__version__}"} + CHECK_HOSTS = ( "packages.broadcom.com/artifactory/saltproject-generic", "repo.saltproject.io", @@ -351,17 +353,30 @@ def get_download_location(url, dest): return os.path.join(dest, os.path.basename(url)) -def check_url(url, timeout=30): +def check_url(url, timestamp=None, timeout=30): """ Check that the url returns a 200. """ # Late import so we do not import hashlib before runtime.bootstrap is called. + import time import urllib.request + headers = dict(REQUEST_HEADERS) + req = urllib.request.Request(url) + + if timestamp: + headers["If-Modified-Since"] = time.strftime( + "%a, %d %b %Y %H:%M:%S GMT", time.gmtime(timestamp) + ) + + for k, v in headers.items(): + req.add_header(k, v) + fin = None try: - fin = urllib.request.urlopen(url, timeout=timeout) - except Exception: + fin = urllib.request.urlopen(req, timeout=timeout) + except Exception as exc: + print(exc) return False finally: if fin: @@ -413,6 +428,7 @@ def fetch_url(url, fp, backoff=3, timeout=30): # fp.close() log.info("Download complete %s", url) + def fetch_url_content(url, backoff=3, timeout=30): """ Fetch the contents of a url. @@ -420,10 +436,10 @@ def fetch_url_content(url, backoff=3, timeout=30): This method will store the contents in the given file like object. """ # Late import so we do not import hashlib before runtime.bootstrap is called. + import gzip + import io import urllib.error import urllib.request - import io - import gzip fp = io.BytesIO() @@ -462,8 +478,8 @@ def fetch_url_content(url, backoff=3, timeout=30): log.info("Download complete %s", url) fp.seek(0) info = fin.info() - if 'content-encoding' in info: - if info['content-encoding'] == 'gzip': + if "content-encoding" in info: + if info["content-encoding"] == "gzip": print("GZIPED") fp = gzip.GzipFile(fileobj=fp) return fp.read().decode() diff --git a/relenv/create.py b/relenv/create.py index 1067a776..f80a8167 100644 --- a/relenv/create.py +++ b/relenv/create.py @@ -10,7 +10,6 @@ import sys import tarfile -from .build import platform_versions from .common import RelenvException, arches, archived_build, build_arch @@ -61,8 +60,7 @@ def setup_parser(subparsers): ) subparser.add_argument( "--python", - default=platform_versions()[0], - choices=platform_versions(), + default="3.10.17", type=str, help="The python version [default: %(default)s]", ) @@ -89,7 +87,7 @@ def create(name, dest=None, arch=None, version=None): writeto = pathlib.Path(name).resolve() if version is None: - version = platform_versions()[0] + version = "3.10.17" if pathlib.Path(writeto).exists(): raise CreateException("The requested path already exists.") diff --git a/relenv/fetch.py b/relenv/fetch.py index e40d5f37..a4bb0f6b 100644 --- a/relenv/fetch.py +++ b/relenv/fetch.py @@ -7,7 +7,7 @@ import os import sys -from .build import platform_module, platform_versions +from .build import platform_module from .common import ( CHECK_HOSTS, DATA_DIR, @@ -39,9 +39,7 @@ def setup_parser(subparsers): ) subparser.add_argument( "--python", - default=platform_versions()[0], - # Allow fetching of older versions - # choices=platform_versions(), + default="3.10.17", type=str, help="The python version [default: %(default)s]", ) diff --git a/relenv/manifest.py b/relenv/manifest.py new file mode 100644 index 00000000..17e4ecb4 --- /dev/null +++ b/relenv/manifest.py @@ -0,0 +1,34 @@ +# Copyright 2025 Broadcom. +# SPDX-License-Identifier: Apache-2.0 +# +""" +Relenv manifest. +""" +import hashlib +import os +import sys + + +def manifest(root=None): + """ + List all the file in a relenv and their hashes. + """ + if root is None: + root = getattr(sys, "RELENV", os.getcwd()) + for root, dirs, files in os.walk(root): + for file in files: + hsh = hashlib.sha256() + try: + with open(root + os.path.sep + file, "rb") as fp: + while True: + chunk = fp.read(9062) + if not chunk: + break + hsh.update(chunk) + except OSError: + pass + print(f"{root + os.path.sep + file} => {hsh.hexdigest()}") + + +if __name__ == "__main__": + manifest() diff --git a/relenv/python-versions.json b/relenv/python-versions.json new file mode 100644 index 00000000..71aea333 --- /dev/null +++ b/relenv/python-versions.json @@ -0,0 +1 @@ +{"versions": ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.5", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.10.17", "3.10.16", "3.10.15", "3.10.14", "3.10.13", "3.10.12", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.9.22", "3.9.21", "3.9.20", "3.9.19", "3.9.18", "3.9.17", "3.9.16", "3.9.15", "3.9.14", "3.9.13", "3.9.12", "3.9.11", "3.9.10", "3.9.9", "3.9.8", "3.9.7", "3.9.6", "3.9.5", "3.9.4", "3.9.2", "3.9.1", "3.9.0", "3.8.20", "3.8.19", "3.8.18", "3.8.17", "3.8.16", "3.8.15", "3.8.14", "3.8.13", "3.8.12", "3.8.11", "3.8.10", "3.8.9", "3.8.8", "3.8.7", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.7.17", "3.7.16", "3.7.15", "3.7.14", "3.7.13", "3.7.12", "3.7.11", "3.7.10", "3.7.9", "3.7.8", "3.7.7", "3.7.6", "3.7.5", "3.7.4", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.6.15", "3.6.14", "3.6.13", "3.6.12", "3.6.11", "3.6.10", "3.6.9", "3.6.8", "3.6.7", "3.6.6", "3.6.5", "3.6.4", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.5.10", "3.5.9", "3.5.8", "3.5.7", "3.5.6", "3.5.5", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.4.10", "3.4.9", "3.4.8", "3.4.7", "3.4.6", "3.4.5", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.3.7", "3.3.6", "3.3.5", "3.3.4", "3.3.3", "3.3.2", "3.3.1", "3.3.0", "3.2.6", "3.2.5", "3.2.4", "3.2.3", "3.2.2", "3.2.1", "3.2.0", "3.1.5", "3.1.4", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.1", "3.0.0"]} \ No newline at end of file diff --git a/relenv/pyversions.py b/relenv/pyversions.py index b9391bc9..65dedbc3 100644 --- a/relenv/pyversions.py +++ b/relenv/pyversions.py @@ -1,18 +1,29 @@ +# Copyright 2025 Broadcom. +# SPDX-License-Identifier: Apache-2.0 """ -tools to determin python versions and download source code and signatures +Versions utility. """ try: - import requests from packaging.version import Version except ImportError: - raise RuntimeError("Required dependencies not found. Please pip install relenv[pyversions]") + raise RuntimeError( + "Required dependencies not found. Please pip install relenv[pyversions]" + ) -from relenv.common import fetch_url_content -import subprocess +import hashlib +import json import logging +import os +import pathlib import re +import subprocess +import sys +import time + +from relenv.common import check_url, download_url, fetch_url_content +log = logging.getLogger(__name__) KEYSERVERS = [ "keyserver.ubuntu.com", @@ -21,17 +32,19 @@ ] -def ref_version(x): +def _ref_version(x): _ = x.split("Python ", 1)[1].split("<", 1)[0] return Version(_) -def ref_path(x): + +def _ref_path(x): return x.split('href="')[1].split('"')[0] ARCHIVE = "https://www.python.org/ftp/python/{version}/Python-{version}.{ext}" -def release_urls(version, gzip=False): + +def _release_urls(version, gzip=False): if gzip: tarball = f"https://www.python.org/ftp/python/{version}/Python-{version}.tgz" else: @@ -42,63 +55,40 @@ def release_urls(version, gzip=False): return tarball, f"{tarball}.asc" -print("Get downloads page") -#reply = requests.get("https://www.python.org/downloads/") -content = fetch_url_content("https://www.python.org/downloads/") -print("Got downloads page") - -matched = re.findall(rf'Python.*', content) - -versions = sorted([ref_version(_) for _ in matched], reverse=True) - -def download_file(url): - local_filename = url.split('/')[-1] - # NOTE the stream=True parameter below - with requests.get(url, stream=True) as r: - r.raise_for_status() - with open(local_filename, 'wb') as f: - for chunk in r.iter_content(chunk_size=65032): - # If you have chunk encoded response uncomment if - # and set chunk_size parameter to None. - #if chunk: - f.write(chunk) - return local_filename - -def check_status(url): - reply = requests.head(url) - if reply.status_code != 200: - print(f"Got {reply.status_code} for {url}") - return False - return True - - -def receive_key(keyid, server): - proc = subprocess.run(["gpg", "--keyserver", server, "--recv-keys", keyid], capture_output=True) +def _receive_key(keyid, server): + proc = subprocess.run( + ["gpg", "--keyserver", server, "--recv-keys", keyid], capture_output=True + ) if proc.returncode == 0: return True return False -def get_keyid(proc): + +def _get_keyid(proc): try: err = proc.stderr.decode() return err.splitlines()[1].rsplit(" ", 1)[-1] except (AttributeError, IndexError): return False + def verify_signature(path, signature): + """ + Verify gpg signature. + """ proc = subprocess.run(["gpg", "--verify", signature, path], capture_output=True) - keyid = get_keyid(proc) + keyid = _get_keyid(proc) if proc.returncode == 0: print(f"Valid signature {path} {keyid}") return True err = proc.stderr.decode() if "No public key" in err: for server in KEYSERVERS: - if receive_key(keyid, server): + if _receive_key(keyid, server): print(f"found public key {keyid} on {server}") break else: - print("Unable to find key {keyid} on any server") + print(f"Unable to find key {keyid} on any server") else: print(f"Signature verification failed {proc.stderr.decode()}") return False @@ -110,41 +100,208 @@ def verify_signature(path, signature): print(f"Signature verification failed {proc.stderr.decode()}") return False + +PRINT = True CHECK = True -VERSION = None # '3.13.2' +VERSION = None # '3.13.2' +UPDATE = False + + +def digest(file): + """ + SHA-256 digest of file. + """ + hsh = hashlib.sha256() + with open(file, "rb") as fp: + hsh.update(fp.read()) + return hsh.hexdigest() + + +def _main(): + + pyversions = {"versions": []} + + vfile = pathlib.Path(".pyversions") + cfile = pathlib.Path(".content") + tsfile = pathlib.Path(".ts") + url = "https://www.python.org/downloads/" + if not cfile.exists() or not tsfile.exists(): + print("Get downloads page") + ts = int(time.time()) + content = fetch_url_content(url) + cfile.write_text(content) + tsfile.write_text(str(ts)) + elif CHECK: + ts = int(tsfile.read_text()) + if check_url(url, timestamp=ts): + print("Get downloads page") + ts = int(time.time()) + content = fetch_url_content(url) + cfile.write_text(content) + tsfile.write_text(str(ts)) + else: + pyversions = json.loads(vfile.read_text()) + content = cfile.read_text() + else: + pyversions = json.loads(vfile.read_text()) + content = cfile.read_text() + + matched = re.findall(r'Python.*', content) + + parsed_versions = sorted([_ref_version(_) for _ in matched], reverse=True) + + versions = [_ for _ in parsed_versions if _.major >= 3] + cwd = os.getcwd() + + out = {} -def main(): for version in versions: if VERSION and Version(VERSION) != version: continue + + if PRINT: + pyversions["versions"].append(str(version)) + print(version) + continue + print(f"Check version {version}") # Prior to 3.2.0 the url format only included major and minor. - if version <= Version('3.2') and version.micro == 0: - version = Version(f"{version.major}.{version.minor}") + if version <= Version("3.2") and version.micro == 0: + url_version = Version(f"{version.major}.{version.minor}") + else: + url_version = version # No xz archives prior to 3.1.4 - if version >= Version('3.1.4'): - url = ARCHIVE.format(version=version, ext="tar.xz") + if version >= Version("3.1.4"): + url = ARCHIVE.format(version=url_version, ext="tar.xz") if CHECK: - check_status(url) - check_status(f"{url}.asc") + check_url(url) + check_url(f"{url}.asc") else: - path = download_file(url) - sig_path = download_file(f"{url}.asc") - verify_signature(path, sig_path) + path = download_url(url, cwd) + sig_path = download_url(f"{url}.asc", cwd) + verified = verify_signature(path, sig_path) + if verified: + if str(version) in out: + out[str(version)][url] = digest(path) + else: + out[str(version)] = {url: digest(path)} - url = ARCHIVE.format(version=version, ext="tgz") + url = ARCHIVE.format(version=url_version, ext="tgz") if CHECK: - check_status(url) + check_url(url) # No signatures prior to 2.3 if version >= Version("2.3"): - check_status(f"{url}.asc") + check_url(f"{url}.asc") else: - path = download_file(url) + path = download_url(url, cwd) if version >= Version("2.3"): - sig_path = download_file(f"{url}.asc") - verify_signature(path, sig_path) + sig_path = download_url(f"{url}.asc", cwd) + verified = verify_signature(path, sig_path) + if verified: + if str(version) in out: + out[str(version)][url] = digest(path) + else: + out[str(version)] = {url: digest(path)} + + if PRINT: + vfile.write_text(json.dumps(pyversions)) + elif not CHECK and out: + vfile.write_text(json.dumps(out)) + + +def create_pyversions(path): + """ + Create python-versions.json file. + """ + url = "https://www.python.org/downloads/" + content = fetch_url_content(url) + matched = re.findall(r'Python.*', content) + parsed_versions = sorted([_ref_version(_) for _ in matched], reverse=True) + versions = [_ for _ in parsed_versions if _.major >= 3] + path.write_text(json.dumps({"versions": [str(_) for _ in versions]})) + + +def python_versions(minor=None, create=False, update=False): + """ + List python versions. + """ + packaged = pathlib.Path(__file__).parent / "python-versions.json" + local = pathlib.Path("~/.local/relenv/python-versions.json") + + if create: + create_pyversions(packaged) + + if local.exists(): + readfrom = local + elif packaged.exists(): + readfrom = packaged + elif create: + readfrom = packaged + else: + raise RuntimeError("No versions file found") + pyversions = json.loads(readfrom.read_text()) + versions = [Version(_) for _ in pyversions["versions"]] + if minor: + mv = Version(minor) + versions = [_ for _ in versions if _.major == mv.major and _.minor == mv.minor] + return versions + + +def setup_parser(subparsers): + """ + Setup the subparser for the ``versions`` command. + + :param subparsers: The subparsers object returned from ``add_subparsers`` + :type subparsers: argparse._SubParsersAction + """ + subparser = subparsers.add_parser( + "versions", + description=("Versions utility"), + ) + subparser.set_defaults(func=main) + subparser.add_argument( + "-l", + "--list", + default=False, + action="store_true", + help="List versions", + ) + subparser.add_argument( + "--version", + default="3.13", + type=str, + help="The python version [default: %(default)s]", + ) + + +def main(args): + """ + Versions utility main method. + """ + if args.list: + for version in python_versions(): + print(version) + sys.exit() + if args.version: + requested = Version(args.version) + + if requested.micro: + pyversions = python_versions() + if requested not in pyversions: + print(f"Unknown version {requested}") + sys.exit(1) + build_version = requested + else: + pyversions = python_versions(args.version) + if not pyversions: + print(f"Unknown minor version {requested}") + sys.exit(1) + build_version = pyversions[0] + print(build_version) + sys.exit() + if __name__ == "__main__": main() diff --git a/relenv/runtime.py b/relenv/runtime.py index 96fbd79b..e2beca11 100644 --- a/relenv/runtime.py +++ b/relenv/runtime.py @@ -707,7 +707,12 @@ def wrapper( return wrapper + # get_scheme is not available on pip-19.2.3 + # try: mod.get_scheme = wrap(mod.get_scheme) + # except AttributeError: + # debug(f"Module {mod} does not have attribute get_scheme") + return mod diff --git a/setup.cfg b/setup.cfg index 06df52f6..ce11e0eb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ -# Copyright 2022 VMware, Inc. -# SPDX-License-Identifier: Apache-2 +# Copyright 2025 Broadcom. +# SPDX-License-Identifier: Apache-2.0 [metadata] name = relenv diff --git a/setup.py b/setup.py index 26f449c3..21afe48e 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# Copyright 2025 Broadcom. +# SPDX-License-Identifier: Apache-2.0 + from setuptools import setup if __name__ == "__main__": From c289cfc0a5775106064fb70c931bc6c5cb652f28 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Fri, 9 May 2025 22:25:22 -0700 Subject: [PATCH 36/41] Add our own version class --- relenv/build/__init__.py | 9 +--- relenv/pyversions.py | 111 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 104 insertions(+), 16 deletions(-) diff --git a/relenv/build/__init__.py b/relenv/build/__init__.py index 37202e2b..efbcab8f 100644 --- a/relenv/build/__init__.py +++ b/relenv/build/__init__.py @@ -3,12 +3,6 @@ """ The ``relenv build`` command. """ -try: - from packaging.version import Version -except ImportError: - raise RuntimeError( - "Required dependencies not found. Please pip install relenv[pyversions]" - ) import sys import random import codecs @@ -17,7 +11,7 @@ from . import linux, darwin, windows from .common import builds, CHECK_VERSIONS_SUPPORT -from ..pyversions import python_versions +from ..pyversions import python_versions, Version from ..common import build_arch @@ -166,7 +160,6 @@ def main(args): # print(pyversions[0].post) # print(pyversions) print(f"Build Python {build_version}") - sys.exit() # XXX build = builds.builds[sys.platform] diff --git a/relenv/pyversions.py b/relenv/pyversions.py index 65dedbc3..736af97d 100644 --- a/relenv/pyversions.py +++ b/relenv/pyversions.py @@ -3,13 +3,13 @@ """ Versions utility. """ -try: - from packaging.version import Version -except ImportError: - raise RuntimeError( - "Required dependencies not found. Please pip install relenv[pyversions]" - ) - +# try: +# from packaging.version import Version +# except ImportError: +# raise RuntimeError( +# "Required dependencies not found. Please pip install relenv[pyversions]" +# ) +# import hashlib import json @@ -31,6 +31,8 @@ "pgp.mit.edu", ] +ARCHIVE = "https://www.python.org/ftp/python/{version}/Python-{version}.{ext}" + def _ref_version(x): _ = x.split("Python ", 1)[1].split("<", 1)[0] @@ -41,7 +43,100 @@ def _ref_path(x): return x.split('href="')[1].split('"')[0] -ARCHIVE = "https://www.python.org/ftp/python/{version}/Python-{version}.{ext}" +class Version: + """ + Version comparrisons. + """ + + def __init__(self, data): + self.major, self.minor, self.micro = self.parse_string(data) + self._data = data + + def __str__(self): + """ + Version as string. + """ + _ = f"{self.major}" + if self.minor is not None: + _ += f".{self.minor}" + if self.micro is not None: + _ += f".{self.micro}" + # XXX What if minor was None but micro was an int. + return _ + + @staticmethod + def parse_string(data): + """ + Parse a version string into major, minor, and micro integers. + """ + parts = data.split(".") + if len(parts) == 1: + return int(parts[0]), None, None + elif len(parts) == 2: + return int(parts[0]), int(parts[1]), None + elif len(parts) == 3: + return int(parts[0]), int(parts[1]), int(parts[2]) + else: + raise RuntimeError("Too many parts to parse") + + def __eq__(self, other): + """ + Equality comparrison. + """ + mymajor = 0 if self.major is None else self.major + myminor = 0 if self.minor is None else self.minor + mymicro = 0 if self.micro is None else self.micro + major = 0 if other.major is None else other.major + minor = 0 if other.minor is None else other.minor + micro = 0 if other.micro is None else other.micro + return mymajor == major and myminor == minor and mymicro == micro + + def __lt__(self, other): + """ + Less than comparrison. + """ + mymajor = 0 if self.major is None else self.major + myminor = 0 if self.minor is None else self.minor + mymicro = 0 if self.micro is None else self.micro + major = 0 if other.major is None else other.major + minor = 0 if other.minor is None else other.minor + micro = 0 if other.micro is None else other.micro + if mymajor < major: + return True + elif mymajor == major: + if myminor < minor: + return True + if myminor == minor and mymicro < micro: + return True + return False + + def __le__(self, other): + """ + Less than or equal to comparrison. + """ + mymajor = 0 if self.major is None else self.major + myminor = 0 if self.minor is None else self.minor + mymicro = 0 if self.micro is None else self.micro + major = 0 if other.major is None else other.major + minor = 0 if other.minor is None else other.minor + micro = 0 if other.micro is None else other.micro + if mymajor <= major: + if myminor <= minor: + if mymicro <= micro: + return True + return False + + def __gt__(self, other): + """ + Greater than comparrison. + """ + return not self.__le__(other) + + def __ge__(self, other): + """ + Greater than or equal to comparrison. + """ + return not self.__lt__(other) def _release_urls(version, gzip=False): From 6539a9877b0ef13a78bc07a03ea9f11faa621640 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 13 Jul 2025 03:44:18 -0700 Subject: [PATCH 37/41] install ppbt on editable tests --- tests/test_verify_build.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index c461236e..3480192a 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -1538,6 +1538,7 @@ def test_install_pyinotify_w_latest_pip(pipexec, build, minor_version): @pytest.mark.skip_unless_on_linux def test_install_editable_package(pipexec, pyexec, build, minor_version, tmp_path): + _install_ppbt(pipexec) os.chdir(tmp_path) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" @@ -1562,6 +1563,7 @@ def test_install_editable_package(pipexec, pyexec, build, minor_version, tmp_pat def test_install_editable_package_in_extras( pipexec, pyexec, build, minor_version, tmp_path ): + _install_ppbt(pipexec) sitepkgs = pathlib.Path(build) / "lib" / f"python{minor_version}" / "site-packages" (sitepkgs / "_extras.pth").write_text("import _extras; _extras.setup(__file__)") From 5ee0520925e19b375ce5a191ba5f8acab3799605 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 13 Jul 2025 14:33:03 -0700 Subject: [PATCH 38/41] Install ppbt before cryptography --- tests/test_verify_build.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py index 3480192a..47bbed12 100644 --- a/tests/test_verify_build.py +++ b/tests/test_verify_build.py @@ -1648,6 +1648,7 @@ def rockycontainer(build): @pytest.mark.skip_on_windows def test_no_openssl_binary(rockycontainer, pipexec): + _install_ppbt(pipexec) env = os.environ.copy() env["RELENV_BUILDENV"] = "yes" proc = subprocess.run( From 7bd6ac85bf05c3fe3e38709c080a3e11ce55fbd8 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 13 Jul 2025 14:38:52 -0700 Subject: [PATCH 39/41] Print know versions --- relenv/build/__init__.py | 2 ++ relenv/build/darwin.py | 30 +++++++++++++++--------------- relenv/build/windows.py | 30 +++++++++++++++--------------- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/relenv/build/__init__.py b/relenv/build/__init__.py index efbcab8f..098510a5 100644 --- a/relenv/build/__init__.py +++ b/relenv/build/__init__.py @@ -146,6 +146,8 @@ def main(args): pyversions = python_versions() if requested not in pyversions: print(f"Unknown version {requested}") + strversions = "\n".join([str(_) for _ in pyversions]) + print(f"Known versions are:\n{strversions}") sys.exit(1) build_version = requested else: diff --git a/relenv/build/darwin.py b/relenv/build/darwin.py index c2e4cb96..5e0f5222 100644 --- a/relenv/build/darwin.py +++ b/relenv/build/darwin.py @@ -72,7 +72,7 @@ def build_python(env, dirs, logfp): runcmd(["make", "install"], env=env, stderr=logfp, stdout=logfp) -build = builds.add("darwin", populate_env=populate_env, version="3.10.17") +build = builds.add("darwin", populate_env=populate_env) # , version="3.10.17") build.add( "openssl", @@ -129,17 +129,17 @@ def build_python(env, dirs, logfp): ], ) -build = build.copy( - version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" -) -builds.add("darwin", builder=build) - -build = build.copy( - version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" -) -builds.add("darwin", builder=build) - -build = build.copy( - version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" -) -builds.add("darwin", builder=build) +# build = build.copy( +# version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" +# ) +# builds.add("darwin", builder=build) +# +# build = build.copy( +# version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" +# ) +# builds.add("darwin", builder=build) +# +# build = build.copy( +# version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" +# ) +# builds.add("darwin", builder=build) diff --git a/relenv/build/windows.py b/relenv/build/windows.py index a7dfe74e..2a77ecdc 100644 --- a/relenv/build/windows.py +++ b/relenv/build/windows.py @@ -130,7 +130,7 @@ def build_python(env, dirs, logfp): ) -build = builds.add("win32", populate_env=populate_env, version="3.10.17") +build = builds.add("win32", populate_env=populate_env) # version="3.10.17") build.add( "python", @@ -211,17 +211,17 @@ def runpip(pkg): wait_on=["python"], ) -build = build.copy( - version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" -) -builds.add("win32", builder=build) - -build = build.copy( - version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" -) -builds.add("win32", builder=build) - -build = build.copy( - version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" -) -builds.add("win32", builder=build) +# build = build.copy( +# version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" +# ) +# builds.add("win32", builder=build) +# +# build = build.copy( +# version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" +# ) +# builds.add("win32", builder=build) +# +# build = build.copy( +# version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" +# ) +# builds.add("win32", builder=build) From cf26674e9379e1b7ec8c3a2d58ca355d62891a85 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 13 Jul 2025 14:58:19 -0700 Subject: [PATCH 40/41] Update versions --- relenv/common.py | 2 +- relenv/python-versions.json | 2 +- relenv/pyversions.py | 12 +++++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/relenv/common.py b/relenv/common.py index 35aaad63..00fae653 100644 --- a/relenv/common.py +++ b/relenv/common.py @@ -480,7 +480,7 @@ def fetch_url_content(url, backoff=3, timeout=30): info = fin.info() if "content-encoding" in info: if info["content-encoding"] == "gzip": - print("GZIPED") + log.debug("Found gzipped content") fp = gzip.GzipFile(fileobj=fp) return fp.read().decode() diff --git a/relenv/python-versions.json b/relenv/python-versions.json index 71aea333..b43f5330 100644 --- a/relenv/python-versions.json +++ b/relenv/python-versions.json @@ -1 +1 @@ -{"versions": ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.5", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.10.17", "3.10.16", "3.10.15", "3.10.14", "3.10.13", "3.10.12", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.9.22", "3.9.21", "3.9.20", "3.9.19", "3.9.18", "3.9.17", "3.9.16", "3.9.15", "3.9.14", "3.9.13", "3.9.12", "3.9.11", "3.9.10", "3.9.9", "3.9.8", "3.9.7", "3.9.6", "3.9.5", "3.9.4", "3.9.2", "3.9.1", "3.9.0", "3.8.20", "3.8.19", "3.8.18", "3.8.17", "3.8.16", "3.8.15", "3.8.14", "3.8.13", "3.8.12", "3.8.11", "3.8.10", "3.8.9", "3.8.8", "3.8.7", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.7.17", "3.7.16", "3.7.15", "3.7.14", "3.7.13", "3.7.12", "3.7.11", "3.7.10", "3.7.9", "3.7.8", "3.7.7", "3.7.6", "3.7.5", "3.7.4", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.6.15", "3.6.14", "3.6.13", "3.6.12", "3.6.11", "3.6.10", "3.6.9", "3.6.8", "3.6.7", "3.6.6", "3.6.5", "3.6.4", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.5.10", "3.5.9", "3.5.8", "3.5.7", "3.5.6", "3.5.5", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.4.10", "3.4.9", "3.4.8", "3.4.7", "3.4.6", "3.4.5", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.3.7", "3.3.6", "3.3.5", "3.3.4", "3.3.3", "3.3.2", "3.3.1", "3.3.0", "3.2.6", "3.2.5", "3.2.4", "3.2.3", "3.2.2", "3.2.1", "3.2.0", "3.1.5", "3.1.4", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.1", "3.0.0"]} \ No newline at end of file +{"versions": ["3.13.5", "3.13.4", "3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.5", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.10.18", "3.10.17", "3.10.16", "3.10.15", "3.10.14", "3.10.13", "3.10.12", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.9.23", "3.9.22", "3.9.21", "3.9.20", "3.9.19", "3.9.18", "3.9.17", "3.9.16", "3.9.15", "3.9.14", "3.9.13", "3.9.12", "3.9.11", "3.9.10", "3.9.9", "3.9.8", "3.9.7", "3.9.6", "3.9.5", "3.9.4", "3.9.2", "3.9.1", "3.9.0", "3.8.20", "3.8.19", "3.8.18", "3.8.17", "3.8.16", "3.8.15", "3.8.14", "3.8.13", "3.8.12", "3.8.11", "3.8.10", "3.8.9", "3.8.8", "3.8.7", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.7.17", "3.7.16", "3.7.15", "3.7.14", "3.7.13", "3.7.12", "3.7.11", "3.7.10", "3.7.9", "3.7.8", "3.7.7", "3.7.6", "3.7.5", "3.7.4", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.6.15", "3.6.14", "3.6.13", "3.6.12", "3.6.11", "3.6.10", "3.6.9", "3.6.8", "3.6.7", "3.6.6", "3.6.5", "3.6.4", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.5.10", "3.5.9", "3.5.8", "3.5.7", "3.5.6", "3.5.5", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.4.10", "3.4.9", "3.4.8", "3.4.7", "3.4.6", "3.4.5", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.3.7", "3.3.6", "3.3.5", "3.3.4", "3.3.3", "3.3.2", "3.3.1", "3.3.0", "3.2.6", "3.2.5", "3.2.4", "3.2.3", "3.2.2", "3.2.1", "3.2.0", "3.1.5", "3.1.4", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.1", "3.0.0"]} \ No newline at end of file diff --git a/relenv/pyversions.py b/relenv/pyversions.py index 736af97d..0d2e5365 100644 --- a/relenv/pyversions.py +++ b/relenv/pyversions.py @@ -356,6 +356,13 @@ def setup_parser(subparsers): description=("Versions utility"), ) subparser.set_defaults(func=main) + subparser.add_argument( + "-u", + "--update", + default=False, + action="store_true", + help="Update versions", + ) subparser.add_argument( "-l", "--list", @@ -375,6 +382,8 @@ def main(args): """ Versions utility main method. """ + if args.update: + python_versions(create=True) if args.list: for version in python_versions(): print(version) @@ -399,4 +408,5 @@ def main(args): if __name__ == "__main__": - main() + print("WTF") + _main() From e5cbf1ce5c54df3ec3aaaf8dd7ddc461d81beaab Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sun, 13 Jul 2025 15:23:12 -0700 Subject: [PATCH 41/41] Clean up cruft --- relenv/build/darwin.py | 17 +---------------- relenv/build/linux.py | 17 +---------------- relenv/build/windows.py | 17 +---------------- relenv/pyversions.py | 1 - 4 files changed, 3 insertions(+), 49 deletions(-) diff --git a/relenv/build/darwin.py b/relenv/build/darwin.py index 5e0f5222..c53d7651 100644 --- a/relenv/build/darwin.py +++ b/relenv/build/darwin.py @@ -72,7 +72,7 @@ def build_python(env, dirs, logfp): runcmd(["make", "install"], env=env, stderr=logfp, stdout=logfp) -build = builds.add("darwin", populate_env=populate_env) # , version="3.10.17") +build = builds.add("darwin", populate_env=populate_env) build.add( "openssl", @@ -128,18 +128,3 @@ def build_python(env, dirs, logfp): "python", ], ) - -# build = build.copy( -# version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" -# ) -# builds.add("darwin", builder=build) -# -# build = build.copy( -# version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" -# ) -# builds.add("darwin", builder=build) -# -# build = build.copy( -# version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" -# ) -# builds.add("darwin", builder=build) diff --git a/relenv/build/linux.py b/relenv/build/linux.py index 15f7de75..8ac59f2a 100644 --- a/relenv/build/linux.py +++ b/relenv/build/linux.py @@ -445,7 +445,7 @@ def build_python(env, dirs, logfp): # runcmd([str(python), "-m", "ensurepip", "-U"], env=env, stderr=logfp, stdout=logfp) -build = builds.add("linux", populate_env=populate_env) # , version="3.10.17") +build = builds.add("linux", populate_env=populate_env) build.add( "openssl", @@ -651,18 +651,3 @@ def build_python(env, dirs, logfp): "openssl-fips-module", ], ) - -# build = build.copy( -# version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" -# ) -# builds.add("linux", builder=build) -# -# build = build.copy( -# version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" -# ) -# builds.add("linux", builder=build) -# -# build = build.copy( -# version="3.13.3", checksum="f26085cf12daef7b60b8a6fe93ef988b9a094aea" -# ) -# builds.add("linux", builder=build) diff --git a/relenv/build/windows.py b/relenv/build/windows.py index 2a77ecdc..4bedaf9c 100644 --- a/relenv/build/windows.py +++ b/relenv/build/windows.py @@ -130,7 +130,7 @@ def build_python(env, dirs, logfp): ) -build = builds.add("win32", populate_env=populate_env) # version="3.10.17") +build = builds.add("win32", populate_env=populate_env) build.add( "python", @@ -210,18 +210,3 @@ def runpip(pkg): build_func=finalize, wait_on=["python"], ) - -# build = build.copy( -# version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d" -# ) -# builds.add("win32", builder=build) -# -# build = build.copy( -# version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb" -# ) -# builds.add("win32", builder=build) -# -# build = build.copy( -# version="3.13.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba" -# ) -# builds.add("win32", builder=build) diff --git a/relenv/pyversions.py b/relenv/pyversions.py index 0d2e5365..d6d4779b 100644 --- a/relenv/pyversions.py +++ b/relenv/pyversions.py @@ -408,5 +408,4 @@ def main(args): if __name__ == "__main__": - print("WTF") _main()