diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index be994bb2..cff53225 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -902,235 +902,6 @@ jobs: run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var build/*.dmg ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{env.upload_path}}/ - build-macos-homebrew: - name: Build macOS Homebrew - if: false - runs-on: macos-11 - steps: - - - name: Remove installed brew packages - run: brew uninstall $(brew list) - - - name: Update packages - run: brew update - - - name: Upgrade packages - run: brew upgrade || true - - - name: brew tap - run: brew tap homebrew/core - - - name: Install packages - run: brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c rsync glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc libffi openssl sqlite fftw libmtp libplist libxml2 libsoup libogg libvorbis flac wavpack opus speex mpg123 lame twolame taglib chromaprint libebur128 libbs2b libcdio libopenmpt faad2 faac fdk-aac musepack game-music-emu qt6 || true - - - name: Use modified gstreamer plugin formulas - run: | - wget https://files.strawberrymusicplayer.org/patches/gstreamer.rb - wget https://files.strawberrymusicplayer.org/patches/gst-plugins-base.rb - wget https://files.strawberrymusicplayer.org/patches/gst-plugins-good.rb - wget https://files.strawberrymusicplayer.org/patches/gst-plugins-bad.rb - wget https://files.strawberrymusicplayer.org/patches/gst-plugins-ugly.rb - wget https://files.strawberrymusicplayer.org/patches/gst-libav.rb - mv gstreamer.rb gst-plugins-{base,good,bad,ugly}.rb gst-libav.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/g/ - - - name: Build and install gstreamer - env: - HOMEBREW_NO_INSTALL_FROM_API: 1 - run: brew reinstall --build-from-source gstreamer - - - name: Build and install gst-plugins-base - env: - HOMEBREW_NO_INSTALL_FROM_API: 1 - run: brew reinstall --build-from-source gst-plugins-base - - - name: Build and install gst-plugins-good - env: - HOMEBREW_NO_INSTALL_FROM_API: 1 - run: brew reinstall --build-from-source gst-plugins-good - - - name: Build and install gst-plugins-bad - env: - HOMEBREW_NO_INSTALL_FROM_API: 1 - run: brew reinstall --build-from-source gst-plugins-bad - - - name: Build and install gst-plugins-ugly - env: - HOMEBREW_NO_INSTALL_FROM_API: 1 - run: brew reinstall --build-from-source gst-plugins-ugly - - - name: Build and install gst-libav - env: - HOMEBREW_NO_INSTALL_FROM_API: 1 - run: brew reinstall --build-from-source gst-libav - - - name: Build libgpod - env: - PERL_MM_USE_DEFAULT: 1 - run: | - 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 - - - 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@v4 - with: - fetch-depth: 0 - - - name: Create Build Environment - run: cmake -E make_directory build - - - name: Configure CMake - env: - MACOSX_DEPLOYMENT_TARGET: 11.0 - PKG_CONFIG_PATH: /usr/local/lib/pkgconfig - run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_WERROR=OFF -DUSE_BUNDLE=ON -DCMAKE_PREFIX_PATH=/usr/local/opt/qt6/lib/cmake -DICU_ROOT=/usr/local/opt/icu4c -DPROTOBUF_INCLUDE_DIRS=/usr/local/include - - - name: Build - run: cmake --build build --config Release --parallel 4 - - - name: Install - working-directory: build - run: make install - - - name: Remove problematic files - run: | - sudo rm -rf /usr/local/opt/qt6/share/qt/plugins/virtualkeyboard /usr/local/opt/qt6/share/qt/plugins/platforminputcontexts - sudo rm -f /usr/local/Cellar/qt/*/share/qt/plugins/imageformats/libqpdf.dylib - - - name: Manually copy files not handled by macdeployqt - working-directory: build - run: | - mkdir -p 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 - env: - GIO_EXTRA_MODULES: /usr/local/lib/gio/modules - GST_PLUGIN_SCANNER: /usr/local/opt/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner - GST_PLUGIN_PATH: /usr/local/lib/gstreamer-1.0 - working-directory: build - run: make deploy - - - name: Deploy check - working-directory: build - run: make deploycheck - - - name: Create DMG - working-directory: build - run: make dmg - - - build-macos-macports: - name: Build macOS Macports - if: false - runs-on: macos-11 - steps: - - name: Install macports - run: | - macports_version=$(wget -q -O- 'https://github.com/macports/macports-base' | sed -n 's,.*releases/tag/\([^"&;]*\)".*,\1,p' | sed 's/^v//g' | sort -V | tail -1) - wget https://github.com/macports/macports-base/releases/download/v${macports_version}/MacPorts-${macports_version}-11-BigSur.pkg - sudo installer -pkg ./MacPorts-${macports_version}-11-BigSur.pkg -target / - - - name: Uninstall homebrew - run: | - curl -sLO https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh - chmod +x ./uninstall.sh - sudo ./uninstall.sh --force - - - name: Update macports - run: sudo /opt/local/bin/port -v selfupdate - - - name: Install packages - run: sudo /opt/local/bin/port -N -p install wget gettext glib2 pkgconfig cmake boost protobuf-cpp sqlite3 chromaprint libebur128 fftw taglib libcdio libmtp - - - name: Install gstreamer - run: sudo /opt/local/bin/port -N -p install gstreamer1 gstreamer1-gst-plugins-base gstreamer1-gst-plugins-good gstreamer1-gst-plugins-bad gstreamer1-gst-plugins-ugly gstreamer1-gst-libav - - - name: Install gst-plugins-bad - run: sudo /opt/local/bin/port -N -p install gstreamer1-gst-plugins-bad +faac - - - name: Install qt6-qtbase - run: sudo /opt/local/bin/port -N -p install qt6-qtbase - - - name: Install qt6-qttools - run: sudo /opt/local/bin/port -N -p install qt6-qttools || true - - - name: Install qt6-sqlite-plugin - run: sudo /opt/local/bin/port -N -p install qt6-sqlite-plugin - - - name: Install libgpod - run: sudo /opt/local/bin/port -N -p install libgpod || true - - - name: Add /opt/local/bin to PATH - run: echo "/opt/local/bin" >> $GITHUB_PATH - - - name: Install create-dmg - shell: bash - run: | - mkdir -p ~/build - cd ~/build - git clone https://github.com/create-dmg/create-dmg - cd create-dmg - sudo make install - - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Create Build Environment - run: /opt/local/bin/cmake -E make_directory build - - - name: Configure CMake - env: - MACOSX_DEPLOYMENT_TARGET: 11.0 - PKG_CONFIG_PATH: /opt/local/lib/pkgconfig - run: /opt/local/libexec/qt6/bin/qt-cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_WERROR=OFF -DUSE_BUNDLE=ON -DENABLE_DBUS=OFF - - - name: Build - run: /opt/local/bin/cmake --build build --config Release --parallel 4 - - - name: Install - working-directory: build - run: make install - - - name: Deploy - env: - GIO_EXTRA_MODULES: /opt/local/lib/gio/modules - GST_PLUGIN_SCANNER: /opt/local/libexec/gstreamer-1.0/gst-plugin-scanner - GST_PLUGIN_PATH: /opt/local/lib/gstreamer-1.0 - working-directory: build - run: make deploy - - - name: Deploy check - working-directory: build - run: make deploycheck - - - name: Create DMG - working-directory: build - run: make dmg - - build-windows-mingw: name: Build Windows MinGW runs-on: ubuntu-latest