CI: build: add support to fallback to sdk for external toolchain

Add support to use sdk as external toolchain if the packaged external
toolchain tar is not found on openwrt servers for build shared workflow.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit b59ac2a7d0)
This commit is contained in:
Christian Marangi 2022-11-28 16:12:13 +01:00 committed by Josef Schlehofer
parent 69c0c3c2f9
commit 006e52545d
No known key found for this signature in database
GPG Key ID: B950216FE4329F4C
1 changed files with 33 additions and 8 deletions

View File

@ -143,6 +143,7 @@ jobs:
- name: Parse toolchain file - name: Parse toolchain file
if: inputs.build_toolchain == false if: inputs.build_toolchain == false
id: parse-toolchain
working-directory: openwrt working-directory: openwrt
run: | run: |
TOOLCHAIN_PATH=snapshots TOOLCHAIN_PATH=snapshots
@ -169,22 +170,32 @@ jobs:
fi fi
fi fi
TOOLCHAIN_STRING="$(curl "https://downloads.cdn.openwrt.org/$TOOLCHAIN_PATH/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/sha256sums" \ SUMS_FILE="https://downloads.cdn.openwrt.org/$TOOLCHAIN_PATH/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/sha256sums"
| grep ".*openwrt-toolchain.*tar.xz")" if curl $SUMS_FILE | grep -q ".*openwrt-toolchain.*tar.xz"; then
TOOLCHAIN_STRING="$( curl $SUMS_FILE | grep ".*openwrt-toolchain.*tar.xz")"
TOOLCHAIN_FILE=$(echo "$TOOLCHAIN_STRING" | sed -n -e 's/.*\(openwrt-toolchain.*\).tar.xz/\1/p') TOOLCHAIN_FILE=$(echo "$TOOLCHAIN_STRING" | sed -n -e 's/.*\(openwrt-toolchain.*\).tar.xz/\1/p')
TOOLCHAIN_SHA256=$(echo "$TOOLCHAIN_STRING" | cut -d ' ' -f 1) TOOLCHAIN_SHA256=$(echo "$TOOLCHAIN_STRING" | cut -d ' ' -f 1)
echo "toolchain-type=external_toolchain" >> $GITHUB_OUTPUT
elif curl $SUMS_FILE | grep -q ".*openwrt-sdk.*tar.xz"; then
TOOLCHAIN_STRING="$( curl $SUMS_FILE | grep ".*openwrt-sdk.*tar.xz")"
TOOLCHAIN_FILE=$(echo "$TOOLCHAIN_STRING" | sed -n -e 's/.*\(openwrt-sdk.*\).tar.xz/\1/p')
TOOLCHAIN_SHA256=$(echo "$TOOLCHAIN_STRING" | cut -d ' ' -f 1)
echo "toolchain-type=external_sdk" >> $GITHUB_OUTPUT
fi
echo "TOOLCHAIN_FILE=$TOOLCHAIN_FILE" >> "$GITHUB_ENV" echo "TOOLCHAIN_FILE=$TOOLCHAIN_FILE" >> "$GITHUB_ENV"
echo "TOOLCHAIN_SHA256=$TOOLCHAIN_SHA256" >> "$GITHUB_ENV" echo "TOOLCHAIN_SHA256=$TOOLCHAIN_SHA256" >> "$GITHUB_ENV"
echo "TOOLCHAIN_PATH=$TOOLCHAIN_PATH" >> "$GITHUB_ENV" echo "TOOLCHAIN_PATH=$TOOLCHAIN_PATH" >> "$GITHUB_ENV"
- name: Cache external toolchain - name: Cache external toolchain/sdk
if: inputs.build_toolchain == false if: inputs.build_toolchain == false
id: cache-external-toolchain id: cache-external-toolchain
uses: actions/cache@v3 uses: actions/cache@v3
with: with:
path: openwrt/${{ env.TOOLCHAIN_FILE }} path: openwrt/${{ env.TOOLCHAIN_FILE }}
key: ${{ env.TOOLCHAIN_FILE }}-${{ env.TOOLCHAIN_SHA256 }} key: ${{ env.TOOLCHAIN_FILE }}-${{ steps.parse-toolchain.outputs.toolchain-type }}-${{ env.TOOLCHAIN_SHA256 }}
- name: Cache ccache - name: Cache ccache
uses: actions/cache@v3 uses: actions/cache@v3
@ -194,7 +205,7 @@ jobs:
restore-keys: | restore-keys: |
ccache-kernel-${{ env.TARGET }}/${{ env.SUBTARGET }}- ccache-kernel-${{ env.TARGET }}/${{ env.SUBTARGET }}-
- name: Download external toolchain - name: Download external toolchain/sdk
if: inputs.build_toolchain == false && steps.cache-external-toolchain.outputs.cache-hit != 'true' if: inputs.build_toolchain == false && steps.cache-external-toolchain.outputs.cache-hit != 'true'
shell: su buildbot -c "sh -e {0}" shell: su buildbot -c "sh -e {0}"
working-directory: openwrt working-directory: openwrt
@ -238,7 +249,7 @@ jobs:
echo CONFIG_TARGET_ALL_PROFILES=y >> .config echo CONFIG_TARGET_ALL_PROFILES=y >> .config
- name: Configure external toolchain - name: Configure external toolchain
if: inputs.build_toolchain == false if: inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type == 'external_toolchain'
shell: su buildbot -c "sh -e {0}" shell: su buildbot -c "sh -e {0}"
working-directory: openwrt working-directory: openwrt
run: | run: |
@ -251,6 +262,20 @@ jobs:
--overwrite-config \ --overwrite-config \
--config ${{ env.TARGET }}/${{ env.SUBTARGET }} --config ${{ env.TARGET }}/${{ env.SUBTARGET }}
- name: Configure external toolchain with sdk
if: inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type == 'external_sdk'
shell: su buildbot -c "sh -e {0}"
working-directory: openwrt
run: |
echo CONFIG_DEVEL=y >> .config
echo CONFIG_AUTOREMOVE=y >> .config
echo CONFIG_CCACHE=y >> .config
./scripts/ext-toolchain.sh \
--toolchain ${{ env.TOOLCHAIN_FILE }}/staging_dir/toolchain-* \
--overwrite-config \
--config ${{ env.TARGET }}/${{ env.SUBTARGET }}
- name: Configure internal toolchain - name: Configure internal toolchain
if: inputs.build_toolchain == true if: inputs.build_toolchain == true
shell: su buildbot -c "sh -e {0}" shell: su buildbot -c "sh -e {0}"