From 249a5bf3b7c07f729d86f6a8bc798e24d400d9ff Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Thu, 19 Aug 2021 22:15:30 +0200 Subject: [PATCH] macOS deploy CI improvements --- .github/workflows/ccpp.yml | 83 ++++++++++++++++---------------------- cmake/Dmg.cmake | 12 +----- 2 files changed, 37 insertions(+), 58 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index fcd769c8..f3bfe6ea 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -1125,12 +1125,7 @@ jobs: create-dmg taglib libplist - gnome-common gdk-pixbuf - intltool - autoconf - automake - gtk-doc - name: Install Sparkle run: brew install --cask sparkle @@ -1145,22 +1140,11 @@ jobs: env: PERL_MM_USE_DEFAULT: 1 run: | - sudo cpan install XML::Parser - wget https://downloads.sourceforge.net/project/gtkpod/libgpod/libgpod-0.8/libgpod-0.8.3.tar.bz2 - tar -xvf libgpod-0.8.3.tar.bz2 - cd libgpod-0.8.3 - wget https://raw.githubusercontent.com/macports/macports-ports/master/multimedia/libgpod/files/autogen.sh - wget https://raw.githubusercontent.com/macports/macports-ports/master/multimedia/libgpod/files/patch-tools-generic-callout.c.diff - wget http://files.strawberrymusicplayer.org/patches/libgpod-libplist.patch - patch -p0 < patch-tools-generic-callout.c.diff - patch -p1 < libgpod-libplist.patch - chmod u+x autogen.sh - ./autogen.sh - ./configure --disable-more-warnings \ - --disable-silent-rules \ - --disable-udev \ - --disable-pygobject \ - --with-python=no + git clone https://github.com/strawberrymusicplayer/strawberry-libgpod + cd strawberry-libgpod + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release make -j 4 sudo make install @@ -1185,6 +1169,24 @@ jobs: working-directory: build shell: bash run: make install + - name: Manually copy files not handled by macdeployqt + working-directory: build + shell: bash + run: | + mkdir -p strawberry.app/Contents/Frameworks/ + cp -v /usr/local/lib/libbrotlicommon.1.dylib strawberry.app/Contents/Frameworks/ + cp -v /usr/local/opt/icu4c/lib/libicudata.69.dylib strawberry.app/Contents/Frameworks/ + cp -v /usr/local/lib/libgpod.dylib strawberry.app/Contents/Frameworks/ + install_name_tool -change "@rpath/libgpod.dylib" "@loader_path/../Frameworks/libgpod.dylib" strawberry.app/Contents/MacOS/strawberry + # Sparkle + mkdir -p strawberry.app/Contents/Frameworks/Sparkle.framework/Versions/A + cp -v /usr/local/opt/sparkle/Sparkle.framework/Sparkle strawberry.app/Contents/Frameworks/Sparkle.framework/ + cp -v /usr/local/opt/sparkle/Sparkle.framework/Versions/A/Sparkle strawberry.app/Contents/Frameworks/Sparkle.framework/Versions/A/ + cp -v -R /usr/local/opt/sparkle/Sparkle.framework/Versions/Current strawberry.app/Contents/Frameworks/Sparkle.framework/Versions/ + - name: Create DMG + working-directory: build + shell: bash + run: make dmg build-macos-qt6: name: Build macOS Qt 6 @@ -1218,12 +1220,7 @@ jobs: create-dmg taglib libplist - gnome-common gdk-pixbuf - intltool - autoconf - automake - gtk-doc - name: Install Sparkle run: brew install --cask sparkle @@ -1238,22 +1235,11 @@ jobs: env: PERL_MM_USE_DEFAULT: 1 run: | - sudo cpan install XML::Parser - wget https://downloads.sourceforge.net/project/gtkpod/libgpod/libgpod-0.8/libgpod-0.8.3.tar.bz2 - tar -xvf libgpod-0.8.3.tar.bz2 - cd libgpod-0.8.3 - wget https://raw.githubusercontent.com/macports/macports-ports/master/multimedia/libgpod/files/autogen.sh - wget https://raw.githubusercontent.com/macports/macports-ports/master/multimedia/libgpod/files/patch-tools-generic-callout.c.diff - wget http://files.strawberrymusicplayer.org/patches/libgpod-libplist.patch - patch -p0 < patch-tools-generic-callout.c.diff - patch -p1 < libgpod-libplist.patch - chmod u+x autogen.sh - ./autogen.sh - ./configure --disable-more-warnings \ - --disable-silent-rules \ - --disable-udev \ - --disable-pygobject \ - --with-python=no + git clone https://github.com/strawberrymusicplayer/strawberry-libgpod + cd strawberry-libgpod + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release make -j 4 sudo make install @@ -1282,16 +1268,17 @@ jobs: working-directory: build shell: bash run: make install - - name: Manually copy libbrotlicommon.1.dylib + - name: Manually copy files not handled by macdeployqt working-directory: build shell: bash run: | mkdir -p strawberry.app/Contents/Frameworks/ - cp /usr/local/lib/libbrotlicommon.1.dylib strawberry.app/Contents/Frameworks/ - - name: Copy sparkle - working-directory: build - shell: bash - run: make copy_sparkle + cp -v /usr/local/lib/libbrotlicommon.1.dylib strawberry.app/Contents/Frameworks/ + # Sparkle + mkdir -p strawberry.app/Contents/Frameworks/Sparkle.framework/Versions/A + cp -v /usr/local/opt/sparkle/Sparkle.framework/Sparkle strawberry.app/Contents/Frameworks/Sparkle.framework/ + cp -v /usr/local/opt/sparkle/Sparkle.framework/Versions/A/Sparkle strawberry.app/Contents/Frameworks/Sparkle.framework/Versions/A/ + cp -v -R /usr/local/opt/sparkle/Sparkle.framework/Versions/Current strawberry.app/Contents/Frameworks/Sparkle.framework/Versions/ - name: Create DMG working-directory: build shell: bash diff --git a/cmake/Dmg.cmake b/cmake/Dmg.cmake index 3a19996e..b06e0f67 100644 --- a/cmake/Dmg.cmake +++ b/cmake/Dmg.cmake @@ -13,22 +13,14 @@ else() message(WARNING "Missing create-dmg executable.") endif() -# Workaround for Sparkle -add_custom_target(copy_sparkle - COMMAND mkdir -p ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Frameworks/ - COMMAND cp -r /usr/local/opt/sparkle/Sparkle.framework ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Frameworks/ - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - DEPENDS strawberry strawberry-tagreader -) - if(MACDEPLOYQT_EXECUTABLE) add_custom_target(copy_gstreamer_plugins #COMMAND ${CMAKE_SOURCE_DIR}/dist/macos/macgstcopy.sh strawberry.app ) add_custom_target(deploy COMMAND mkdir -p ${CMAKE_BINARY_DIR}/strawberry.app/Contents/{Frameworks,Resources} - COMMAND cp ${CMAKE_SOURCE_DIR}/dist/macos/Info.plist ${CMAKE_BINARY_DIR}/strawberry.app/Contents/ - COMMAND cp ${CMAKE_SOURCE_DIR}/dist/macos/strawberry.icns ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Resources/ + COMMAND cp -v ${CMAKE_SOURCE_DIR}/dist/macos/Info.plist ${CMAKE_BINARY_DIR}/strawberry.app/Contents/ + COMMAND cp -v ${CMAKE_SOURCE_DIR}/dist/macos/strawberry.icns ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Resources/ COMMAND ${MACDEPLOYQT_EXECUTABLE} strawberry.app -verbose=3 -executable=${CMAKE_BINARY_DIR}/strawberry.app/Contents/PlugIns/strawberry-tagreader -executable=${CMAKE_BINARY_DIR}/strawberry.app/Contents/PlugIns/gio-modules/libgiognutls.so