From 8267e2e4daa914c4eb835a56892c362c4be80390 Mon Sep 17 00:00:00 2001 From: Egor Tsyganchuk Date: Mon, 6 Apr 2026 15:09:07 +0300 Subject: [PATCH] Refactor toolchain packaging process by introducing package-toolchain.sh - Replaced the packaging logic in build-toolchain.sh with a call to the new package-toolchain.sh script for better organization and maintainability. - Added package-toolchain.sh to handle the stripping and archiving of the toolchain, including necessary checks for the installation directory and environment script. - Updated README.md to document the addition of package-toolchain.sh for clarity on the build process. --- README.md | 3 ++- build-toolchain.sh | 15 +-------------- package-toolchain.sh | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 package-toolchain.sh diff --git a/README.md b/README.md index ae59c8c..dec1a12 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ | OpenSSL | 3.0.13 | Криптография | | LibVNCServer | 0.9.14 | VNC-сервер | | FreeType | 2.13.2 | Рендеринг шрифтов | -| libnl | 3.7.0 | Netlink для Linux | +| libnl | 3.2.0 | Netlink для Linux | Все библиотеки собираются статически. @@ -114,6 +114,7 @@ source ./env.sh build-toolchain/ ├── build-toolchain.sh # Основной скрипт сборки ├── build-libraries.sh # Сборка дополнительных библиотек +├── package-toolchain.sh # Упаковка готового тулчейна ├── download_prerequisites.sh # Загрузка исходников ├── scripts/ │ └── env.sh # Настройка окружения (копируется в архив) diff --git a/build-toolchain.sh b/build-toolchain.sh index 2a2ecf1..2b3b1ed 100755 --- a/build-toolchain.sh +++ b/build-toolchain.sh @@ -211,21 +211,8 @@ cd "${TOP}" # ================================================================== # Strip и упаковка # ================================================================== -echo "== Strip toolchain и упаковка ==" - cd "${TOP}" -WDIR=$(mktemp -d) -trap 'rm -rf "$WDIR"' EXIT - -ARCHIVE_TOOLCHAIN_DIR="${WDIR}/${TARGET}" -mkdir -p "${ARCHIVE_TOOLCHAIN_DIR}" -cp -a "${INSTALL_DIR}"/* "${ARCHIVE_TOOLCHAIN_DIR}/" -cp -a "${TOP}/scripts/env.sh" "${WDIR}/env.sh" - -find "${ARCHIVE_TOOLCHAIN_DIR}" -type f -executable -exec strip -p {} \; 2>/dev/null || true - -tar -C "$WDIR" --owner=0 --group=0 -cJf "toolset-jlv-${SUBARCH}-gcc${GCC_VER}-uclibc${UCLIBC_VER}.tar.xz" "${TARGET}" "env.sh" -echo "Готово: toolset-jlv-${SUBARCH}-gcc${GCC_VER}-uclibc${UCLIBC_VER}.tar.xz" +bash ./package-toolchain.sh "${TARGET}" "${SUBARCH}" "${INSTALL_DIR}" # ================================================================== # Очистка diff --git a/package-toolchain.sh b/package-toolchain.sh new file mode 100644 index 0000000..7f9d851 --- /dev/null +++ b/package-toolchain.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -e + +source "$(dirname "$0")/versions.sh" + +TOP="$(pwd)" +TARGET="${1:-arm-uclinuxfdpiceabi}" +SUBARCH="${2:-armv7-m}" +INSTALL_DIR="${3:-${TOP}/build/install}" + +if [ ! -d "${INSTALL_DIR}" ]; then + echo "Ошибка: директория установки не найдена: ${INSTALL_DIR}" + exit 1 +fi + +if [ ! -f "${TOP}/scripts/env.sh" ]; then + echo "Ошибка: файл окружения не найден: ${TOP}/scripts/env.sh" + exit 1 +fi + +echo "== Strip toolchain и упаковка ==" + +WDIR="$(mktemp -d)" +trap 'rm -rf "$WDIR"' EXIT + +ARCHIVE_TOOLCHAIN_DIR="${WDIR}/${TARGET}" +mkdir -p "${ARCHIVE_TOOLCHAIN_DIR}" +cp -a "${INSTALL_DIR}"/* "${ARCHIVE_TOOLCHAIN_DIR}/" +cp -a "${TOP}/scripts/env.sh" "${WDIR}/env.sh" + +find "${ARCHIVE_TOOLCHAIN_DIR}" -type f -executable -exec strip -p {} \; 2>/dev/null || true + +ARCHIVE_NAME="toolset-jlv-${SUBARCH}-gcc${GCC_VER}-uclibc${UCLIBC_VER}.tar.xz" +tar -C "${WDIR}" --owner=0 --group=0 -cJf "${ARCHIVE_NAME}" "${TARGET}" "env.sh" + +echo "Готово: ${ARCHIVE_NAME}"