[openwrt/openwrt] CI: build: fix use of sdk as toolchain

LEDE Commits lede-commits at lists.infradead.org
Tue Dec 6 14:48:09 PST 2022


ansuel pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/8be50c369bbf12763d88e36f9945dce54b432975

commit 8be50c369bbf12763d88e36f9945dce54b432975
Author: Christian Marangi <ansuelsmth at gmail.com>
AuthorDate: Mon Dec 5 23:23:04 2022 +0100

    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 at gmail.com>
    (cherry picked from commit 42f0ab028e2eae0d4e7acf9db7fd68b256f23503)
---
 .github/workflows/build.yml | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

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}"




More information about the lede-commits mailing list