Determine toolchain archive name based on profile

pull/365/head
Dmitry Ilyin 2022-08-16 18:34:03 +03:00
parent 7bfb267777
commit f1ae984234
3 changed files with 70 additions and 52 deletions

View File

@ -19,23 +19,24 @@ on:
jobs: jobs:
toolchain: toolchain:
name: Build toolchain name: Toolchain
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
FAMILY: hi3516ev200 FAMILY: hi3516ev200
outputs:
sdk-file: ${{ steps.build-sdk.outputs.sdk-file }}
steps: steps:
- name: Checkout - name: Checkout
id: checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit. fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
- name: Determine toolchain name
run: |
TOOLNAME=$(make BOARD=unknown_unknown_${FAMILY}_openipc toolname)
echo "TOOLNAME=$TOOLNAME" >> $GITHUB_ENV
- name: Install build dependencies - name: Install build dependencies
run: | run: |
make install-deps make install-deps
@ -53,7 +54,6 @@ jobs:
run: | run: |
sudo apt clean sudo apt clean
docker rmi $(docker image ls -aq) docker rmi $(docker image ls -aq)
df -h
- name: Build Buildroot SDK - name: Build Buildroot SDK
id: build-sdk id: build-sdk
@ -78,13 +78,10 @@ jobs:
make BOARD=unknown_unknown_${FAMILY}_openipc br-sdk make BOARD=unknown_unknown_${FAMILY}_openipc br-sdk
SDK_PATH=$(find output/images -name "*_sdk-buildroot.tar.gz") SDK_PATH=$(find output/images -name "*_sdk-buildroot.tar.gz")
echo "SDK_PATH=$SDK_PATH" >> $GITHUB_ENV echo "SDK_PATH=$SDK_PATH" >> $GITHUB_ENV
SDK_FILE=$(basename $SDK_PATH)
echo "SDK_FILE=$SDK_FILE" >> $GITHUB_ENV
echo "::set-output name=sdk-file::$SDK_FILE"
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
with: with:
name: ${{ env.SDK_FILE }} name: ${{ env.TOOLNAME }}
path: ${{ env.SDK_PATH }} path: ${{ env.SDK_PATH }}
retention-days: 1 retention-days: 1
@ -106,12 +103,12 @@ jobs:
with: with:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.SDK_PATH }} file: ${{ env.SDK_PATH }}
asset_name: ${{ env.SDK_FILE }} asset_name: ${{ env.TOOLNAME }}
tag: ${{ env.TAG_NAME }} tag: ${{ env.TAG_NAME }}
overwrite: true overwrite: true
buildroot: buildroot:
name: Build firmware name: Firmware
needs: toolchain needs: toolchain
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -138,7 +135,6 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
id: checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit. fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
@ -160,7 +156,6 @@ jobs:
run: | run: |
sudo apt clean sudo apt clean
docker rmi $(docker image ls -aq) docker rmi $(docker image ls -aq)
df -h
- name: Prepare buildroot - name: Prepare buildroot
id: prepare id: prepare
@ -186,7 +181,7 @@ jobs:
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v3
with: with:
name: ${{ needs.toolchain.outputs.sdk-file }} name: ${{ env.TOOLNAME }}
- name: Build firmware - name: Build firmware
run: | run: |
@ -205,7 +200,7 @@ jobs:
CONF_PATH=$(find . -name "${BOARD}_defconfig") CONF_PATH=$(find . -name "${BOARD}_defconfig")
echo Using ${{ needs.toolchain.outputs.sdk-file }} echo Using $TOOLNAME
echo "BR2_TOOLCHAIN_EXTERNAL=y" >> $CONF_PATH echo "BR2_TOOLCHAIN_EXTERNAL=y" >> $CONF_PATH
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y" >> $CONF_PATH echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y" >> $CONF_PATH
echo "BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y" >> $CONF_PATH echo "BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y" >> $CONF_PATH
@ -217,7 +212,7 @@ jobs:
LIBC="musl" LIBC="musl"
echo "BR2_ROOTFS_POST_BUILD_SCRIPT=\"\$(TOPDIR)/../scripts/executing_commands_for_${LIBC}.sh\"" >> $CONF_PATH echo "BR2_ROOTFS_POST_BUILD_SCRIPT=\"\$(TOPDIR)/../scripts/executing_commands_for_${LIBC}.sh\"" >> $CONF_PATH
mkdir /tmp/extsdk mkdir /tmp/extsdk
tar xvf ${{ needs.toolchain.outputs.sdk-file }} --strip-components=1 -C /tmp/extsdk >/dev/null tar xvf $TOOLNAME --strip-components=1 -C /tmp/extsdk >/dev/null
HAS_NAND=$(make BOARD=${BOARD} has-nand) HAS_NAND=$(make BOARD=${BOARD} has-nand)
echo "HAS_NAND=$HAS_NAND" >> $GITHUB_ENV echo "HAS_NAND=$HAS_NAND" >> $GITHUB_ENV

View File

@ -56,7 +56,8 @@ $(BR_DIR): $(ROOT_DIR)/buildroot-$(BR_VER).tar.gz
install-deps: install-deps:
DEBIAN_FRONTEND=noninteractive sudo apt-get update && sudo apt-get -y install build-essential make libncurses-dev wget DEBIAN_FRONTEND=noninteractive sudo apt-get update && \
sudo apt-get -y install build-essential make libncurses-dev wget cpio rsync bc
%_info: %_info:
@ -70,6 +71,9 @@ install-deps:
has-nand: has-nand:
@sed -rn "s/^BR2_TARGET_ROOTFS_UBI=(y)/\1/p" $(FULL_PATH) @sed -rn "s/^BR2_TARGET_ROOTFS_UBI=(y)/\1/p" $(FULL_PATH)
toolname:
@$(SCRIPTS_DIR)/show_toolchains.sh board $(FULL_PATH)
list-configs: list-configs:
@echo @echo
@ls -1 $(BR_EXT_DIR)/configs @ls -1 $(BR_EXT_DIR)/configs

View File

@ -2,12 +2,10 @@
shopt -s nullglob shopt -s nullglob
if [ $# -eq 0 ]; then toolchain_by_config() {
$0 1 | sort CF=$1
#$0 1 | sort | uniq FMT=$2
else
for D in br-ext-chip-*; do
for CF in $D/configs/*; do
BR2_VER=$(grep BR2_DEFAULT_KERNEL_VERSION $CF) BR2_VER=$(grep BR2_DEFAULT_KERNEL_VERSION $CF)
if [ ! -z $BR2_VER ]; then if [ ! -z $BR2_VER ]; then
VENDOR=$(echo $CF | cut -d - -f 4 | cut -d / -f 1 | sed -r 's/\<./\U&/g') VENDOR=$(echo $CF | cut -d - -f 4 | cut -d / -f 1 | sed -r 's/\<./\U&/g')
@ -34,9 +32,30 @@ else
LIBC=$(sed -rn "s/^BR2_TOOLCHAIN_BUILDROOT_LIBC=\"(.*)\"/\1/p" $CF) LIBC=$(sed -rn "s/^BR2_TOOLCHAIN_BUILDROOT_LIBC=\"(.*)\"/\1/p" $CF)
SOC=$(echo $CF | cut -d _ -f 3) SOC=$(echo $CF | cut -d _ -f 3)
# $GCC_VER case $FMT in
echo $ARCH $LIBC $VER $VENDOR $CF "list")
echo $ARCH $GCC_VER $LIBC $VER $VENDOR $CF
;;
"uniq")
echo $ARCH $GCC_VER $LIBC $VER
;;
"board")
echo ${ARCH}-gcc${GCC_VER}-${LIBC}-${VER}
;;
esac
fi fi
}
if [ $# -eq 0 ]; then
$0 list | sort
else
if [ "$1" == "board" ]; then
toolchain_by_config $2 $1
else
for D in br-ext-chip-*; do
for CF in $D/configs/*; do
toolchain_by_config $CF $1
done done
done done
fi fi
fi