@@ -313,16 +313,10 @@ jobs:
313313 repository : openwrt/telephony
314314 path : openwrt/feeds/telephony
315315
316- - name : Parse toolchain file
316+ - name : Parse toolchain path
317317 if : inputs.build_toolchain == false
318- id : parse-toolchain
319318 working-directory : openwrt
320319 run : |
321- if [ -d /external-toolchain/ ]; then
322- echo "toolchain-type=external_container" >> $GITHUB_OUTPUT
323- exit 0
324- fi
325-
326320 TOOLCHAIN_PATH=snapshots
327321
328322 if [ -n "${{ github.base_ref }}" ]; then
@@ -350,13 +344,26 @@ jobs:
350344 fi
351345
352346 SUMS_FILE="https://downloads.cdn.openwrt.org/$TOOLCHAIN_PATH/targets/${{ inputs.target }}/${{ inputs.subtarget }}/sha256sums"
353- if curl $SUMS_FILE | grep -qP ".*openwrt-toolchain.*tar.(xz|zst)"; then
354- TOOLCHAIN_STRING="$( curl $SUMS_FILE | grep -P ".*openwrt-toolchain.*tar.(xz|zst)")"
347+
348+ echo "TOOLCHAIN_PATH=$TOOLCHAIN_PATH" >> "$GITHUB_ENV"
349+ echo "SUMS_FILE=$SUMS_FILE" >> "$GITHUB_ENV"
350+
351+ - name : Parse toolchain file
352+ if : inputs.build_toolchain == false
353+ id : parse-toolchain
354+ run : |
355+ if [ -d /external-toolchain/ ]; then
356+ echo "toolchain-type=external_container" >> $GITHUB_OUTPUT
357+ exit 0
358+ fi
359+
360+ if curl ${{ env.SUMS_FILE }} | grep -qP ".*openwrt-toolchain.*tar.(xz|zst)"; then
361+ TOOLCHAIN_STRING="$( curl ${{ env.SUMS_FILE }} | grep -P ".*openwrt-toolchain.*tar.(xz|zst)")"
355362 TOOLCHAIN_FILE=$(echo "$TOOLCHAIN_STRING" | sed -n -E -e 's/.*(openwrt-toolchain.*.tar.(xz|zst))$/\1/p')
356-
363+
357364 echo "toolchain-type=external_toolchain" >> $GITHUB_OUTPUT
358- elif curl $SUMS_FILE | grep -qP ".*openwrt-sdk.*tar.(xz|zst)"; then
359- TOOLCHAIN_STRING="$( curl $SUMS_FILE | grep -P ".*openwrt-sdk.*tar.(xz|zst)")"
365+ elif curl ${{ env. SUMS_FILE }} | grep -qP ".*openwrt-sdk.*tar.(xz|zst)"; then
366+ TOOLCHAIN_STRING="$( curl ${{ env. SUMS_FILE }} | grep -P ".*openwrt-sdk.*tar.(xz|zst)")"
360367 TOOLCHAIN_FILE=$(echo "$TOOLCHAIN_STRING" | sed -n -E -e 's/.*(openwrt-sdk.*.tar.(xz|zst))$/\1/p')
361368
362369 echo "toolchain-type=external_sdk" >> $GITHUB_OUTPUT
@@ -366,7 +373,19 @@ jobs:
366373
367374 echo "TOOLCHAIN_FILE=$TOOLCHAIN_FILE" >> "$GITHUB_ENV"
368375 echo "TOOLCHAIN_NAME=$(echo TOOLCHAIN_FILE | sed -E -e 's/.tar.(xz|zst)$//')" >> "$GITHUB_ENV"
369- echo "TOOLCHAIN_PATH=$TOOLCHAIN_PATH" >> "$GITHUB_ENV"
376+
377+ - name : Prase prebuilt llvm file
378+ if : inputs.build_toolchain == false
379+ id : parse-prebuilt-llvm
380+ run : |
381+ if curl ${{ env.SUMS_FILE }} | grep -qP ".*llvm-bpf.*tar.(xz|zst)"; then
382+ LLVM_STRING="$( curl ${{ env.SUMS_FILE }} | grep -P ".*llvm-bpf.*tar.(xz|zst)")"
383+ LLVM_FILE=$(echo "$LLVM_STRING" | sed -n -E -e 's/.*(llvm-bpf.*.tar.(xz|zst))$/\1/p')
384+
385+ echo "llvm-type=external" >> $GITHUB_OUTPUT
386+ fi
387+
388+ echo "LLVM_FILE=$LLVM_FILE" >> "$GITHUB_ENV"
370389
371390 - name : Download and extract ccache cache from s3
372391 id : restore-ccache-cache-s3
@@ -415,7 +434,8 @@ jobs:
415434
416435 - name : Import GPG keys
417436 shell : su buildbot -c "sh -e {0}"
418- if : inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type != 'internal' && steps.parse-toolchain.outputs.toolchain-type != 'external_container'
437+ if : inputs.build_toolchain == false && ((steps.parse-toolchain.outputs.toolchain-type != 'internal' && steps.parse-toolchain.outputs.toolchain-type != 'external_container') ||
438+ steps.parse-prebuilt-llvm.outputs.llvm-type == 'external')
419439 run : gpg --receive-keys 0xCD84BCED626471F1 0x1D53D1877742E911 0xCD54E82DADB3684D
420440
421441 - name : Download external toolchain/sdk
@@ -431,6 +451,19 @@ jobs:
431451 tar -xf ${{ env.TOOLCHAIN_FILE }}
432452 rm ${{ env.TOOLCHAIN_FILE }} sha256sums
433453
454+ - name : Download and extract prebuilt llvm
455+ if : inputs.build_toolchain == false && steps.parse-prebuilt-llvm.outputs.llvm-type == 'external'
456+ shell : su buildbot -c "sh -e {0}"
457+ working-directory : openwrt
458+ run : |
459+ wget https://downloads.cdn.openwrt.org/${{ env.TOOLCHAIN_PATH }}/targets/${{ inputs.target }}/${{ inputs.subtarget }}/${{ env.LLVM_FILE }}
460+ wget https://downloads.cdn.openwrt.org/${{ env.TOOLCHAIN_PATH }}/targets/${{ inputs.target }}/${{ inputs.subtarget }}/sha256sums.asc
461+ wget https://downloads.cdn.openwrt.org/${{ env.TOOLCHAIN_PATH }}/targets/${{ inputs.target }}/${{ inputs.subtarget }}/sha256sums
462+ gpg --with-fingerprint --verify sha256sums.asc
463+ sha256sum --check --ignore-missing sha256sums
464+ tar -xf ${{ env.LLVM_FILE }}
465+ rm ${{ env.LLVM_FILE }} sha256sums
466+
434467 - name : Clean configuration
435468 shell : su buildbot -c "sh -e {0}"
436469 working-directory : openwrt
@@ -575,6 +608,13 @@ jobs:
575608
576609 make defconfig
577610
611+ - name : Configure prebuilt llvm
612+ if : inputs.build_toolchain == false && steps.parse-toolchain.outputs.llvm-type == 'external'
613+ shell : su buildbot -c "sh -e {0}"
614+ working-directory : openwrt
615+ run : |
616+ echo CONFIG_USE_LLVM_PREBUILT=y >> .config
617+
578618 - name : Show configuration
579619 shell : su buildbot -c "sh -e {0}"
580620 working-directory : openwrt
0 commit comments