Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build binaries for aarch64 speakers #29

Merged
merged 6 commits into from
Jan 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/build-packages-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: Build packages PR

on:
pull_request:
types: [ labeled ]
paths:
- 'packages/**'
- 'packages.sh'
Expand All @@ -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
6 changes: 6 additions & 0 deletions packages.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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=()
Expand Down
3 changes: 3 additions & 0 deletions packages/glibc/package.mk
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
11 changes: 5 additions & 6 deletions packages/kernel-headers/package.mk
Original file line number Diff line number Diff line change
@@ -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"

Expand All @@ -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
;;
Expand Down
68 changes: 17 additions & 51 deletions packages/toolchain/package.mk
Original file line number Diff line number Diff line change
@@ -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."
Expand Down Expand Up @@ -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

Expand Down