Skip to content

Commit

Permalink
Enable building artifacts for Apple TV and simulator (#38)
Browse files Browse the repository at this point in the history
  • Loading branch information
orangy authored May 20, 2023
1 parent 84d02b2 commit b049fc8
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 24 deletions.
63 changes: 47 additions & 16 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,19 @@ on:
default: 'false'

env:
version: m110-ad42464-1
version: m110-d88a7b5

jobs:
macos:
runs-on: macos-11
runs-on: ${{ fromJson('{"macos":"macos-11","ios":"macos-11","iosSim":"macos-11","tvos":"macos-13","tvosSim":"macos-13"}')[matrix.target] }}
strategy:
matrix:
target: ["macos", "ios", "iosSim"]
target: ["macos", "ios", "iosSim", "tvos", "tvosSim"]
machine: ["x64", "arm64"]
build_type: [Release, Debug]
exclude:
- target: tvos
machine: x64
fail-fast: false
steps:
- uses: actions/checkout@v2
Expand All @@ -43,28 +46,29 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

linux-ubuntu18:
runs-on: ubuntu-18.04
linux:
runs-on: ubuntu-latest
container: ubuntu:20.04
strategy:
matrix:
build_type: [Debug, Release]
fail-fast: false
steps:
- uses: actions/checkout@v2
- run: sudo ./script/prepare_linux.sh
- run: python3 script/check_release.py --version ${{ env.version }} --build-type ${{ matrix.build_type }} --classifier ubuntu18
- run: ./script/prepare_linux.sh
- run: python3 script/check_release.py --version ${{ env.version }} --build-type ${{ matrix.build_type }}
if: ${{ github.event.inputs.skip_release != 'true' && github.ref == 'refs/heads/main' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: PATH=/usr/lib/binutils-2.26/bin:$PATH python3 script/checkout.py --version ${{ env.version }}
- run: PATH=/usr/lib/binutils-2.26/bin:$PATH python3 script/build.py --build-type ${{ matrix.build_type }}
- run: PATH=/usr/lib/binutils-2.26/bin:$PATH python3 script/archive.py --version ${{ env.version }} --build-type ${{ matrix.build_type }} --classifier ubuntu18
- run: PATH=/usr/lib/binutils-2.26/bin:$PATH python3 script/archive.py --version ${{ env.version }} --build-type ${{ matrix.build_type }}
- uses: actions/upload-artifact@v2
if: ${{ github.event.inputs.skip_release != 'true' && github.ref == 'refs/heads/main' }}
with:
name: Skia-${{ env.version }}-linux-${{ matrix.build_type }}-x64-ubuntu18.zip
name: Skia-${{ env.version }}-linux-${{ matrix.build_type }}-x64.zip
path: '*.zip'
- run: python3 script/release.py --version ${{ env.version }} --build-type ${{ matrix.build_type }} --classifier ubuntu18
- run: python3 script/release.py --version ${{ env.version }} --build-type ${{ matrix.build_type }}
if: ${{ github.event.inputs.skip_release != 'true' && github.ref == 'refs/heads/main' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -97,15 +101,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

linux-android:
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
container: ubuntu:20.04
strategy:
matrix:
build_type: [ Debug, Release ]
machine: ["x64", "arm64"]
fail-fast: false
steps:
- run: sudo apt-get install unzip -y
- uses: actions/checkout@v2
- run: ./script/prepare_linux.sh
- run: python3 script/check_release.py --version ${{ env.version }} --target android --build-type ${{ matrix.build_type }} --machine ${{ matrix.machine }}
if: ${{ github.event.inputs.skip_release != 'true' && github.ref == 'refs/heads/main' }}
env:
Expand All @@ -127,17 +132,17 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

linux-arm64-2004:
runs-on: ubuntu-18.04
linux-arm64:
runs-on: ubuntu-latest
strategy:
matrix:
build_type: [ Debug, Release ]
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: uraimo/[email protected]
name: Run commands
id: runcmd
name: Assemble
id: assemble
if: ${{ github.event.inputs.skip_release != 'true' && github.ref == 'refs/heads/main' }}
with:
arch: aarch64
Expand All @@ -164,6 +169,32 @@ jobs:
python3 script/build.py --build-type ${build_type} --build-type ${build_type}
python3 script/archive.py --version ${build_version} --build-type ${build_type}
echo "Produced artifact at ${PWD}/${artifact_name}"
- uses: uraimo/[email protected]
name: Test Build
id: test-build
if: ${{ github.event.inputs.skip_release == 'true' || github.ref != 'refs/heads/main' }}
with:
arch: aarch64
distro: ubuntu20.04
githubToken: ${{ secrets.GITHUB_TOKEN }}
# Mount checkout directory as /checkout in the container
dockerRunArgs: |
--volume "${GITHUB_WORKSPACE}:/checkout"
env: |
build_type: ${{ matrix.build_type }}
build_version: ${{ env.version }}
artifact_name: Skia-${{ env.version }}-linux-${{ matrix.build_type }}-arm64.zip
# The shell to run commands with in the container
shell: /bin/bash
install: |
apt-get update -q -y
apt-get install -q -y bash
run: |
cd /checkout
/bin/bash script/prepare_linux_arm.sh
python3 script/checkout.py --version ${build_version}
python3 script/build.py --build-type ${build_type} --build-type ${build_type}
echo "Verified build"
- uses: actions/upload-artifact@v2
if: ${{ github.event.inputs.skip_release != 'true' && github.ref == 'refs/heads/main' }}
with:
Expand Down
25 changes: 17 additions & 8 deletions script/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ def main():
tools_dir = "depot_tools"
ninja = 'ninja.bat' if 'windows' == host else 'ninja'
isIos = 'ios' == target or 'iosSim' == target
isTvos = 'tvos' == target or 'tvosSim' == target
isIosSim = 'iosSim' == target
isTvosSim = 'tvosSim' == target

if build_type == 'Debug':
args = ['is_debug=true']
Expand All @@ -37,22 +39,29 @@ def main():
'skia_enable_skottie=true'
]

if 'macos' == target or isIos:
args += [
'skia_use_metal=true',
'extra_cflags_cc=["-frtti"]'
]
if 'macos' == target or isIos or isTvos:
args += ['extra_cflags_cc=["-frtti"]']
args += ['skia_use_metal=true']
if isIos:
args += ['target_os="ios"']
if isIosSim:
args += ['ios_use_simulator=true']
else:
args += ['ios_min_target="11.0"']
else:
if 'arm64' == machine:
args += ['extra_cflags=["-stdlib=libc++"]']
if isTvos:
args += ['target_os="tvos"']
# Metal needs tvOS version 14 and SK_BUILD_FOR_TVOS to skip legacy iOS checks
if isTvosSim:
args += ['ios_use_simulator=true']
args += ['extra_cflags=["-mtvos-simulator-version-min=14", "-DSK_BUILD_FOR_TVOS"]']
else:
args += ['extra_cflags=["-mtvos-version-min=14", "-DSK_BUILD_FOR_TVOS"]']
else:
args += ['extra_cflags=["-stdlib=libc++", "-mmacosx-version-min=10.13"]']
if 'arm64' == machine:
args += ['extra_cflags=["-stdlib=libc++"]']
else:
args += ['extra_cflags=["-stdlib=libc++", "-mmacosx-version-min=10.13"]']
elif 'linux' == target:
if 'arm64' == machine:
# TODO: use clang on all targets!
Expand Down
2 changes: 2 additions & 0 deletions script/prepare_linux.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/bin/bash
set -o errexit -o nounset -o pipefail

export DEBIAN_FRONTEND=noninteractive

apt-get update -y
apt-get install build-essential software-properties-common -y
add-apt-repository ppa:ubuntu-toolchain-r/test -y
Expand Down

0 comments on commit b049fc8

Please sign in to comment.