Skip to content

Commit 94e64ba

Browse files
committed
CI: reusable_build: add support for prebuilt LLVM
Add support for prebuilt LLVM to test package that require BPF support. This mainly fix Coverity build that got broken as we now enable BPF by default. Signed-off-by: Christian Marangi <[email protected]>
1 parent 6ed0816 commit 94e64ba

File tree

1 file changed

+54
-14
lines changed

1 file changed

+54
-14
lines changed

.github/workflows/reusable_build.yml

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)