aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2022-12-05 23:23:04 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2022-12-06 23:48:41 +0100
commitd03c520e75ec0a744483a3f57eea35d01fcd298f (patch)
treece88b6201d256d00f30b38af1300ff7bb4ab096d
parent904581c59e0c326a865b0ebf802db8ae5fec95f0 (diff)
downloadupstream-d03c520e75ec0a744483a3f57eea35d01fcd298f.tar.gz
upstream-d03c520e75ec0a744483a3f57eea35d01fcd298f.tar.bz2
upstream-d03c520e75ec0a744483a3f57eea35d01fcd298f.zip
CI: build: fix use of sdk as toolchain
The toolchain included in a sdk have a different format than an external toolchain tar. Since sdk is a more integrated setup doesn't use and include wrapper bin that use the external toolchain config and use an alternative and more standard way to include all the toolchain headers. External toolchain use wrapper.sh to append the configured include header when each tool is called. Fix the sdk toolchain by reverting their own sdk wrapper scripts and to simulate an external toolchain build copying what is done in the toolchain target makefile. This handle compilation error and warning caused by not using fortify header on building packages. Fixes: 006e52545d14 ("CI: build: add support to fallback to sdk for external toolchain") Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> (cherry picked from commit 42f0ab028e2eae0d4e7acf9db7fd68b256f23503)
-rw-r--r--.github/workflows/build.yml28
1 files changed, 28 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 115bf2c654..43f30617d8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -266,6 +266,34 @@ jobs:
--overwrite-config \
--config ${{ env.TARGET }}/${{ env.SUBTARGET }}
+ - name: Adapt external sdk to external toolchain format
+ if: inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type == 'external_sdk'
+ shell: su buildbot -c "sh -e {0}"
+ working-directory: openwrt
+ run: |
+ TOOLCHAIN_DIR=${{ env.TOOLCHAIN_FILE }}/staging_dir/$(ls ${{ env.TOOLCHAIN_FILE }}/staging_dir | grep toolchain)
+ TOOLCHAIN_BIN=$TOOLCHAIN_DIR/bin
+ OPENWRT_DIR=$(pwd)
+
+ # Find target name from toolchain info.mk
+ GNU_TARGET_NAME=$(cat $TOOLCHAIN_DIR/info.mk | grep TARGET_CROSS | sed 's/^TARGET_CROSS=\(.*\)-$/\1/')
+
+ cd $TOOLCHAIN_BIN
+
+ # Revert sdk wrapper scripts applied to all the bins
+ for app in $(find . -name "*.bin"); do
+ TARGET_APP=$(echo $app | sed 's/\.\/\.\(.*\)\.bin/\1/')
+ rm $TARGET_APP
+ mv .$TARGET_APP.bin $TARGET_APP
+ done
+
+ # Setup the wrapper script in the sdk toolchain dir simulating an external toolchain build
+ cp $OPENWRT_DIR/target/toolchain/files/wrapper.sh $GNU_TARGET_NAME-wrapper.sh
+ for app in cc gcc g++ c++ cpp ld as ; do
+ [ -f $GNU_TARGET_NAME-$app ] && mv $GNU_TARGET_NAME-$app $GNU_TARGET_NAME-$app.bin
+ ln -sf $GNU_TARGET_NAME-wrapper.sh $GNU_TARGET_NAME-$app
+ done
+
- name: Configure external toolchain with sdk
if: inputs.build_toolchain == false && steps.parse-toolchain.outputs.toolchain-type == 'external_sdk'
shell: su buildbot -c "sh -e {0}"