CI: Allow building with internal toolchain
authorHauke Mehrtens <hauke@hauke-m.de>
Sat, 5 Nov 2022 13:27:11 +0000 (14:27 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 3 Dec 2022 02:10:06 +0000 (03:10 +0100)
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>
.github/workflows/build.yml

index 4cc1116d58013d1d970cb7eeba316b2d34c5b6ff..b29698a77477a2db6d3c66f7dbed635ea704aca0 100644 (file)
@@ -6,6 +6,8 @@ on:
       target:
         required: true
         type: string
+      build_toolchain:
+        type: boolean
       include_feeds:
         type: boolean
       build_full:
@@ -109,6 +111,7 @@ jobs:
           ./scripts/feeds install -a
 
       - name: Parse toolchain file
+        if: inputs.build_toolchain == false
         working-directory: openwrt
         run: |
           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"
 
       - name: Cache external toolchain
+        if: inputs.build_toolchain == false
         id: cache-external-toolchain
         uses: actions/cache@v3
         with:
@@ -135,7 +139,7 @@ jobs:
             ccache-kernel-${{ env.TARGET }}/${{ env.SUBTARGET }}-
 
       - 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}"
         working-directory: openwrt
         run: |
@@ -162,6 +166,7 @@ jobs:
           echo CONFIG_ALL=y >> .config
 
       - name: Configure external toolchain
+        if: inputs.build_toolchain == false
         shell: su buildbot -c "sh -e {0}"
         working-directory: openwrt
         run: |
@@ -174,6 +179,20 @@ jobs:
             --overwrite-config \
             --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
         shell: su buildbot -c "sh -e {0}"
         working-directory: openwrt