84 lines
2.6 KiB
YAML
84 lines
2.6 KiB
YAML
name: macOS
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- 'htdocs/**'
|
|
- 'web-src/**'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- 'htdocs/**'
|
|
- 'web-src/**'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install build tools
|
|
run: brew install automake autoconf libtool pkg-config
|
|
|
|
- name: Install gperf, bison and flex
|
|
# macOS has ancient versions of bison and flex, so we need a newer from
|
|
# Homebrew. The new versions are installed keg-only, so we must tell
|
|
# configure/make where to look. Adjusting $PATH doesn't work (maybe
|
|
# because make invokes the two via ylwrap), so instead symlink the two
|
|
# into /usr/local/bin.
|
|
run: |
|
|
brew install gperf bison flex
|
|
sudo ln -s "$(brew --prefix)/opt/bison/bin/bison" /usr/local/bin/bison
|
|
sudo ln -s "$(brew --prefix)/opt/flex/bin/flex" /usr/local/bin/flex
|
|
|
|
- name: Install libinotify-kqueue
|
|
# brew does not have libinotify package
|
|
run: |
|
|
git clone https://github.com/libinotify-kqueue/libinotify-kqueue
|
|
cd libinotify-kqueue
|
|
autoreconf -fvi
|
|
./configure
|
|
make
|
|
sudo make install
|
|
cd ..
|
|
|
|
- name: Install other dependencies
|
|
# libxml2 is included with macOS
|
|
run: |
|
|
brew install libunistring confuse libplist libwebsockets libevent libgcrypt json-c protobuf-c libsodium gnutls pulseaudio openssl ffmpeg sqlite
|
|
|
|
- name: Configure
|
|
# We configure a non-privileged setup, since how to add a "owntone" system
|
|
# user in macOS isn't clear to me (useradd etc. isn't available)
|
|
run: |
|
|
export CFLAGS="-I$(brew --prefix)/include -I$(brew --prefix sqlite)/include"
|
|
export LDFLAGS="-L$(brew --prefix)/lib -L$(brew --prefix sqlite)/lib"
|
|
autoreconf -fi
|
|
./configure --prefix=$HOME/owntone_data/usr --sysconfdir=$HOME/owntone_data/etc --localstatedir=$HOME/owntone_data/var --enable-chromecast --with-pulseaudio
|
|
|
|
- name: Build
|
|
run: |
|
|
make
|
|
|
|
- name: Install
|
|
run: |
|
|
make install
|
|
|
|
- name: Prepare test run
|
|
run: |
|
|
mkdir -p $HOME/owntone_data/media
|
|
sed -i '' 's/uid = "owntone"/uid = ${USER}/g' $HOME/owntone_data/etc/owntone.conf
|
|
sed -i '' 's/loglevel = log/loglevel = debug/g' $HOME/owntone_data/etc/owntone.conf
|
|
sed -i '' 's/directories = { "\/srv\/music" }/directories = { "${HOME}\/owntone_data\/media" }/g' $HOME/owntone_data/etc/owntone.conf
|
|
|
|
- name: Test run
|
|
run: |
|
|
$HOME/owntone_data/usr/sbin/owntone -f -t
|