From d054dd33e2c2d4fc048e2ec0efd77fff65fd397d Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Tue, 29 Aug 2023 23:01:22 +0200 Subject: [PATCH] CI: Replace relative library @loader_path paths, macdeployqt does not understand these --- .github/workflows/build.yml | 42 +++++++++++++++---------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 53945772a..3cef9e414 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -820,30 +820,6 @@ jobs: HOMEBREW_NO_INSTALL_FROM_API: 1 run: brew reinstall --build-from-source gst-libav - - name: Fix rpaths - run: | - sudo install_name_tool -change "@loader_path/../../../../opt/freetype/lib/libfreetype.6.dylib" "/usr/local/opt/freetype/lib/libfreetype.6.dylib" /usr/local/lib/libharfbuzz.0.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/glib/lib/libglib-2.0.0.dylib" "/usr/local/opt/glib/lib/libglib-2.0.0.dylib" /usr/local/lib/libharfbuzz.0.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/graphite2/lib/libgraphite2.3.dylib" "/usr/local/opt/graphite2/lib/libgraphite2.3.dylib" /usr/local/lib/libharfbuzz.0.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/gettext/lib/libintl.8.dylib" "/usr/local/opt/gettext/lib/libintl.8.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/p11-kit/lib/libp11-kit.0.dylib" "/usr/local/opt/p11-kit/lib/libp11-kit.0.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libidn2/lib/libidn2.0.dylib" "/usr/local/opt/libidn2/lib/libidn2.0.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libunistring/lib/libunistring.5.dylib" "/usr/local/opt/libunistring/lib/libunistring.5.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libtasn1/lib/libtasn1.6.dylib" "/usr/local/opt/libtasn1/lib/libtasn1.6.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/nettle/lib/libnettle.8.dylib" "/usr/local/opt/nettle/lib/libnettle.8.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/nettle/lib/libhogweed.6.dylib" "/usr/local/opt/nettle/lib/libhogweed.6.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/gmp/lib/libgmp.10.dylib" "/usr/local/opt/gmp/lib/libgmp.10.dylib" /usr/local/lib/libgnutls.30.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/leptonica/lib/libleptonica.6.dylib" "/usr/local/opt/leptonica/lib/libleptonica.6.dylib" /usr/local/lib/libtesseract.5.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libarchive/lib/libarchive.13.dylib" "/usr/local/opt/leptonica/lib/libarchive.13.dylib" /usr/local/lib/libtesseract.5.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libsamplerate/lib/libsamplerate.0.dylib" "/usr/local/opt/libsamplerate/lib/libsamplerate.0.dylib" /usr/local/lib/librubberband.2.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libpng/lib/libpng16.16.dylib" "/usr/local/opt/libpng/lib/libpng16.16.dylib" /usr/local/lib/libleptonica.6.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/jpeg-turbo/lib/libjpeg.8.dylib" "/usr/local/opt/jpeg-turbo/lib/libjpeg.8.dylib" /usr/local/lib/libleptonica.6.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/giflib/lib/libgif.dylib" "/usr/local/opt/giflib/lib/libgif.dylib" /usr/local/lib/libleptonica.6.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/libtiff/lib/libtiff.6.dylib" "/usr/local/opt/libtiff/lib/libtiff.6.dylib" /usr/local/lib/libleptonica.6.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/webp/lib/libwebp.7.dylib" "/usr/local/opt/webp/lib/libwebp.7.dylib" /usr/local/lib/libleptonica.6.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/webp/lib/libwebpmux.3.dylib" "/usr/local/opt/webp/lib/libwebpmux.3.dylib" /usr/local/lib/libleptonica.6.dylib - sudo install_name_tool -change "@loader_path/../../../../opt/openjpeg/lib/libopenjp2.7.dylib" "/usr/local/opt/openjpeg/lib/libopenjp2.7.dylib" /usr/local/lib/libleptonica.6.dylib - - name: Build libgpod env: PERL_MM_USE_DEFAULT: 1 @@ -856,6 +832,22 @@ jobs: make -j 4 sudo make install + - name: Replace relative library @loader_path paths - macdeployqt does not understand these. + run: | + for library in $(find -E /usr/local/Cellar -type f -regex '.*/lib/.*\.framework/Versions/A/Qt(Core|Concurrent|Network|Sql|Widgets|Gui|DBus)' -o -name '*.dylib'); do + library_paths=$(otool -L "${library}" | sed -n "s/^\t\(.*\) (compatibility version [0-9]*\.[0-9]*\.[0-9]*, current version [0-9]*\.[0-9]*\.[0-9]*)/\1/p") + for library_path in ${library_paths}; do + if ! [ "$(echo "${library_path}" | grep "^@loader_path" || true)" = "" ]; then + new_library_path=$(echo "${library_path}" | sed -E 's/@loader_path(\/\.\.)+\/opt/\/usr\/local\/opt/g') + if ! [ "${new_library_path}" = "" ] && ! [ "${new_library_path}" = "${library_path}" ] && [ -e "${new_library_path}" ]; then + sudo install_name_tool -change "${library_path}" "${new_library_path}" "${library}" + else + echo "${library} points to ${library_path}, could not resolve to absolute path." + fi + fi + done + done + - name: Checkout uses: actions/checkout@v3 with: @@ -889,7 +881,7 @@ jobs: working-directory: build run: | mkdir -p strawberry.app/Contents/Frameworks/ - cp /usr/local/lib/libsoup-3.0.0.dylib strawberry.app/Contents/Frameworks/ + cp /usr/local/lib/{libsoup-3.0.0.dylib,libswresample.4.dylib,libswscale.7.dylib,libpostproc.57.dylib} strawberry.app/Contents/Frameworks/ - name: Deploy working-directory: build