mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-24 09:46:59 -06:00
83 lines
3.4 KiB
YAML
83 lines
3.4 KiB
YAML
# FreeBSD build and package check in a QEMU VM.
|
|
name: FreeBSD
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- ".github/workflows/freebsd.yml"
|
|
- "packaging/freebsd/**"
|
|
- "packaging/env.sh"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- "crates/**"
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- ".github/workflows/freebsd.yml"
|
|
- "packaging/freebsd/**"
|
|
- "packaging/env.sh"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- "crates/**"
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: freebsd-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
freebsd:
|
|
# Intentionally tracked at @main (not SHA-pinned) so org-wide CI improvements, security fixes, and build optimizations propagate without PR churn across all craftapp repos.
|
|
uses: storytold/craft-common-actions/.github/workflows/freebsd.yml@main
|
|
with:
|
|
require-craft-fonts: true
|
|
craft-fonts-ref: 3d9ab3a132ed0eff457e424226a435a901da30d3
|
|
|
|
package:
|
|
name: FreeBSD 14 (package)
|
|
# The release build takes a while: only for PRs that touch FreeBSD packaging (or dependencies)
|
|
# and on demand, not on every push to main.
|
|
if: github.event_name != 'push'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 150
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
# Japanese, Chinese, Arabic and Thai fonts, embedded by crates/text/build.rs (CRAFT_FONTS_DIR in the VM).
|
|
# Bump the commit deliberately; see craftrules standards/fonts.md.
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
repository: storytold/craft-fonts
|
|
ref: 3d9ab3a132ed0eff457e424226a435a901da30d3
|
|
path: craft-fonts
|
|
- name: Package in a FreeBSD VM
|
|
uses: vmactions/freebsd-vm@c46abacb49f09938ca4e1702d15d836285d694cc # v1.5.9
|
|
with:
|
|
release: "14.3"
|
|
usesh: true
|
|
mem: 12288
|
|
prepare: |
|
|
pkg install -y bash curl git pkgconf cmake python3 libxkbcommon wayland libX11 libXcursor libXrandr libXi libxcb mesa-libs vulkan-loader gtk3 fontconfig freetype2 alsa-lib
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
|
|
run: |
|
|
. "$HOME/.cargo/env"
|
|
git config --global --add safe.directory "$PWD"
|
|
# Build outside the checkout so only dist/ is copied back out of the VM.
|
|
# The craft-fonts checkout is synced into the VM with the workspace.
|
|
export CRAFT_FONTS_DIR="$PWD/craft-fonts" CRAFT_FONTS_REQUIRED=1
|
|
export CARGO_TARGET_DIR=/var/tmp/vectorcraft-target CARGO_BUILD_JOBS=4
|
|
bash packaging/freebsd/package.sh
|
|
# Every part the package must have, the craft-fonts licences included.
|
|
tar -tzf dist/release/vectorcraft-*-freebsd-x86_64.tar.gz >/var/tmp/contents.txt
|
|
for want in '/bin/vectorcraft$' '/bin/vectorcraft-cli$' '/share/applications/.*\.desktop$' '/share/icons/hicolor/' '/share/doc/vectorcraft/NOTICE$' '/share/doc/vectorcraft/OFL-.*\.txt$'; do
|
|
grep -Eq "$want" /var/tmp/contents.txt || { echo "missing from the package: $want"; exit 1; }
|
|
done
|
|
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
with:
|
|
name: freebsd-package
|
|
path: dist/release/*
|
|
if-no-files-found: error
|