From 325a3609a057bf6fc9bfafeef14db69e6a1bafa2 Mon Sep 17 00:00:00 2001 From: Alain Nussbaumer Date: Sun, 9 Jun 2024 11:10:22 +0200 Subject: [PATCH] [ci] Streamline macOS pipelines --- .github/workflows/macos_12.yml | 43 +++++++++------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/.github/workflows/macos_12.yml b/.github/workflows/macos_12.yml index c4f40c41..b2e9ee8b 100644 --- a/.github/workflows/macos_12.yml +++ b/.github/workflows/macos_12.yml @@ -14,15 +14,15 @@ jobs: 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. + # 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 /usr/local/opt/bison/bin/bison /usr/local/bin/bison - sudo ln -s /usr/local/opt/flex/bin/flex /usr/local/bin/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 @@ -35,43 +35,22 @@ jobs: 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 + # libxml2 is included with macOS run: | - brew install libxml2 libunistring confuse libplist libwebsockets libevent libgcrypt json-c protobuf-c libsodium gnutls pulseaudio openssl + 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: | - # 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