aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2022-11-28 12:44:01 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2022-12-04 17:37:01 +0100
commit47519a574c9c81bbbaf0338f37d47abf872ccab0 (patch)
tree6076b84d59d6895992aca8e59e3e49918c933936
parent05c3ee608fdef99f54431cfb6eb53ef7936137c5 (diff)
downloadupstream-47519a574c9c81bbbaf0338f37d47abf872ccab0.tar.gz
upstream-47519a574c9c81bbbaf0338f37d47abf872ccab0.tar.bz2
upstream-47519a574c9c81bbbaf0338f37d47abf872ccab0.zip
CI: build: add support for external toolchains from stable branch
Add support to use external toolchains from stable branch if we are testing commit targeting stable openwrt branch in kernel and packages workflow. With pr the target branch is parsed and the right toolchain is used. To use the stable toolchain for local testing the branch needs to have the prefix openwrt-[0-9][0-9].[0-9][0-9]- (example openwrt-21.02-fixup) Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> (cherry picked from commit e24a1e6f6d7f08fb766eb11b8008f8fc5b72d072)
-rw-r--r--.github/workflows/build.yml29
1 files changed, 27 insertions, 2 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 510ff6a879..909b849731 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -145,13 +145,38 @@ jobs:
if: inputs.build_toolchain == false
working-directory: openwrt
run: |
- TOOLCHAIN_STRING="$(curl "https://downloads.cdn.openwrt.org/snapshots/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/sha256sums" \
+ TOOLCHAIN_PATH=snapshots
+
+ if [ -n "${{ github.base_ref }}" ]; then
+ if echo "${{ github.base_ref }}" | grep -q -E 'openwrt-[0-9][0-9]\.[0-9][0-9]'; then
+ major_ver="$(echo ${{ github.base_ref }} | sed 's/openwrt-/v/')"
+ fi
+ elif [ "${{ github.ref_type }}" = "branch" ]; then
+ if echo "${{ github.ref_name }}" | grep -q -E 'openwrt-[0-9][0-9]\.[0-9][0-9]-'; then
+ major_ver="$(echo ${{ github.ref_name }} | sed 's/openwrt-\([0-9][0-9]\.[0-9][0-9]\)-.*/v\1/')"
+ fi
+ elif [ "${{ github.ref_type }}" = "tag" ]; then
+ if echo "${{ github.ref_name }}" | grep -q -E 'v[0-9][0-9]\.[0-9][0-9]\..+'; then
+ major_ver="$(sed 's/\(v[0-9][0-9]\.[0-9][0-9]\)\..\+/\1/')"
+ fi
+ fi
+
+ if [ -n "$major_ver" ]; then
+ git fetch --tags
+ latest_tag="$(git tag --sort=-creatordate -l $major_ver* | head -n1)"
+ if [ -n "$latest_tag" ]; then
+ TOOLCHAIN_PATH=releases/$(echo $latest_tag | sed 's/^v//')
+ fi
+ fi
+
+ TOOLCHAIN_STRING="$(curl "https://downloads.cdn.openwrt.org/$TOOLCHAIN_PATH/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/sha256sums" \
| grep ".*openwrt-toolchain.*tar.xz")"
TOOLCHAIN_FILE=$(echo "$TOOLCHAIN_STRING" | sed -n -e 's/.*\(openwrt-toolchain.*\).tar.xz/\1/p')
TOOLCHAIN_SHA256=$(echo "$TOOLCHAIN_STRING" | cut -d ' ' -f 1)
echo "TOOLCHAIN_FILE=$TOOLCHAIN_FILE" >> "$GITHUB_ENV"
echo "TOOLCHAIN_SHA256=$TOOLCHAIN_SHA256" >> "$GITHUB_ENV"
+ echo "TOOLCHAIN_PATH=$TOOLCHAIN_PATH" >> "$GITHUB_ENV"
- name: Cache external toolchain
if: inputs.build_toolchain == false
@@ -174,7 +199,7 @@ jobs:
shell: su buildbot -c "sh -e {0}"
working-directory: openwrt
run: |
- wget -O - https://downloads.cdn.openwrt.org/snapshots/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/${TOOLCHAIN_FILE}.tar.xz \
+ wget -O - https://downloads.cdn.openwrt.org/${{ env.TOOLCHAIN_PATH }}/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/${{ env.TOOLCHAIN_FILE }}.tar.xz \
| tar --xz -xf -
- name: Extract prebuilt tools