type: boolean
upload_external_toolchain:
type: boolean
+ use_ccache_cache:
+ type: boolean
+ default: true
+ ccache_type:
+ type: string
+ default: kernel
permissions:
contents: read
permissions:
contents: read
packages: read
+ actions: write
steps:
- name: Checkout master directory
- name: Restore ccache cache
id: restore-ccache-cache
+ if: inputs.use_ccache_cache == true
uses: actions/cache/restore@v3
with:
path: openwrt/.ccache
- key: ccache-kernel-${{ inputs.target }}/${{ inputs.subtarget }}-${{ hashFiles('openwrt/include/kernel-**') }}
+ key: ccache-${{ inputs.ccache_type }}-${{ inputs.target }}/${{ inputs.subtarget }}-${{ hashFiles('openwrt/include/kernel-**') }}
restore-keys: |
- ccache-kernel-${{ inputs.target }}/${{ inputs.subtarget }}-
+ ccache-${{ inputs.ccache_type }}-${{ inputs.target }}/${{ inputs.subtarget }}-
- name: Download external toolchain/sdk
if: inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type != 'internal' && steps.parse-toolchain.outputs.toolchain-type != 'external_container'
echo CONFIG_TARGET_PER_DEVICE_ROOTFS=y >> .config
echo CONFIG_TARGET_ALL_PROFILES=y >> .config
+ # ccache for some reason have problem detecting compiler type
+ # with external toolchain. This cause the complete malfunction
+ # of ccache with the result of tons of unsupported compiler
+ # option error.
+ # To fix this force compiler type to gcc.
+ - name: Configure ccache and apply fixes
+ if: inputs.use_ccache_cache == true
+ shell: su buildbot -c "sh -e {0}"
+ working-directory: openwrt
+ env:
+ SYSTEM_CCACHE_CONF: staging_dir/host/etc/ccache.conf
+ run: |
+ touch $SYSTEM_CCACHE_CONF
+
+ echo compiler_type=gcc >> $SYSTEM_CCACHE_CONF
+
+ echo CONFIG_CCACHE=y >> .config
+
- name: Configure external toolchain in container
if: inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type == 'external_container'
shell: su buildbot -c "sh -e {0}"
run: |
echo CONFIG_DEVEL=y >> .config
echo CONFIG_AUTOREMOVE=y >> .config
- echo CONFIG_CCACHE=y >> .config
./scripts/ext-toolchain.sh \
--toolchain /external-toolchain/$(ls /external-toolchain/ | grep openwrt-toolchain)/toolchain-* \
run: |
echo CONFIG_DEVEL=y >> .config
echo CONFIG_AUTOREMOVE=y >> .config
- echo CONFIG_CCACHE=y >> .config
./scripts/ext-toolchain.sh \
--toolchain ${{ env.TOOLCHAIN_FILE }}/toolchain-* \
run: |
echo CONFIG_DEVEL=y >> .config
echo CONFIG_AUTOREMOVE=y >> .config
- echo CONFIG_CCACHE=y >> .config
./scripts/ext-toolchain.sh \
--toolchain ${{ env.TOOLCHAIN_FILE }}/staging_dir/toolchain-* \
run: |
echo CONFIG_DEVEL=y >> .config
echo CONFIG_AUTOREMOVE=y >> .config
- echo CONFIG_CCACHE=y >> .config
echo "CONFIG_TARGET_${{ inputs.target }}=y" >> .config
echo "CONFIG_TARGET_${{ inputs.target }}_${{ inputs.subtarget }}=y" >> .config
name: ${{ inputs.target }}-${{ inputs.subtarget }}-logs
path: "openwrt/logs"
+ - name: Delete already present ccache cache
+ if: steps.restore-ccache-cache.outputs.cache-hit == 'true' && inputs.use_ccache_cache == true
+ uses: octokit/request-action@v2.x
+ with:
+ route: DELETE /repos/{repository}/actions/caches?key={key}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ INPUT_REPOSITORY: ${{ github.repository }}
+ INPUT_KEY: ${{ steps.restore-ccache-cache.outputs.cache-primary-key }}
+
- name: Save ccache cache
+ if: inputs.use_ccache_cache == true
uses: actions/cache/save@v3
with:
path: openwrt/.ccache