Skip to content

Linux x86_64

Linux x86_64 #142

name: Linux x86_64
on:
workflow_dispatch:
inputs:
srcrev:
description: 'Flutter Engine Commit Hash'
required: True
default: ''
release:
description: 'Release'
required: false
default: 'false'
jobs:
linux-x86_64:
runs-on: [self-hosted, linux, x64]
env:
arch: x64
linux_cpu: x64
target_triple: x86_64-unknown-linux-gnu
target_sysroot: debian_sid_amd64-sysroot
tag_debug: linux-engine-sdk-debug-x86_64-${{ inputs.srcrev }}
tag_debug_unopt: linux-engine-sdk-debug-unopt-x86_64-${{ inputs.srcrev }}
tag_release: linux-engine-sdk-release-x86_64-${{ inputs.srcrev }}
tag_profile: linux-engine-sdk-profile-x86_64-${{ inputs.srcrev }}
notes_debug: "Flutter Engine - runtime debug SDK"
notes_debug_unopt: "Flutter Engine - runtime debug SDK"
notes_release: "Flutter Engine - runtime release SDK"
notes_profile: "Flutter Engine - runtime profile SDK"
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Install packages
run: |
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
- name: Get Flutter Source
run: |
export PATH=$PATH:$PWD/depot_tools
export VPYTHON_VIRTUALENV_ROOT=$PWD/vpython
git clone https://github.com/flutter/flutter.git
pushd flutter
gclient config --spec 'solutions=[{"managed":False,"name":".","url":"https://github.com/flutter/flutter.git","custom_deps":{},"custom_vars":{"download_android_deps":False,"download_windows_deps":False,"download_linux_deps":True},"deps_file":"DEPS","safesync_url":""}]'
gclient sync --force --shallow --no-history -R -D --revision ${{ inputs.SRCREV }} -j$(nproc) -v
popd
# fetch sysroot
cd flutter/engine/src
build/linux/sysroot_scripts/install-sysroot.py --arch=$arch
- name: Patch Flutter Source
run: |
PATCH_DIR=$PWD/patches
cd flutter
git apply $PATCH_DIR/0001-clang-toolchain.patch
- name: Build Debug
working-directory: flutter/engine/src
run: |
export PATH=$PATH:$PWD/../../../depot_tools
export VPYTHON_VIRTUALENV_ROOT=$PWD/../../../vpython
CLANG_ROOT=$(find -iname clang++)
CLANG_ROOT=$(dirname $CLANG_ROOT)
export CLANG_ROOT=$(dirname $CLANG_ROOT)
./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 \
--no-dart-version-git-info \
--linux-cpu $linux_cpu \
--target-os linux \
--target-sysroot $PWD/build/linux/$target_sysroot \
--target-toolchain $PWD/$CLANG_ROOT \
--target-triple $target_triple
ninja -C out/linux_debug_$arch
- name: Prepare Debug Artifacts
run: |
scripts/prepare-sdk-x86-64.sh flutter/engine/src/out/linux_debug_$arch $PWD/flutter/engine/src/build/linux/$target_sysroot
tar czfhv $tag_debug.tar.gz flutter/engine/src/out/linux_debug_$arch/engine-sdk/
sha256sum -b $tag_debug.tar.gz > $tag_debug.tar.gz.sha256
- name: Publish Debug
if: ${{ inputs.release != 'true' }}
uses: actions/upload-artifact@v4
with:
name: engine-sdk-debug
path: |
linux-engine-sdk-debug-x86_64-${{ inputs.srcrev }}.tar.gz
linux-engine-sdk-debug-x86_64-${{ inputs.srcrev }}.tar.gz.sha256
- name: Release - Debug Release
if: ${{ inputs.release == 'true' }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
gh release delete "$tag_debug" --cleanup-tag -y |true
gh release create --draft "$tag_debug" --title "$tag_debug" --notes "$notes_debug"
gh release upload "$tag_debug" "$tag_debug.tar.gz" "$tag_debug.tar.gz.sha256"
gh release edit "$tag_debug" --draft=false
- name: Build Debug Unoptimized
working-directory: flutter/engine/src
run: |
export PATH=$PATH:$PWD/../../../depot_tools
export VPYTHON_VIRTUALENV_ROOT=$PWD/../../../vpython
CLANG_ROOT=$(find -iname clang++)
CLANG_ROOT=$(dirname $CLANG_ROOT)
export CLANG_ROOT=$(dirname $CLANG_ROOT)
./flutter/tools/gn --runtime-mode=debug \
--unoptimized \
--embedder-for-target \
--no-build-embedder-examples \
--enable-impeller-3d \
--no-goma --no-rbe \
--no-stripped --no-enable-unittests \
--no-dart-version-git-info \
--linux-cpu $linux_cpu \
--target-os linux \
--target-sysroot $PWD/build/linux/$target_sysroot \
--target-toolchain $PWD/$CLANG_ROOT \
--target-triple $target_triple
ninja -C out/linux_debug_unopt_$arch
- name: Prepare Debug Unoptimized Artifacts
run: |
scripts/prepare-sdk-x86-64.sh flutter/engine/src/out/linux_debug_unopt_$arch $PWD/flutter/engine/src/build/linux/$target_sysroot
tar czfhv $tag_debug_unopt.tar.gz flutter/engine/src/out/linux_debug_unopt_$arch/engine-sdk/
sha256sum -b $tag_debug_unopt.tar.gz > $tag_debug_unopt.tar.gz.sha256
- name: Publish Debug Unoptimized
if: ${{ inputs.release != 'true' }}
uses: actions/upload-artifact@v4
with:
name: engine-sdk-debug-unoptimized
path: |
linux-engine-sdk-debug-unopt-x86_64-${{ inputs.srcrev }}.tar.gz
linux-engine-sdk-debug-unopt-x86_64-${{ inputs.srcrev }}.tar.gz.sha256
- name: Release - Debug Unoptimized Release
if: ${{ inputs.release == 'true' }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
gh release delete "$tag_debug_unopt" --cleanup-tag -y |true
gh release create --draft "$tag_debug_unopt" --title "$tag_debug_unopt" --notes "$notes_debug_unopt"
gh release upload "$tag_debug_unopt" "$tag_debug_unopt.tar.gz" "$tag_debug_unopt.tar.gz.sha256"
gh release edit "$tag_debug_unopt" --draft=false
- name: Build Release
working-directory: flutter/engine/src
run: |
export PATH=$PATH:$PWD/../../../depot_tools
export VPYTHON_VIRTUALENV_ROOT=$PWD/../../../vpython
CLANG_ROOT=$(find -iname clang++)
CLANG_ROOT=$(dirname $CLANG_ROOT)
export CLANG_ROOT=$(dirname $CLANG_ROOT)
./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 \
--no-dart-version-git-info \
--linux-cpu $linux_cpu \
--target-os linux \
--target-sysroot $PWD/build/linux/$target_sysroot \
--target-toolchain $PWD/$CLANG_ROOT \
--target-triple $target_triple
ninja -C out/linux_release_$arch
- name: Prepare Release Artifacts
run: |
scripts/prepare-sdk-x86-64.sh flutter/engine/src/out/linux_release_$arch $PWD/flutter/engine/src/build/linux/$target_sysroot
tar czfhv $tag_release.tar.gz flutter/engine/src/out/linux_release_$arch/engine-sdk/
sha256sum -b $tag_release.tar.gz > $tag_release.tar.gz.sha256
- name: Publish Release
if: ${{ inputs.release != 'true' }}
uses: actions/upload-artifact@v4
with:
name: engine-sdk-release
path: |
linux-engine-sdk-release-x86_64-${{ inputs.srcrev }}.tar.gz
linux-engine-sdk-release-x86_64-${{ inputs.srcrev }}.tar.gz.sha256
- name: Release - Publish Release
if: ${{ inputs.release == 'true' }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
gh release delete "$tag_release" --cleanup-tag -y |true
gh release create --draft "$tag_release" --title "$tag_release" --notes "$notes_release"
gh release upload "$tag_release" "$tag_release.tar.gz" "$tag_release.tar.gz.sha256"
gh release edit "$tag_release" --draft=false
- name: Build Profile
working-directory: flutter/engine/src
run: |
export PATH=$PATH:$PWD/../../../depot_tools
export VPYTHON_VIRTUALENV_ROOT=$PWD/../../../vpython
CLANG_ROOT=$(find -iname clang++)
CLANG_ROOT=$(dirname $CLANG_ROOT)
export CLANG_ROOT=$(dirname $CLANG_ROOT)
./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 \
--no-dart-version-git-info \
--linux-cpu $linux_cpu \
--target-os linux \
--target-sysroot $PWD/build/linux/$target_sysroot \
--target-toolchain $PWD/$CLANG_ROOT \
--target-triple $target_triple
ninja -C out/linux_profile_$arch
- name: Prepare Profile Artifacts
run: |
scripts/prepare-sdk-x86-64.sh flutter/engine/src/out/linux_profile_$arch $PWD/flutter/engine/src/build/linux/$target_sysroot
tar czfhv $tag_profile.tar.gz flutter/engine/src/out/linux_profile_$arch/engine-sdk/
sha256sum -b $tag_profile.tar.gz > $tag_profile.tar.gz.sha256
- name: Publish Profile
if: ${{ inputs.release != 'true' }}
uses: actions/upload-artifact@v4
with:
name: engine-sdk-profile
path: |
linux-engine-sdk-profile-x86_64-${{ inputs.srcrev }}.tar.gz
linux-engine-sdk-profile-x86_64-${{ inputs.srcrev }}.tar.gz.sha256
- name: Release - Publish Profile
if: ${{ inputs.release == 'true' }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
gh release delete "$tag_profile" --cleanup-tag -y |true
gh release create --draft "$tag_profile" --title "$tag_profile" --notes "$notes_profile"
gh release upload "$tag_profile" "$tag_profile.tar.gz" "$tag_profile.tar.gz.sha256"
gh release edit "$tag_profile" --draft=false