MPD noidle and command lists (refactored version of PR #1612) #1049
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |