CI: Allow building with internal toolchain

This adds an option to build with internal toolchain. This can be used
to build targets which are currently not build by the OpenWrt build bots
and which needs their own toolchain build for every build.

Building the toolchain takes about 30 minutes compared to using the
external toolchain which takes some seconds.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2022-11-05 14:27:11 +01:00
parent 7c406a5f08
commit 08f5283392
1 changed files with 20 additions and 1 deletions

View File

@ -6,6 +6,8 @@ on:
target: target:
required: true required: true
type: string type: string
build_toolchain:
type: boolean
include_feeds: include_feeds:
type: boolean type: boolean
build_full: build_full:
@ -109,6 +111,7 @@ jobs:
./scripts/feeds install -a ./scripts/feeds install -a
- name: Parse toolchain file - name: Parse toolchain file
if: inputs.build_toolchain == false
working-directory: openwrt working-directory: openwrt
run: | run: |
TOOLCHAIN_STRING="$(curl "https://downloads.cdn.openwrt.org/snapshots/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/sha256sums" \ TOOLCHAIN_STRING="$(curl "https://downloads.cdn.openwrt.org/snapshots/targets/${{ env.TARGET }}/${{ env.SUBTARGET }}/sha256sums" \
@ -120,6 +123,7 @@ jobs:
echo "TOOLCHAIN_SHA256=$TOOLCHAIN_SHA256" >> "$GITHUB_ENV" echo "TOOLCHAIN_SHA256=$TOOLCHAIN_SHA256" >> "$GITHUB_ENV"
- name: Cache external toolchain - name: Cache external toolchain
if: inputs.build_toolchain == false
id: cache-external-toolchain id: cache-external-toolchain
uses: actions/cache@v3 uses: actions/cache@v3
with: with:
@ -135,7 +139,7 @@ jobs:
ccache-kernel-${{ env.TARGET }}/${{ env.SUBTARGET }}- ccache-kernel-${{ env.TARGET }}/${{ env.SUBTARGET }}-
- name: Download external toolchain - name: Download external toolchain
if: 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
run: | run: |
@ -162,6 +166,7 @@ jobs:
echo CONFIG_ALL=y >> .config echo CONFIG_ALL=y >> .config
- name: Configure external toolchain - name: Configure external toolchain
if: inputs.build_toolchain == false
shell: su buildbot -c "sh -e {0}" shell: su buildbot -c "sh -e {0}"
working-directory: openwrt working-directory: openwrt
run: | run: |
@ -174,6 +179,20 @@ jobs:
--overwrite-config \ --overwrite-config \
--config ${{ env.TARGET }}/${{ env.SUBTARGET }} --config ${{ env.TARGET }}/${{ env.SUBTARGET }}
- name: Configure internal toolchain
if: inputs.build_toolchain == true
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
echo "CONFIG_TARGET_${{ env.TARGET }}=y" >> .config
echo "CONFIG_TARGET_${{ env.TARGET }}_${{ env.SUBTARGET }}=y" >> .config
make defconfig
- name: Show configuration - name: Show configuration
shell: su buildbot -c "sh -e {0}" shell: su buildbot -c "sh -e {0}"
working-directory: openwrt working-directory: openwrt