mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-09-13 06:53:22 -06:00
ci: add x86-64 FreeBSD and NetBSD jobs
This commit is contained in:
107
.github/workflows/build-bsd.yml
vendored
Normal file
107
.github/workflows/build-bsd.yml
vendored
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
name: "*BSD"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- ci/*
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
env:
|
||||||
|
MELONDS_GIT_BRANCH: ${{ github.ref }}
|
||||||
|
MELONDS_GIT_HASH: ${{ github.sha }}
|
||||||
|
MELONDS_BUILD_PROVIDER: GitHub Actions
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [freebsd, netbsd, openbsd]
|
||||||
|
# The emulated aarch64 VMs are quite slow, so disable aarch64
|
||||||
|
# runs for now.
|
||||||
|
arch: [x86_64] #, aarch64]
|
||||||
|
include:
|
||||||
|
- os: freebsd
|
||||||
|
os_name: FreeBSD
|
||||||
|
# CMake's autorcc for Qt tries to lock files, so we need to
|
||||||
|
# start lockd for NFS, otherwise the build will fail.
|
||||||
|
prepare_vm: service lockd onestart
|
||||||
|
install_deps: >
|
||||||
|
pkg install -y cmake kf6-extra-cmake-modules pkgconf ninja
|
||||||
|
qt6-base qt6-multimedia qt6-svg sdl2 libarchive zstd enet
|
||||||
|
faad2
|
||||||
|
|
||||||
|
- os: netbsd
|
||||||
|
os_name: NetBSD
|
||||||
|
# The NetBSD VM image does not come with X sets by default,
|
||||||
|
# so download and unpack the sets we need manually.
|
||||||
|
# See https://github.com/vmactions/netbsd-vm/issues/2
|
||||||
|
# Also, for some reason pkg_add is not in $PATH, so we have
|
||||||
|
# to call it using its absolute location.
|
||||||
|
prepare_vm: |
|
||||||
|
/usr/sbin/pkg_add pkgin curl
|
||||||
|
mach=$(uname -m | sed "s/evbarm/evbarm-$(uname -p)/")
|
||||||
|
for set in xbase xcomp; do
|
||||||
|
curl -sL ${PKG_PATH%%/pkgsrc*}/NetBSD/NetBSD-$(uname -r
|
||||||
|
)/$mach/binary/sets/$set.tar.xz | tar xJpf - -C /
|
||||||
|
done
|
||||||
|
install_deps: >
|
||||||
|
pkgin -y install cmake extra-cmake-modules pkgconf
|
||||||
|
ninja-build qt6-qtbase qt6-qtmultimedia qt6-qtsvg SDL2
|
||||||
|
libarchive zstd enet faad2
|
||||||
|
|
||||||
|
- os: openbsd
|
||||||
|
os_name: OpenBSD
|
||||||
|
install_deps: >
|
||||||
|
pkg_add -v cmake kf6-extra-cmake-modules pkgconf ninja
|
||||||
|
qt6-qtbase qt6-qtmultimedia qt6-qtsvg sdl2 libarchive zstd
|
||||||
|
enet faad
|
||||||
|
|
||||||
|
|
||||||
|
name: ${{ matrix.os_name }} / ${{ matrix.arch }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: ${{ matrix.os }} {0}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
name: Check out sources
|
||||||
|
|
||||||
|
- name: Start ${{ matrix.os_name }} VM
|
||||||
|
uses: jenseng/dynamic-uses@v1
|
||||||
|
with:
|
||||||
|
uses: vmactions/${{ matrix.os }}-vm@v1
|
||||||
|
# As we are using multiple steps, we need to use NFS to sync the
|
||||||
|
# workspace between host and VM, as with the default, rsync, the
|
||||||
|
# workspace is only synced before and after the setup VM step.
|
||||||
|
with: >
|
||||||
|
{
|
||||||
|
"arch": ${{ matrix.arch }},
|
||||||
|
"envs": "MELONDS_GIT_BRANCH MELONDS_GIT_HASH
|
||||||
|
MELONDS_BUILD_PROVIDER",
|
||||||
|
"prepare": ${{ toJSON(matrix.prepare_vm) }},
|
||||||
|
"sync": "nfs",
|
||||||
|
"usesh": "true",
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: ${{ matrix.install_deps }}
|
||||||
|
|
||||||
|
- name: Configure
|
||||||
|
run: |
|
||||||
|
cd $GITHUB_WORKSPACE
|
||||||
|
cmake -B build -G Ninja -DMELONDS_EMBED_BUILD_INFO=ON
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cd $GITHUB_WORKSPACE
|
||||||
|
cmake --build build
|
||||||
|
|
||||||
|
- name: Upload binary
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: melonDS-${{ matrix.os }}-${{ matrix.arch }}
|
||||||
|
path: build/melonDS
|
67
.github/workflows/build-openbsd.yml
vendored
67
.github/workflows/build-openbsd.yml
vendored
@ -1,67 +0,0 @@
|
|||||||
name: OpenBSD
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- ci/*
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
env:
|
|
||||||
MELONDS_GIT_BRANCH: ${{ github.ref }}
|
|
||||||
MELONDS_GIT_HASH: ${{ github.sha }}
|
|
||||||
MELONDS_BUILD_PROVIDER: GitHub Actions
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- arch: x86_64
|
|
||||||
runner: ubuntu-latest
|
|
||||||
# Disabled until vmactions supports running on a linux arm64 runner
|
|
||||||
# - arch: aarch64
|
|
||||||
# runner: ubuntu-22.04-arm
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.runner }}
|
|
||||||
name: ${{ matrix.arch }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
name: Check out sources
|
|
||||||
|
|
||||||
- name: Start OpenBSD VM
|
|
||||||
id: vm
|
|
||||||
uses: vmactions/openbsd-vm@v1
|
|
||||||
with:
|
|
||||||
envs: 'MELONDS_GIT_BRANCH MELONDS_GIT_HASH MELONDS_BUILD_PROVIDER'
|
|
||||||
usesh: true
|
|
||||||
arch: ${{ matrix.arch }}
|
|
||||||
sync: nfs
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: openbsd {0}
|
|
||||||
run: |
|
|
||||||
pkg_add -v cmake enet faad kf6-extra-cmake-modules \
|
|
||||||
libarchive libslirp ninja qt6-qtbase qt6-qtmultimedia sdl2
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
shell: openbsd {0}
|
|
||||||
run: |
|
|
||||||
cd $GITHUB_WORKSPACE
|
|
||||||
cmake -B build -G Ninja \
|
|
||||||
-DMELONDS_EMBED_BUILD_INFO=ON
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
shell: openbsd {0}
|
|
||||||
run: |
|
|
||||||
cd $GITHUB_WORKSPACE
|
|
||||||
cmake --build build
|
|
||||||
|
|
||||||
- name: Upload binary
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: melonDS-openbsd-${{ matrix.arch }}
|
|
||||||
path: build/melonDS
|
|
Reference in New Issue
Block a user