diff --git a/.github/workflows/build-cross-action.yml b/.github/workflows/build-cross-action.yml
index cc8b51db..34ebf235 100644
--- a/.github/workflows/build-cross-action.yml
+++ b/.github/workflows/build-cross-action.yml
@@ -55,7 +55,7 @@ jobs:
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
+ 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 f0ac238b..9966d7d8 100644
--- a/.github/workflows/build-native-action.yml
+++ b/.github/workflows/build-native-action.yml
@@ -50,27 +50,16 @@ jobs:
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
+ venv/bin/python3 -m pip install nox ppbt
- name: Python Version
run: |
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 }}
+ venv/bin/python3 -m relenv build --no-pretty --arch=${{ matrix.target }} --python=${{ matrix.version }}
- name: Verify Build
if: ${{ matrix.host == matrix.target }}
@@ -87,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
@@ -130,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: |
@@ -188,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: |
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bff42d4c..cff68cb7 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 }}
@@ -103,17 +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
- # - toolchain
- # - build-native
- # with:
- # changed-files: ${{ needs.get-changed-files.outputs.changed-files }}
- # kind: "cross"
-
test:
name: Test
needs:
@@ -142,6 +116,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 +139,7 @@ jobs:
- docs
- build-python-package
- test-fips
+ - upload-build-artifacts
steps:
- uses: actions/create-github-app-token@v1
id: app-token
@@ -185,14 +172,15 @@ jobs:
if: always()
needs:
- pre-commit
- - toolchain
- build-native
#- build-cross
- test
- docs
+ - upload-build-artifacts
- 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 2454a7ee..97b10a7c 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 binutils glibc-devel linux-api-headers libffi-devel
- uses: actions/checkout@v3
@@ -41,6 +41,12 @@ jobs:
run: |
virtualenv venv
+ - 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
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/relenv/__main__.py b/relenv/__main__.py
index 50757d0f..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)
@@ -47,10 +48,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")
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/__init__.py b/relenv/build/__init__.py
index 828dbf30..098510a5 100644
--- a/relenv/build/__init__.py
+++ b/relenv/build/__init__.py
@@ -11,6 +11,8 @@
from . import linux, darwin, windows
from .common import builds, CHECK_VERSIONS_SUPPORT
+from ..pyversions import python_versions, Version
+
from ..common import build_arch
@@ -26,13 +28,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 +58,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 +140,34 @@ 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}")
+ strversions = "\n".join([str(_) for _ in pyversions])
+ print(f"Known versions are:\n{strversions}")
+ 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}")
+
# 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 f273087e..e0ba6bfa 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:
+ print("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]
@@ -768,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
@@ -809,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
@@ -823,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)
@@ -855,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":
@@ -974,6 +994,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])
@@ -1191,10 +1212,11 @@ def check_prereqs(self):
:rtype: list
"""
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."
- )
+ 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__(
@@ -1470,6 +1492,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,
@@ -1578,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:
@@ -1591,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/build/darwin.py b/relenv/build/darwin.py
index c2e4cb96..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 7f866dec..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.5", checksum="dbf3aed444cbb2221eabfb52688aa371423aa0ba"
-)
-builds.add("linux", builder=build)
diff --git a/relenv/build/windows.py b/relenv/build/windows.py
index a7dfe74e..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/buildenv.py b/relenv/buildenv.py
index 8a28e1d6..0af9a31b 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,11 @@ def buildenv(relenv_path=None):
if sys.platform != "linux":
raise RelenvException("buildenv is only supported on Linux")
- dirs = work_dirs()
+ toolchain = get_toolchain()
+ if not toolchain:
+ raise RelenvException("buildenv is only supported on Linux")
+
triplet = get_triplet()
- toolchain = dirs.toolchain / get_triplet()
env = {
"RELENV_BUILDENV": "1",
"TOOLCHAIN_PATH": f"{toolchain}",
@@ -90,12 +104,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 62a9acae..00fae653 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",
@@ -160,6 +162,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)
@@ -224,10 +227,18 @@ 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
+ if sys.platform != "linux":
+ return DATA_DIR
+ ppbt = None
+
+ try:
+ import ppbt
+ except ImportError:
+ pass
+
+ if ppbt:
+ env = ppbt.environ(auto_extract=True)
+ return pathlib.Path(env["TOOLCHAIN_PATH"])
def get_triplet(machine=None, plat=None):
@@ -342,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:
@@ -405,6 +429,62 @@ def fetch_url(url, fp, backoff=3, timeout=30):
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 gzip
+ import io
+ import urllib.error
+ import urllib.request
+
+ 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":
+ log.debug("Found gzipped content")
+ fp = gzip.GzipFile(fileobj=fp)
+ return fp.read().decode()
+
+
def download_url(url, dest, verbose=True, backoff=3, timeout=60):
"""
Download the url to the provided destination.
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..b43f5330
--- /dev/null
+++ b/relenv/python-versions.json
@@ -0,0 +1 @@
+{"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
new file mode 100644
index 00000000..d6d4779b
--- /dev/null
+++ b/relenv/pyversions.py
@@ -0,0 +1,411 @@
+# Copyright 2025 Broadcom.
+# SPDX-License-Identifier: Apache-2.0
+"""
+Versions utility.
+"""
+# try:
+# from packaging.version import Version
+# except ImportError:
+# raise RuntimeError(
+# "Required dependencies not found. Please pip install relenv[pyversions]"
+# )
+#
+
+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",
+ "keys.openpgp.org",
+ "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]
+ return Version(_)
+
+
+def _ref_path(x):
+ return x.split('href="')[1].split('"')[0]
+
+
+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):
+ 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"
+
+
+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):
+ """
+ Verify gpg 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(f"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
+
+
+PRINT = True
+CHECK = True
+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 = {}
+
+ 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:
+ 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=url_version, ext="tar.xz")
+ if CHECK:
+ check_url(url)
+ check_url(f"{url}.asc")
+ else:
+ 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=url_version, ext="tgz")
+ if CHECK:
+ check_url(url)
+ # No signatures prior to 2.3
+ if version >= Version("2.3"):
+ check_url(f"{url}.asc")
+ else:
+ path = download_url(url, cwd)
+ if version >= Version("2.3"):
+ 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(
+ "-u",
+ "--update",
+ default=False,
+ action="store_true",
+ help="Update versions",
+ )
+ 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.update:
+ python_versions(create=True)
+ 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 0888d8f3..e2beca11 100644
--- a/relenv/runtime.py
+++ b/relenv/runtime.py
@@ -601,8 +601,19 @@ def wrap_pip_build_wheel(name):
def wrap(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
- dirs = common().work_dirs()
- toolchain = dirs.toolchain / common().get_triplet()
+ 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
+ toolchain = common().get_toolchain()
+ if not toolchain:
+ if os.environ.get("RELENV_BUILDENV", 0):
+ raise RuntimeError("No toolchain installed")
+ return func(*args, **kwargs)
+
if not toolchain.exists():
debug("Unable to set CARGO_HOME no toolchain exists")
else:
@@ -612,7 +623,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)
@@ -697,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
@@ -825,13 +840,28 @@ 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)
+
triplet = common().get_triplet()
- dirs = common().work_dirs()
- toolchain = dirs.toolchain / triplet
+ # dirs = common().work_dirs()
+
+ toolchain = common().get_toolchain()
+ if not toolchain:
+ 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/relenv/toolchain.py b/relenv/toolchain.py
index 65b0137b..18db7391 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,15 @@ 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
+def main(*args, **kwargs):
"""
- 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):
+ Notify users of toolchain command deprecation.
"""
- 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``
- """
- 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 relenv[toolchain]."
+ )
if __name__ == "__main__":
- from argparse import ArgumentParser
-
- main(ArgumentParser())
+ main()
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 238cb017..c31bda0d 100644
--- a/requirements/tests.txt
+++ b/requirements/tests.txt
@@ -4,3 +4,4 @@
pytest
pytest-skip-markers
swig
+ppbt; sys_platform == 'linux'
diff --git a/setup.cfg b/setup.cfg
index 16579870..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
@@ -18,7 +18,6 @@ package_dir =
relenv = relenv
include_package_data = True
-
[options.entry_points]
console_scripts =
relenv = relenv.__main__:main
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__":
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):
diff --git a/tests/test_build.py b/tests/test_build.py
index 0fc04825..b151831a 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -29,8 +29,8 @@ 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.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..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 ret == data_dir / "toolchain" / "aarch64-linux-gnu"
+ 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 ret == data_dir / "toolchain"
+ 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", ""))
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_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()
diff --git a/tests/test_verify_build.py b/tests/test_verify_build.py
index 91a3b649..47bbed12 100644
--- a/tests/test_verify_build.py
+++ b/tests/test_verify_build.py
@@ -1,9 +1,9 @@
-# Copyright 2025 Broadcom.
-# Copyright 2022-2024 VMware, Inc.
+# Copyright 2022-2025 Broadcom.
# SPDX-License-Identifier: Apache-2
"""
Verify relenv builds.
"""
+import json
import os
import pathlib
import platform
@@ -16,7 +16,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
@@ -47,6 +47,31 @@ def setup(pth_file_path):
"""
+def _install_ppbt(pexec):
+ if sys.platform in ["win32", "darwin"]:
+ return
+ 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"
+
+
@pytest.fixture(scope="module")
def arch():
return build_arch()
@@ -129,10 +154,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")
- # if sys.platform == "linux":
- # subprocess.run(
- # [pipexec, "--upgrade", "install", "setuptools>=72.2.0"], check=True
- # )
+ _install_ppbt(pipexec)
env = os.environ.copy()
env["RELENV_BUILDENV"] = "yes"
@@ -173,6 +195,9 @@ 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):
+
+ _install_ppbt(pipexec)
+
packages = [
"salt==3005",
]
@@ -198,6 +223,8 @@ def test_pip_install_salt(pipexec, build, tmp_path, pyexec):
@pytest.mark.skip_on_windows
def test_symlinked_scripts(pipexec, tmp_path, build):
+ _install_ppbt(pipexec)
+
name = "chardet==5.1.0"
env = os.environ.copy()
env["RELENV_DEBUG"] = "yes"
@@ -237,6 +264,8 @@ def test_pip_install_salt_w_static_requirements(
if salt_branch == "3006.x" and sys.platform == "win32":
pytest.xfail("Known failure")
+ _install_ppbt(pipexec)
+
env = os.environ.copy()
env["RELENV_BUILDENV"] = "yes"
env["USE_STATIC_REQUIREMENTS"] = "1"
@@ -296,6 +325,8 @@ def test_pip_install_salt_w_package_requirements(
if sys.platform == "darwin" and salt_branch == "3006.x":
pytest.xfail("Known failure")
+ _install_ppbt(pipexec)
+
env = os.environ.copy()
env["RELENV_BUILDENV"] = "yes"
env["USE_STATIC_REQUIREMENTS"] = "1"
@@ -395,6 +426,8 @@ 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")
+ _install_ppbt(pipexec)
+
env = os.environ.copy()
p = subprocess.run(
@@ -452,6 +485,7 @@ def test_pip_install_pyzmq(pipexec, pyzmq_version, build_version, arch, build):
def test_pip_install_cryptography(pipexec):
+ _install_ppbt(pipexec)
packages = [
"cryptography",
]
@@ -463,6 +497,7 @@ def test_pip_install_cryptography(pipexec):
def test_pip_install_idem(pipexec):
+ _install_ppbt(pipexec)
packages = [
"idem",
]
@@ -474,6 +509,7 @@ def test_pip_install_idem(pipexec):
def test_pip_install_and_import_libcloud(pipexec, pyexec):
+ _install_ppbt(pipexec)
name = "apache-libcloud"
env = os.environ.copy()
env["RELENV_BUILDENV"] = "yes"
@@ -500,6 +536,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")
+ _install_ppbt(pipexec)
env = os.environ.copy()
env["RELENV_BUILDENV"] = "yes"
env["RELENV_DEBUG"] = "yes"
@@ -517,6 +554,7 @@ def test_pip_install_salt_pip_dir(pipexec, build, build_version, arch):
def test_nox_virtualenvs(pipexec, build, tmp_path):
+ _install_ppbt(pipexec)
env = os.environ.copy()
env["RELENV_BUILDENV"] = "yes"
env["RELENV_DEBUG"] = "yes"
@@ -611,6 +649,20 @@ 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")
+
+ _install_ppbt(pipexec)
+
+ 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 +684,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 +693,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,
@@ -685,6 +731,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):
+ _install_ppbt(pipexec)
env = os.environ.copy()
env["RELENV_DEBUG"] = "yes"
env["RELENV_BUILDENV"] = "yes"
@@ -713,7 +760,16 @@ 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):
for fname in files:
@@ -726,6 +782,7 @@ def find_library(path, search):
[
str(pipexec),
"install",
+ "-v",
f"cryptography=={cryptography_version}",
"--no-cache-dir",
"--no-binary=cryptography",
@@ -775,11 +832,12 @@ 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
def test_install_pycurl(pipexec, build):
+ _install_ppbt(pipexec)
curlver = "8.0.1"
# Build curl and install it into the relenv environment
@@ -876,7 +934,6 @@ def build_dir(tmp_path):
],
)
def test_install_libgit2(pipexec, build, minor_version, build_dir, versions):
-
buildscript = textwrap.dedent(
"""\
set -e
@@ -952,6 +1009,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):
+ _install_ppbt(pipexec)
saslver = "2.1.28"
ldapver = "2.5.14"
@@ -1480,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"
@@ -1504,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__)")
@@ -1588,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(