diff --git a/.github/workflows/build-packages-pr.yaml b/.github/workflows/build-packages-pr.yaml index 1022547..63277cb 100644 --- a/.github/workflows/build-packages-pr.yaml +++ b/.github/workflows/build-packages-pr.yaml @@ -2,6 +2,7 @@ name: Build packages PR on: pull_request: + types: [ labeled ] paths: - 'packages/**' - 'packages.sh' @@ -24,3 +25,9 @@ jobs: uses: duhow/xiaoai-patch/.github/workflows/build-packages.yaml@master with: model: LX06 + s12: + name: S12 + if: contains(github.event.pull_request.labels.*.name, 'S12') + uses: duhow/xiaoai-patch/.github/workflows/build-packages.yaml@master + with: + model: S12 diff --git a/packages.sh b/packages.sh index d9c6976..03eda4f 100755 --- a/packages.sh +++ b/packages.sh @@ -630,12 +630,18 @@ done BUILD_ID=$(rand_str) BUILD_ARCH="armv7" +if [[ ! -z "${ARCH}" ]]; then + BUILD_ARCH="${ARCH}" +fi if [[ -f "squashfs-root/usr/share/mico/version" ]]; then BUILD_MODEL=$(grep HARDWARE squashfs-root/usr/share/mico/version | awk '{print $3}' | tr -d "'" | tr "[:lower:]" "[:upper:]") fi if [[ ! -z "${MODEL}" ]]; then BUILD_MODEL="${MODEL}" fi +if [[ "${BUILD_MODEL}" = "S12" ]]; then + BUILD_ARCH="aarch64" +fi HOST_ARCH=$(uname -m) ymd=$(date '+%Y%m%d') PACKAGES_PROCESSED=() diff --git a/packages/glibc/package.mk b/packages/glibc/package.mk index 3ad0653..584ca60 100644 --- a/packages/glibc/package.mk +++ b/packages/glibc/package.mk @@ -1,5 +1,8 @@ PACKAGE_NAME="GNU C Library" PACKAGE_VERSION="2.27" + +[ "${BUILD_MODEL}" = "S12" ] && PACKAGE_VERSION="2.19" + PACKAGE_SRC="https://github.com/bminor/glibc/archive/refs/tags/glibc-${PACKAGE_VERSION}.tar.gz" PACKAGE_DEPENDS="toolchain kernel-headers" PACKAGE_USE_SEPARATE_BUILD_DIR="true" diff --git a/packages/kernel-headers/package.mk b/packages/kernel-headers/package.mk index 797015a..23eabd5 100644 --- a/packages/kernel-headers/package.mk +++ b/packages/kernel-headers/package.mk @@ -1,9 +1,8 @@ PACKAGE_NAME="Linux kernel headers" PACKAGE_VERSION="4.9.61" # LX06 -if [ "${BUILD_MODEL}" = "LX01" ]; then -PACKAGE_VERSION="3.4.39" -fi +[ "${BUILD_MODEL}" = "LX01" ] && PACKAGE_VERSION="3.4.39" +[ "${BUILD_MODEL}" = "S12" ] && PACKAGE_VERSION="3.14.29" PACKAGE_SRC="https://cdn.kernel.org/pub/linux/kernel/v${PACKAGE_VERSION:0:1}.x/linux-${PACKAGE_VERSION}.tar.xz" @@ -14,10 +13,10 @@ install_package() { "arm"|"armv7") kernel_arch="arm" ;; - "x86") - kernel_arch="x86" + "aarch64") + kernel_arch="arm64" ;; - *) + *) echo_error "Error: Unknown target '${BUILD_ARCH}'. Toolchain setup failed." return 1 ;; diff --git a/packages/toolchain/package.mk b/packages/toolchain/package.mk index 20b2e98..9f08825 100644 --- a/packages/toolchain/package.mk +++ b/packages/toolchain/package.mk @@ -1,67 +1,33 @@ PACKAGE_NAME="GNU Toolchain for the A-profile Architecture" -PACKAGE_VERSION="GCC 7.4-2019.02" -PACKAGE_SRC="https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz" +PACKAGE_VERSION="7.4.1-2019.02" +PACKAGE_SUBVERSION="7.4-2019.02" +BUILD_TARGET="arm-linux-gnueabihf" + +if [ "${BUILD_ARCH}" = "aarch64" ] || [ "${MODEL}" = "S12" ]; then +BUILD_TARGET="aarch64-linux-gnu" +fi + +PACKAGE_SRC="https://releases.linaro.org/components/toolchain/binaries/${PACKAGE_SUBVERSION}/${BUILD_TARGET}/gcc-linaro-${PACKAGE_VERSION}-x86_64_${BUILD_TARGET}.tar.xz" if [ "${HOST_ARCH}" = "aarch64" ]; then PACKAGE_VERSION="10.2-2020.11" PACKAGE_SRC="https://developer.arm.com/-/media/Files/downloads/gnu-a/${PACKAGE_VERSION}/binrel/gcc-arm-${PACKAGE_VERSION}-aarch64-arm-none-linux-gnueabihf.tar.xz" fi + on_exit_build() { TOOLCHAIN_DIR=$(pwd) case ${BUILD_ARCH} in - "arm") - BUILD_TARGET="arm-linux-gnueabihf" - BUILD_LDFLAGS="-L${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/pulseaudio -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/private -Wl,--rpath-link=${TOOLCHAIN_DIR}/${BUILD_TARGET}/libc/lib -Wl,--rpath=${INSTALL_PREFIX}/${BUILD_TARGET}/lib -Wl,--rpath=${INSTALL_PREFIX}/lib -Wl,--dynamic-linker=${INSTALL_PREFIX}/${BUILD_TARGET}/lib/ld-linux-armhf.so.3" - ;; - "armv7") - BUILD_TARGET="arm-linux-gnueabihf" - + "armv7") + LIBPATH="lib" # using GCC-10 [[ "${HOST_ARCH}" = "aarch64" ]] && BUILD_TARGET="arm-none-linux-gnueabihf" - BUILD_LDFLAGS="-L${STAGING_DIR}/lib -L${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/pulseaudio -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/private -Wl,--rpath=${INSTALL_PREFIX}/${BUILD_TARGET}/lib -Wl,--rpath=${INSTALL_PREFIX}/lib -Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3 -Os" + BUILD_LDFLAGS="-L${STAGING_DIR}/lib -L${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/pulseaudio -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/private -Wl,--rpath=${INSTALL_PREFIX}/${BUILD_TARGET}/lib -Wl,--rpath=${INSTALL_PREFIX}/lib -Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3 -Os" ;; - "x86") - BUILD_TARGET="i686-linux" - BUILD_LDFLAGS="-L${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/pulseaudio -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/private -Wl,--rpath=${INSTALL_PREFIX}/${BUILD_TARGET}/lib -Wl,--rpath=${INSTALL_PREFIX}/lib -Wl,--dynamic-linker=${INSTALL_PREFIX}/${BUILD_TARGET}/lib/ld-linux.so.2" - # bison in this toolchain is looking at wrong paths, use system one instead - # https://github.com/bootlin/toolchains-builder/issues/17 - if [[ -e ${TOOLCHAIN_DIR}/bin/bison ]]; then - mv ${TOOLCHAIN_DIR}/bin/bison ${TOOLCHAIN_DIR}/bin/bison.disabled - fi - # Use system's Python - if [[ -e ${TOOLCHAIN_DIR}/bin/python3 ]]; then - mv ${TOOLCHAIN_DIR}/bin/python3 ${TOOLCHAIN_DIR}/bin/python3.disabled - fi - # Use system's autoconf - if [[ -e ${TOOLCHAIN_DIR}/bin/autoconf ]]; then - mv ${TOOLCHAIN_DIR}/bin/autoconf ${TOOLCHAIN_DIR}/bin/autoconf.disabled - fi - # Use system's autoreconf - if [[ -e ${TOOLCHAIN_DIR}/bin/autoreconf ]]; then - mv ${TOOLCHAIN_DIR}/bin/autoreconf ${TOOLCHAIN_DIR}/bin/autoreconf.disabled - fi - # Use system's aclocal - if [[ -e ${TOOLCHAIN_DIR}/bin/aclocal ]]; then - mv ${TOOLCHAIN_DIR}/bin/aclocal ${TOOLCHAIN_DIR}/bin/aclocal.disabled - fi - # Use system's autoheader - if [[ -e ${TOOLCHAIN_DIR}/bin/autoheader ]]; then - mv ${TOOLCHAIN_DIR}/bin/autoheader ${TOOLCHAIN_DIR}/bin/autoheader.disabled - fi - # Use system's autom4te - if [[ -e ${TOOLCHAIN_DIR}/bin/autom4te ]]; then - mv ${TOOLCHAIN_DIR}/bin/autom4te ${TOOLCHAIN_DIR}/bin/autom4te.disabled - fi - # Use system's libtoolize - if [[ -e ${TOOLCHAIN_DIR}/bin/libtoolize ]]; then - mv ${TOOLCHAIN_DIR}/bin/libtoolize ${TOOLCHAIN_DIR}/bin/libtoolize.disabled - fi - # Use system's automake - if [[ -e ${TOOLCHAIN_DIR}/bin/automake ]]; then - mv ${TOOLCHAIN_DIR}/bin/automake ${TOOLCHAIN_DIR}/bin/automake.disabled - fi + "aarch64") + LIBPATH="lib64" + BUILD_LDFLAGS="-L${STAGING_DIR}/lib -L${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/pulseaudio -Wl,--rpath-link=${STAGING_DIR}/${INSTALL_PREFIX}/lib/private -Wl,--rpath=${INSTALL_PREFIX}/${BUILD_TARGET}/lib -Wl,--rpath=${INSTALL_PREFIX}/lib -Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3 -Os" ;; *) echo_error "Error: Unknown target '${BUILD_ARCH}'. Toolchain setup failed." @@ -90,7 +56,7 @@ on_exit_build() { in_to_out ${PACKAGE_DIR}/config/meson-cross-file.in ${TOOLCHAIN_MESON} # HACK to avoid errors with LDFLAGS files not found - for FILE in /lib/libc.so.6 /lib/ld-linux-armhf.so.3 /usr/lib/libc_nonshared.a /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a ; do + for FILE in /${LIBPATH}/libc.so.6 /${LIBPATH}/ld-linux-armhf.so.3 /${LIBPATH}/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1 /usr/${LIBPATH}/libc_nonshared.a /${LIBPATH}/libpthread.so.0 /usr/${LIBPATH}/libpthread_nonshared.a ; do [ ! -e ${FILE} ] && ln -s ${STAGING_DIR}/${FILE} ${FILE} done