name: macOS 12 on: workflow_dispatch: jobs: build: runs-on: macos-12 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