diff --git a/.github/workflows/flutter-engine-arm64.yaml b/.github/workflows/flutter-engine-arm64.yaml index 2f83f9d..6a39b3d 100644 --- a/.github/workflows/flutter-engine-arm64.yaml +++ b/.github/workflows/flutter-engine-arm64.yaml @@ -58,14 +58,26 @@ jobs: --target-sysroot $PWD/build/linux/debian_sid_arm64-sysroot \ --target-toolchain $PWD/flutter/buildtools/linux-x64/clang \ --target-triple aarch64-unknown-linux-gnu - ninja -C out/linux_debug_arm64 - - name: Publish Debug - working-directory: src/out/linux_debug_arm64 + - name: Prepare Debug Artifacts run: | - ls -laR exe.unstripped - ls -la *.so + chmod +x scripts/prepare-sdk-aarch64.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_arm64-sysroot + cd src/out/linux_debug_arm64 + ../../../scripts/prepare-sdk-aarch64.sh + + - name: Publish Debug + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-debug + path: src/out/linux_debug_arm64/engine-sdk/ + + - name: Publish Debug Symbols + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-debug-symbols + path: src/out/linux_debug_arm64/.debug/ - name: Build Release working-directory: src @@ -85,11 +97,18 @@ jobs: --target-triple aarch64-unknown-linux-gnu ninja -C out/linux_release_arm64 - - name: Publish Release - working-directory: src/out/linux_release_arm64 + - name: Prepare Release Artifacts run: | - ls -laR exe.unstripped - ls -la *.so + chmod +x scripts/prepare-sdk-aarch64.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_arm64-sysroot + cd src/out/linux_release_arm64 + ../../../scripts/prepare-sdk-aarch64.sh + + - name: Publish Release + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-release + path: src/out/linux_release_arm64/engine-sdk/ - name: Build Profile working-directory: src @@ -109,8 +128,15 @@ jobs: --target-triple aarch64-unknown-linux-gnu ninja -C out/linux_profile_arm64 - - name: Publish Profile - working-directory: src/out/linux_profile_arm64 + - name: Prepare Profile Artifacts run: | - ls -laR exe.unstripped - ls -la *.so + chmod +x scripts/prepare-sdk-aarch64.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_arm64-sysroot + cd src/out/linux_profile_arm64 + ../../../scripts/prepare-sdk-aarch64.sh + + - name: Publish Profile + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-profile + path: src/out/linux_profile_arm64/engine-sdk/ diff --git a/.github/workflows/flutter-engine-armv7hf.yaml b/.github/workflows/flutter-engine-armv7hf.yaml index 79a1914..5616096 100644 --- a/.github/workflows/flutter-engine-armv7hf.yaml +++ b/.github/workflows/flutter-engine-armv7hf.yaml @@ -62,11 +62,24 @@ jobs: ninja -C out/linux_debug_arm - - name: Publish Debug - working-directory: src/out/linux_debug_arm + - name: Prepare Debug Artifacts run: | - ls -laR clang_x64/exe.unstripped - ls -la *.so + chmod +x scripts/prepare-sdk-armv7hf.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_arm-sysroot + cd src/out/linux_debug_arm + ../../../scripts/prepare-sdk-armv7hf.sh + + - name: Publish Debug + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-debug + path: src/out/linux_debug_arm/engine-sdk/ + + - name: Publish Debug Symbols + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-debug-symbols + path: src/out/linux_debug_arm/.debug/ - name: Build Release working-directory: src @@ -88,11 +101,18 @@ jobs: ninja -C out/linux_release_arm - - name: Publish Release - working-directory: src/out/linux_release_arm + - name: Prepare Release Artifacts run: | - ls -laR clang_x64/exe.unstripped - ls -la *.so + chmod +x scripts/prepare-sdk-armv7hf.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_arm-sysroot + cd src/out/linux_release_arm + ../../../scripts/prepare-sdk-armv7hf.sh + + - name: Publish Release + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-release + path: src/out/linux_release_arm/engine-sdk/ - name: Build Profile working-directory: src @@ -114,8 +134,16 @@ jobs: ninja -C out/linux_profile_arm - - name: Publish Profile - working-directory: src/out/linux_profile_arm + - name: Prepare Profile Artifacts run: | - ls -laR clang_x64/exe.unstripped - ls -la *.so + chmod +x scripts/prepare-sdk-armv7hf.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_arm-sysroot + cd src/out/linux_profile_arm + ../../../scripts/prepare-sdk-armv7hf.sh + + - name: Publish Profile + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-profile + path: src/out/linux_profile_arm/engine-sdk/ + diff --git a/.github/workflows/flutter-engine-x86_64.yaml b/.github/workflows/flutter-engine-x86_64.yaml index 113529e..6f0aebf 100644 --- a/.github/workflows/flutter-engine-x86_64.yaml +++ b/.github/workflows/flutter-engine-x86_64.yaml @@ -34,7 +34,9 @@ jobs: PATCH_DIR=$PWD/patches - cd src/flutter + cd src + git apply $PATCH_DIR/0001-clang-toolchain.patch + cd flutter git apply $PATCH_DIR/0001-export-GPU-symbols.patch - name: Build Debug @@ -42,42 +44,96 @@ jobs: run: | export PATH=$PATH:$PWD/../depot_tools export VPYTHON_VIRTUALENV_ROOT=$PWD/vpython - ./flutter/tools/gn --runtime-mode=debug --embedder-for-target --no-build-embedder-examples --enable-impeller-3d --no-goma --no-rbe --no-stripped --no-enable-unittests - ninja -C out/host_debug + ./flutter/tools/gn --runtime-mode=debug \ + --embedder-for-target \ + --no-build-embedder-examples \ + --enable-impeller-3d \ + --no-goma --no-rbe \ + --no-stripped --no-enable-unittests \ + --linux-cpu x64 \ + --target-os linux \ + --target-sysroot $PWD/build/linux/debian_sid_amd64-sysroot \ + --target-toolchain $PWD/flutter/buildtools/linux-x64/clang \ + --target-triple x86_64-unknown-linux-gnu + ninja -C out/linux_debug_x64 - - name: Publish Debug - working-directory: src/out/host_debug + - name: Prepare Debug Artifacts run: | - ls -laR exe.unstripped - ls -la *.so - ldd libflutter_engine.so + chmod +x scripts/prepare-sdk-x86-64.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_amd64-sysroot + cd src/out/linux_debug_x64 + ../../../scripts/prepare-sdk-x86-64.sh + + - name: Publish Debug + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-debug + path: src/out/linux_debug_x64/engine-sdk/ + + - name: Publish Debug Symbols + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-debug-symbols + path: src/out/linux_debug_x64/.debug/ - name: Build Release working-directory: src run: | export PATH=$PATH:$PWD/../depot_tools export VPYTHON_VIRTUALENV_ROOT=$PWD/vpython - ./flutter/tools/gn --runtime-mode=release --embedder-for-target --no-build-embedder-examples --enable-impeller-3d --no-goma --no-rbe --no-stripped --no-enable-unittests - ninja -C out/host_release + ./flutter/tools/gn --runtime-mode=release \ + --embedder-for-target \ + --no-build-embedder-examples \ + --enable-impeller-3d \ + --no-goma --no-rbe \ + --no-stripped --no-enable-unittests \ + --linux-cpu x64 \ + --target-os linux \ + --target-sysroot $PWD/build/linux/debian_sid_amd64-sysroot \ + --target-toolchain $PWD/flutter/buildtools/linux-x64/clang \ + --target-triple x86_64-unknown-linux-gnu + ninja -C out/linux_release_x64 - - name: Publish Release - working-directory: src/out/host_release + - name: Prepare Release Artifacts run: | - ls -laR exe.unstripped - ls -la *.so - ldd libflutter_engine.so + chmod +x scripts/prepare-sdk-x86-64.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_amd64-sysroot + cd src/out/linux_release_x64 + ../../../scripts/prepare-sdk-x86-64.sh + + - name: Publish Release + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-release + path: src/out/linux_release_x64/engine-sdk/ - name: Build Profile working-directory: src run: | export PATH=$PATH:$PWD/../depot_tools export VPYTHON_VIRTUALENV_ROOT=$PWD/vpython - ./flutter/tools/gn --runtime-mode=profile --embedder-for-target --no-build-embedder-examples --enable-impeller-3d --no-goma --no-rbe --no-stripped --no-enable-unittests - ninja -C out/host_profile + ./flutter/tools/gn --runtime-mode=profile \ + --embedder-for-target \ + --no-build-embedder-examples \ + --enable-impeller-3d \ + --no-goma --no-rbe \ + --no-stripped --no-enable-unittests \ + --linux-cpu x64 \ + --target-os linux \ + --target-sysroot $PWD/build/linux/debian_sid_amd64-sysroot \ + --target-toolchain $PWD/flutter/buildtools/linux-x64/clang \ + --target-triple x86_64-unknown-linux-gnu + ninja -C out/linux_profile_x64 - - name: Publish Profile - working-directory: src/out/host_profile + - name: Prepare Profile Artifacts run: | - ls -laR exe.unstripped - ls -la *.so - ldd libflutter_engine.so + chmod +x scripts/prepare-sdk-x86-64.sh + export SYSROOT=$PWD/src/build/linux/debian_sid_amd64-sysroot + cd src/out/linux_profile_x64 + ../../../scripts/prepare-sdk-x86-64.sh + + - name: Publish Profile + uses: actions/upload-artifact@v4 + with: + name: engine-sdk-profile + path: src/out/linux_profile_x64/engine-sdk/ diff --git a/scripts/prepare-sdk-aarch64.sh b/scripts/prepare-sdk-aarch64.sh new file mode 100755 index 0000000..9d3f10f --- /dev/null +++ b/scripts/prepare-sdk-aarch64.sh @@ -0,0 +1,78 @@ +#! /bin/bash + +mkdir -p engine-sdk/{data,bin,lib/aarch64-linux-gnu,usr/lib/aarch64-linux-gnu,usr/include,sdk/lib} + +# +# /data +# +cp icudtl.dat engine-sdk/data/ + +# +# Include +# +cp flutter_embedder.h engine-sdk/usr/include/ + +# +# SDK +# +cp -r flutter_patched_sdk engine-sdk/sdk/ +if [ -e shader_lib ]; then + cp -r shader_lib engine-sdk/sdk/lib +fi + +# +# /bin +# +cp exe.unstripped/* engine-sdk/bin/ + +# +# /lib +# +export cwd=$(pwd) +cd so.unstripped +for file in *; do + cp "$file" $cwd/engine-sdk/lib/ + cp "../$file.TOC" $cwd/engine-sdk/sdk/lib/ +done +cd $cwd +cp $SYSROOT/lib/ld-linux-aarch64.so* engine-sdk/lib/ + +# +# /usr/lib/$ARCH-linux-gnu +# +cp $SYSROOT/lib/aarch64-linux-gnu/libdl-* engine-sdk/lib/aarch64-linux-gnu/ +cp $SYSROOT/usr/lib/aarch64-linux-gnu/libdl.so* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/lib/aarch64-linux-gnu/libdl.so* engine-sdk/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/usr/lib/aarch64-linux-gnu/libdl-* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp $SYSROOT/lib/aarch64-linux-gnu/libpthread-* engine-sdk/lib/aarch64-linux-gnu/ +cp $SYSROOT/usr/lib/aarch64-linux-gnu/libpthread-* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/lib/aarch64-linux-gnu/libpthread.so* engine-sdk/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/usr/lib/aarch64-linux-gnu/libpthread.so* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp $SYSROOT/lib/aarch64-linux-gnu/libm-* engine-sdk/lib/aarch64-linux-gnu/ +cp $SYSROOT/usr/lib/aarch64-linux-gnu/libm-* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/lib/aarch64-linux-gnu/libm.so* engine-sdk/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/usr/lib/aarch64-linux-gnu/libm.so* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp $SYSROOT/lib/aarch64-linux-gnu/libc-* engine-sdk/lib/aarch64-linux-gnu/ +cp $SYSROOT/usr/lib/aarch64-linux-gnu/libc-* engine-sdk/usr/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/lib/aarch64-linux-gnu/libc.so* engine-sdk/lib/aarch64-linux-gnu/ +cp -d $SYSROOT/usr/lib/aarch64-linux-gnu/libc.so* engine-sdk/usr/lib/aarch64-linux-gnu/ + +# +# Strip Components +# +export CLANG_BIN_PATH=../../flutter/buildtools/linux-x64/clang/bin +mkdir -p .debug +for file in $(pwd)/engine-sdk/bin/*; do + if [ -f "$file" ]; then + $CLANG_BIN_PATH/llvm-strip --only-keep-debug -o $file.debug $file + $CLANG_BIN_PATH/llvm-strip $file + fi +done +mv $(pwd)/engine-sdk/bin/*.debug $(pwd)/.debug/ +for file in $(pwd)/engine-sdk/lib/*; do + if [ -f "$file" ]; then + $CLANG_BIN_PATH/llvm-strip --only-keep-debug -o $file.debug $file + $CLANG_BIN_PATH/llvm-strip $file + fi +done +mv $(pwd)/engine-sdk/lib/*.debug $(pwd)/.debug/ diff --git a/scripts/prepare-sdk-armv7hf.sh b/scripts/prepare-sdk-armv7hf.sh new file mode 100755 index 0000000..b549d7d --- /dev/null +++ b/scripts/prepare-sdk-armv7hf.sh @@ -0,0 +1,82 @@ +#! /bin/bash + +mkdir -p engine-sdk/{data,lib,bin,lib/arm-linux-gnueabihf,usr/lib/arm-linux-gnueabihf,bin/clang_x64,usr/include,sdk/lib} + +# +# /data +# +cp icudtl.dat engine-sdk/data/ + +# +# Include +# +cp flutter_embedder.h engine-sdk/usr/include/ + +# +# SDK +# +cp -r flutter_patched_sdk engine-sdk/sdk/ +if [ -e shader_lib ]; then + cp -r shader_lib engine-sdk/sdk/lib +fi + +# +# /bin +# +cp clang_x64/exe.unstripped/* engine-sdk/bin/clang_x64/ + +# +# /lib +# +export cwd=$(pwd) +cd so.unstripped +for file in *; do + cp "$file" $cwd/engine-sdk/lib/ + cp "../$file.TOC" $cwd/engine-sdk/sdk/lib/ +done +cd $cwd + +# +# ld-linux-* +# +cp $SYSROOT/lib/ld-linux-armhf.so* engine-sdk/lib/ + +# +# /usr/lib/$ARCH-linux-gnu +# +cp $SYSROOT/lib/arm-linux-gnueabihf/libdl-* engine-sdk/lib/arm-linux-gnueabihf/ +cp $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/lib/arm-linux-gnueabihf/libdl.so* engine-sdk/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl-* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp $SYSROOT/lib/arm-linux-gnueabihf/libpthread-* engine-sdk/lib/arm-linux-gnueabihf/ +cp $SYSROOT/usr/lib/arm-linux-gnueabihf/libpthread-* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/lib/arm-linux-gnueabihf/libpthread.so* engine-sdk/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/usr/lib/arm-linux-gnueabihf/libpthread.so* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp $SYSROOT/lib/arm-linux-gnueabihf/libm-* engine-sdk/lib/arm-linux-gnueabihf/ +cp $SYSROOT/usr/lib/arm-linux-gnueabihf/libm-* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/lib/arm-linux-gnueabihf/libm.so* engine-sdk/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/usr/lib/arm-linux-gnueabihf/libm.so* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp $SYSROOT/lib/arm-linux-gnueabihf/libc-* engine-sdk/lib/arm-linux-gnueabihf/ +cp $SYSROOT/usr/lib/arm-linux-gnueabihf/libc-* engine-sdk/usr/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/lib/arm-linux-gnueabihf/libc.so* engine-sdk/lib/arm-linux-gnueabihf/ +cp -d $SYSROOT/usr/lib/arm-linux-gnueabihf/libc.so* engine-sdk/usr/lib/arm-linux-gnueabihf/ + +# +# Strip Components +# +export CLANG_BIN_PATH=../../flutter/buildtools/linux-x64/clang/bin +mkdir -p .debug +for file in $(pwd)/engine-sdk/bin/clang_x64/*; do + if [ -f "$file" ]; then + $CLANG_BIN_PATH/llvm-strip --only-keep-debug -o $file.debug $file + $CLANG_BIN_PATH/llvm-strip $file + fi +done +mv $(pwd)/engine-sdk/bin/clang_x64/*.debug $(pwd)/.debug/ +for file in $(pwd)/engine-sdk/lib/*; do + if [ -f "$file" ]; then + $CLANG_BIN_PATH/llvm-strip --only-keep-debug -o $file.debug $file + $CLANG_BIN_PATH/llvm-strip $file + fi +done +mv $(pwd)/engine-sdk/lib/*.debug $(pwd)/.debug/ diff --git a/scripts/prepare-sdk-x86-64.sh b/scripts/prepare-sdk-x86-64.sh new file mode 100755 index 0000000..a936aef --- /dev/null +++ b/scripts/prepare-sdk-x86-64.sh @@ -0,0 +1,82 @@ +#! /bin/bash + +mkdir -p engine-sdk/{data,bin,lib64,lib/x86_64-linux-gnu,usr/lib/x86_64-linux-gnu,usr/include,sdk/lib} + +# +# /data +# +cp icudtl.dat engine-sdk/data/ + +# +# Include +# +cp flutter_embedder.h engine-sdk/usr/include/ + +# +# SDK +# +cp -r flutter_patched_sdk engine-sdk/sdk/ +if [ -e shader_lib ]; then + cp -r shader_lib engine-sdk/sdk/lib +fi + +# +# /bin +# +cp exe.unstripped/* engine-sdk/bin/ + +# +# /lib +# +export cwd=$(pwd) +cd so.unstripped +for file in *; do + cp "$file" $cwd/engine-sdk/lib/ + cp "../$file.TOC" $cwd/engine-sdk/sdk/lib/ +done +cd $cwd + +# +# /lib64 +# +cp $SYSROOT/lib64/ld-linux-x86-64.so* engine-sdk/lib64/ + +# +# /usr/lib/$ARCH-linux-gnu +# +cp $SYSROOT/lib/x86_64-linux-gnu/libdl-* engine-sdk/lib/x86_64-linux-gnu/ +cp $SYSROOT/usr/lib/x86_64-linux-gnu/libdl.so* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/lib/x86_64-linux-gnu/libdl.so* engine-sdk/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/usr/lib/x86_64-linux-gnu/libdl-* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp $SYSROOT/lib/x86_64-linux-gnu/libpthread-* engine-sdk/lib/x86_64-linux-gnu/ +cp $SYSROOT/usr/lib/x86_64-linux-gnu/libpthread-* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/lib/x86_64-linux-gnu/libpthread.so* engine-sdk/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/usr/lib/x86_64-linux-gnu/libpthread.so* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp $SYSROOT/lib/x86_64-linux-gnu/libm-* engine-sdk/lib/x86_64-linux-gnu/ +cp $SYSROOT/usr/lib/x86_64-linux-gnu/libm-* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/lib/x86_64-linux-gnu/libm.so* engine-sdk/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/usr/lib/x86_64-linux-gnu/libm.so* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp $SYSROOT/lib/x86_64-linux-gnu/libc-* engine-sdk/lib/x86_64-linux-gnu/ +cp $SYSROOT/usr/lib/x86_64-linux-gnu/libc-* engine-sdk/usr/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/lib/x86_64-linux-gnu/libc.so* engine-sdk/lib/x86_64-linux-gnu/ +cp -d $SYSROOT/usr/lib/x86_64-linux-gnu/libc.so* engine-sdk/usr/lib/x86_64-linux-gnu/ + +# +# Strip Components +# +export CLANG_BIN_PATH=../../flutter/buildtools/linux-x64/clang/bin +mkdir -p .debug +for file in $(pwd)/engine-sdk/bin/*; do + if [ -f "$file" ]; then + $CLANG_BIN_PATH/llvm-strip --only-keep-debug -o $file.debug $file + $CLANG_BIN_PATH/llvm-strip $file + fi +done +mv $(pwd)/engine-sdk/bin/*.debug $(pwd)/.debug/ +for file in $(pwd)/engine-sdk/lib/*; do + if [ -f "$file" ]; then + $CLANG_BIN_PATH/llvm-strip --only-keep-debug -o $file.debug $file + $CLANG_BIN_PATH/llvm-strip $file + fi +done +mv $(pwd)/engine-sdk/lib/*.debug $(pwd)/.debug/