Skip to content

Fix Linux HarfBuzzSharp build #2

Fix Linux HarfBuzzSharp build

Fix Linux HarfBuzzSharp build #2

name: build-skia-3-linux
on:
push:
paths:
- ".github/workflows/build-linux*"
- ".github/actions/setup-linux/**"
- ".github/actions/build-linux/**"
- ".github/actions/deploy/**"
- "args.linux.gn"
- "nuget/SkiaSharp.Static.Linux.csproj"
- "nuget/buildTransitive/2ndLAB.SkiaSharp.Static.Linux.targets"
env:
SkiaSharpVersion: 3.119.4-preview.1
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- arch: x64
runner: ubuntu-latest
- arch: arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-linux
with:
arch: ${{ matrix.arch }}
- uses: ./.github/actions/build-linux
with:
arch: ${{ matrix.arch }}
pack:
needs: build
runs-on: ubuntu-latest
permissions:
id-token: write
attestations: write
contents: write
steps:
- uses: actions/checkout@v4
- uses: hustcer/setup-nu@main
with:
version: "*"
- name: Install p7zip
shell: bash
run: sudo apt-get update && sudo apt-get install -y p7zip-full
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Compute build version and package names
shell: nu {0}
run: |
let count = (git rev-list --count HEAD | into int)
let hash = (git rev-parse --short HEAD)
let build = $"($count).($hash)"
[
$"BuildVersion=($build)"
$"PackageName=2ndLAB.SkiaSharp.Static.Linux.($env.SkiaSharpVersion)-($build)"
$"SkiaSharpName=libSkiaSharp-($env.SkiaSharpVersion)-linux-($build)"
$"HarfBuzzSharpName=libHarfBuzzSharp-($env.SkiaSharpVersion)-linux-($build)"
$"SkiaSharpNameX64=libSkiaSharp-($env.SkiaSharpVersion)-linux-x64-($build)"
$"SkiaSharpNameArm64=libSkiaSharp-($env.SkiaSharpVersion)-linux-arm64-($build)"
$"HarfBuzzSharpNameX64=libHarfBuzzSharp-($env.SkiaSharpVersion)-linux-x64-($build)"
$"HarfBuzzSharpNameArm64=libHarfBuzzSharp-($env.SkiaSharpVersion)-linux-arm64-($build)"
] | str join (char newline) | save --append $env.GITHUB_ENV
- uses: actions/download-artifact@v4
with:
name: skia-x64
path: artifacts/x64
- uses: actions/download-artifact@v4
with:
name: skia-arm64
path: artifacts/arm64
- name: Expand per-arch .7z into runtime layout
shell: nu {0}
run: |
mkdir out/linux-x64/native out/linux-arm64/native
7z x -y $"artifacts/x64/($env.SkiaSharpNameX64).7z" -o./out/linux-x64/native
7z x -y $"artifacts/x64/($env.HarfBuzzSharpNameX64).7z" -o./out/linux-x64/native
7z x -y $"artifacts/arm64/($env.SkiaSharpNameArm64).7z" -o./out/linux-arm64/native
7z x -y $"artifacts/arm64/($env.HarfBuzzSharpNameArm64).7z" -o./out/linux-arm64/native
ls out/linux-x64/native
ls out/linux-arm64/native
- name: dotnet pack
shell: nu {0}
run: dotnet pack nuget/SkiaSharp.Static.Linux.csproj -p $"version=($env.SkiaSharpVersion)-($env.BuildVersion)" -o $"($env.GITHUB_WORKSPACE)"
- name: Repackage combined .7z bundles for deploy
shell: nu {0}
run: |
7z a -y -mx9 $"($env.SkiaSharpName).7z" out/linux-x64/native/libskia.a out/linux-x64/native/libSkiaSharp.a out/linux-arm64/native/libskia.a out/linux-arm64/native/libSkiaSharp.a
7z a -y -mx9 $"($env.HarfBuzzSharpName).7z" out/linux-x64/native/libHarfBuzzSharp.a out/linux-arm64/native/libHarfBuzzSharp.a
- uses: ./.github/actions/deploy
with:
NUGET_KEY: ${{ secrets.NUGET_KEY }}