[scan] Fix issue where albums get split #929
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 comes with an ancient bison, we need a newer version. Homebrew's | |
# bison and flex are keg-only, which means they are not symlinked into | |
# /usr/local because macOS already provides this software. Homebrew tells | |
# you to adjust the $PATH, but I couldn't make that work, and I think | |
# symlinking is a better solution for simple binaries. | |
run: | | |
brew install gperf bison flex | |
sudo ln -s /usr/local/opt/bison/bin/bison /usr/local/bin/bison | |
sudo ln -s /usr/local/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 sqlite | |
# When GH actions has 3.43.0_1+, which has unlock-notify, then this can be | |
# removed and we can just install brew's sqlite | |
run: | | |
wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz | |
tar xzf sqlite-autoconf-3310100.tar.gz | |
cd sqlite-autoconf-3310100 | |
export CFLAGS='-DSQLITE_ENABLE_UNLOCK_NOTIFY=1' | |
./configure | |
make | |
sudo make install | |
cd .. | |
- name: Install ffmpeg | |
# The libbluray ffmpeg dependency fails without the chown (source: stackoverflow) | |
run: | | |
sudo chown -R $(whoami) $(brew --prefix)/* | |
brew install ffmpeg | |
- name: Install other dependencies | |
run: brew install libunistring libmxml confuse libplist libwebsockets libevent libgcrypt json-c protobuf-c libsodium gnutls pulseaudio openssl | |
- 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: | | |
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: | | |
# Without setting these env vars the build fails with e.g. "fatal error: 'openssl/ssl.h' file not found" | |
# (Solution taken from https://github.com/libimobiledevice/libimobiledevice/issues/389#issuecomment-289284190) | |
export LD_LIBRARY_PATH=$(brew --prefix openssl)/lib | |
export CPATH=$(brew --prefix openssl)/include | |
export PKG_CONFIG_PATH=$(brew --prefix openssl)/lib/pkgconfig | |
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 |