name: C/C++ CI on: [push, pull_request] jobs: build_source: name: Create source tarball runs-on: ubuntu-latest container: image: opensuse/leap:15.3 steps: - uses: actions/checkout@v1.2.0 - name: Update packages run: zypper --non-interactive --gpg-auto-import-keys ref - name: Install openSUSE dependencies run: > zypper --non-interactive --gpg-auto-import-keys install lsb-release rpm-build git tar make cmake gcc gcc-c++ gettext-tools glibc-devel libboost_headers-devel boost-devel glib2-devel glib2-tools dbus-1-devel alsa-devel libnotify-devel libgnutls-devel protobuf-devel sqlite3-devel libpulse-devel gstreamer-devel gstreamer-plugins-base-devel vlc-devel taglib-devel libQt5Core-devel libQt5Gui-devel libQt5Gui-private-headers-devel libQt5Widgets-devel libQt5Concurrent-devel libQt5Network-devel libQt5Sql-devel libQt5DBus-devel libQt5Test-devel libqt5-qtbase-common-devel libQt5Sql5-sqlite libqt5-linguist-devel libqt5-qtx11extras-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel desktop-file-utils update-desktop-files appstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh build_opensuse_lp153_qt5: name: Build openSUSE Leap 15.3 Qt 5 runs-on: ubuntu-latest container: image: opensuse/leap:15.3 steps: - uses: actions/checkout@v1.2.0 - name: Add tagparser repo run: zypper -n ar -c -f -n 'repo-tagparser' https://download.opensuse.org/repositories/home:/mkittler/openSUSE_Leap_15.3/ repo-tagparser - name: Update packages run: zypper --non-interactive --gpg-auto-import-keys ref - name: Install openSUSE dependencies run: > zypper --non-interactive --gpg-auto-import-keys install lsb-release rpm-build git tar make cmake gcc gcc-c++ gettext-tools glibc-devel libboost_headers-devel boost-devel glib2-devel glib2-tools dbus-1-devel alsa-devel libnotify-devel libgnutls-devel protobuf-devel sqlite3-devel libpulse-devel gstreamer-devel gstreamer-plugins-base-devel vlc-devel taglib-devel tagparser-devel libQt5Core-devel libQt5Gui-devel libQt5Gui-private-headers-devel libQt5Widgets-devel libQt5Concurrent-devel libQt5Network-devel libQt5Sql-devel libQt5DBus-devel libQt5Test-devel libqt5-qtbase-common-devel libQt5Sql5-sqlite libqt5-linguist-devel libqt5-qtx11extras-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel desktop-file-utils update-desktop-files appstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON -DBUILD_WITH_QT5=ON -DUSE_TAGLIB=ON -DUSE_TAGPARSER=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz /usr/src/packages/SOURCES/ - name: Build RPM working-directory: build run: rpmbuild -ba ../dist/unix/strawberry.spec build_opensuse_lp153_qt6: name: Build openSUSE Leap 15.3 Qt 6 runs-on: ubuntu-latest container: image: opensuse/leap:15.3 steps: - uses: actions/checkout@v1.2.0 - name: Add tagparser repo run: zypper -n ar -c -f -n 'repo-tagparser' https://download.opensuse.org/repositories/home:/mkittler/openSUSE_Leap_15.3/ repo-tagparser - name: Add Qt 6 repo run: zypper -n ar -c -f -n 'repo-qt6' https://download.opensuse.org/repositories/home:/jonaski:/qt6/openSUSE_Leap_15.3/ repo-qt6 - name: Update packages run: zypper --non-interactive --gpg-auto-import-keys ref - name: Install openSUSE dependencies run: > zypper --non-interactive --gpg-auto-import-keys install lsb-release rpm-build git tar make cmake gcc10 gcc10-c++ gettext-tools glibc-devel libboost_headers-devel boost-devel glib2-devel glib2-tools dbus-1-devel alsa-devel libnotify-devel libgnutls-devel protobuf-devel sqlite3-devel libpulse-devel gstreamer-devel gstreamer-plugins-base-devel vlc-devel taglib-devel tagparser-devel qt6-core-devel qt6-gui-devel qt6-gui-private-devel qt6-widgets-devel qt6-concurrent-devel qt6-network-devel qt6-sql-devel qt6-dbus-devel qt6-test-devel qt6-base-common-devel qt6-sql-sqlite qt6-linguist-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel desktop-file-utils update-desktop-files appstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON -DBUILD_WITH_QT6=ON -DUSE_TAGLIB=ON -DUSE_TAGPARSER=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz /usr/src/packages/SOURCES/ - name: Build RPM working-directory: build env: CC: gcc-10 CXX: g++-10 run: rpmbuild -ba ../dist/unix/strawberry.spec build_opensuse_tumbleweed_qt5: name: Build openSUSE Tumbleweed Qt 5 runs-on: ubuntu-latest container: image: opensuse/tumbleweed steps: - uses: actions/checkout@v1.2.0 - name: Add tagparser repo run: zypper -n ar -c -f -n 'repo-tagparser' https://download.opensuse.org/repositories/home:/mkittler/openSUSE_Tumbleweed/ repo-tagparser - name: Update packages run: zypper --non-interactive --gpg-auto-import-keys ref - name: Upgrade packages run: zypper --non-interactive --gpg-auto-import-keys dup - name: Install openSUSE dependencies run: > zypper --non-interactive --gpg-auto-import-keys install lsb-release rpm-build git tar make cmake gcc gcc-c++ gettext-tools glibc-devel libboost_headers-devel boost-devel glib2-devel glib2-tools dbus-1-devel alsa-devel libnotify-devel libgnutls-devel protobuf-devel sqlite3-devel libpulse-devel gstreamer-devel gstreamer-plugins-base-devel vlc-devel taglib-devel tagparser-devel libQt5Core-devel libQt5Gui-devel libQt5Gui-private-headers-devel libQt5Widgets-devel libQt5Concurrent-devel libQt5Network-devel libQt5Sql-devel libQt5DBus-devel libQt5Test-devel libqt5-qtbase-common-devel libQt5Sql5-sqlite libqt5-linguist-devel libqt5-qtx11extras-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel desktop-file-utils update-desktop-files appstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON -DBUILD_WITH_QT5=ON -DUSE_TAGLIB=ON -DUSE_TAGPARSER=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz /usr/src/packages/SOURCES/ - name: Build RPM working-directory: build run: rpmbuild -ba ../dist/unix/strawberry.spec build_opensuse_tumbleweed_qt6: name: Build openSUSE Tumbleweed Qt 6 runs-on: ubuntu-latest container: image: opensuse/tumbleweed steps: - uses: actions/checkout@v1.2.0 - name: Add tagparser repo run: zypper -n ar -c -f -n 'repo-tagparser' https://download.opensuse.org/repositories/home:/mkittler/openSUSE_Tumbleweed/ repo-tagparser - name: Update packages run: zypper --non-interactive --gpg-auto-import-keys ref - name: Upgrade packages run: zypper --non-interactive --gpg-auto-import-keys dup - name: Install openSUSE dependencies run: > zypper --non-interactive --gpg-auto-import-keys install lsb-release rpm-build git tar make cmake gcc gcc-c++ gettext-tools glibc-devel libboost_headers-devel boost-devel glib2-devel glib2-tools dbus-1-devel alsa-devel libnotify-devel libgnutls-devel protobuf-devel sqlite3-devel libpulse-devel gstreamer-devel gstreamer-plugins-base-devel vlc-devel taglib-devel tagparser-devel qt6-core-devel qt6-gui-devel qt6-gui-private-devel qt6-widgets-devel qt6-concurrent-devel qt6-network-devel qt6-sql-devel qt6-dbus-devel qt6-test-devel qt6-base-common-devel qt6-sql-sqlite qt6-linguist-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel desktop-file-utils update-desktop-files appstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON -DBUILD_WITH_QT6=ON -DUSE_TAGLIB=ON -DUSE_TAGPARSER=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz /usr/src/packages/SOURCES/ - name: Build RPM working-directory: build run: rpmbuild -ba ../dist/unix/strawberry.spec build_fedora_34: name: Build Fedora 34 runs-on: ubuntu-latest container: image: fedora:34 env: RPM_BUILD_NCPUS: "2" steps: - uses: actions/checkout@v1.2.0 - name: Update packages run: yum update --assumeyes - name: Upgrade packages run: yum upgrade --assumeyes - name: Install Fedora dependencies run: > dnf install --assumeyes @development-tools redhat-lsb-core git glibc gcc-c++ rpmdevtools make cmake pkgconfig glib man tar gettext openssh boost-devel dbus-devel protobuf-devel protobuf-compiler sqlite-devel alsa-lib-devel pulseaudio-libs-devel libnotify-devel gnutls-devel qt6-qtbase-devel qt6-qtbase-private-devel qt6-qttools-devel gstreamer1-devel gstreamer1-plugins-base-devel taglib-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel fftw-devel desktop-file-utils libappstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories working-directory: build run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz ~/rpmbuild/SOURCES/ - name: Build RPM working-directory: build run: rpmbuild -ba ../dist/unix/strawberry.spec build_fedora_35: name: Build Fedora 35 runs-on: ubuntu-latest container: image: fedora:35 env: RPM_BUILD_NCPUS: "2" steps: - uses: actions/checkout@v1.2.0 - name: Update packages run: yum update --assumeyes - name: Upgrade packages run: yum upgrade --assumeyes - name: Install Fedora dependencies run: > dnf install --assumeyes @development-tools redhat-lsb-core git glibc gcc-c++ rpmdevtools make cmake pkgconfig glib man tar gettext openssh boost-devel dbus-devel protobuf-devel protobuf-compiler sqlite-devel alsa-lib-devel pulseaudio-libs-devel libnotify-devel gnutls-devel qt6-qtbase-devel qt6-qtbase-private-devel qt6-qttools-devel gstreamer1-devel gstreamer1-plugins-base-devel taglib-devel libcdio-devel libgpod-devel libmtp-devel libchromaprint-devel fftw-devel desktop-file-utils libappstream-glib hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_WERROR=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories working-directory: build run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz ~/rpmbuild/SOURCES/ - name: Build RPM working-directory: build run: rpmbuild -ba ../dist/unix/strawberry.spec build_openmandriva_cooker: name: Build OpenMandriva Lx 4.2 runs-on: ubuntu-latest container: image: openmandriva/4.2 env: RPM_BUILD_NCPUS: "2" steps: - uses: actions/checkout@v1.2.0 - name: Update packages run: dnf update --assumeyes - name: Upgrade packages run: dnf upgrade --assumeyes - name: Install OpenMandriva dependencies run: > dnf install --assumeyes glibc gcc-c++ git gnutar make cmake glib gettext lsb-release rpmdevtools rpm-build glibc-devel boost-devel dbus-devel protobuf-devel protobuf-compiler sqlite-devel libasound-devel pulseaudio-devel gnutls-devel lib64GL-devel libgst-plugins-base1.0-devel taglib-devel chromaprint-devel fftw-devel libcdio-devel libgpod-devel libmtp-devel lib64Qt6Core-devel lib64Qt6Concurrent-devel lib64Qt6Network-devel lib64Qt6Sql-devel lib64Qt6DBus-devel lib64Qt6Gui-devel lib64Qt6Widgets-devel lib64Qt6Test-devel qt6-cmake qt6-qtbase-tools qt6-qttools desktop-file-utils appstream appstream-util hicolor-icon-theme - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_WERROR=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh - name: Create RPM build sources directories working-directory: build run: mkdir -p ~/rpmbuild/SOURCES /usr/src/packages/SOURCES - name: Copy source tarball working-directory: build run: cp strawberry-*.tar.xz ~/rpmbuild/SOURCES/ - name: Build RPM working-directory: build run: rpmbuild -ba ../dist/unix/strawberry.spec build_debian_buster: name: Build Debian Buster runs-on: ubuntu-latest container: image: debian:buster steps: - uses: actions/checkout@v1.2.0 - name: Install Debian dependencies run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake gcc pkg-config fakeroot gettext lsb-release libglib2.0-dev dpkg-dev libdbus-1-dev libboost-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_debian_bullseye: name: Build Debian Bullseye runs-on: ubuntu-latest container: image: debian:bullseye steps: - uses: actions/checkout@v1.2.0 - name: Install Debian dependencies run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake gcc pkg-config fakeroot gettext lsb-release libglib2.0-dev dpkg-dev libdbus-1-dev libboost-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_debian_bookworm: name: Build Debian Bookworm runs-on: ubuntu-latest container: image: debian:bookworm steps: - uses: actions/checkout@v1.2.0 - name: Install Debian dependencies run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake gcc pkg-config fakeroot gettext lsb-release libglib2.0-dev dpkg-dev libdbus-1-dev libboost-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_ubuntu_bionic: name: Build Ubuntu Bionic runs-on: ubuntu-latest container: image: ubuntu:bionic steps: - uses: actions/checkout@v1.2.0 - name: Install Ubuntu dependencies env: DEBIAN_FRONTEND: noninteractive run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake pkg-config gcc fakeroot wget curl gettext lsb-release dpkg-dev libglib2.0-dev libboost-dev libdbus-1-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_ubuntu_focal: name: Build Ubuntu Focal runs-on: ubuntu-latest container: image: ubuntu:focal steps: - uses: actions/checkout@v1.2.0 - name: Install Ubuntu dependencies env: DEBIAN_FRONTEND: noninteractive run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake pkg-config gcc fakeroot wget curl gettext lsb-release dpkg-dev libglib2.0-dev libboost-dev libdbus-1-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_ubuntu_impish: name: Build Ubuntu Impish runs-on: ubuntu-latest container: image: ubuntu:impish steps: - uses: actions/checkout@v1.2.0 - name: Install Ubuntu dependencies env: DEBIAN_FRONTEND: noninteractive run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake pkg-config gcc fakeroot wget curl gettext lsb-release dpkg-dev libglib2.0-dev libboost-dev libdbus-1-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_ubuntu_jammy: name: Build Ubuntu Jammy runs-on: ubuntu-latest container: image: ubuntu:jammy steps: - uses: actions/checkout@v1.2.0 - name: Install Ubuntu dependencies env: DEBIAN_FRONTEND: noninteractive run: > apt-get update && apt-get install -y build-essential dh-make ssh git make cmake pkg-config gcc fakeroot wget curl gettext lsb-release dpkg-dev libglib2.0-dev libboost-dev libdbus-1-dev libprotobuf-dev protobuf-compiler libsqlite3-dev libgnutls28-dev libasound2-dev libpulse-dev libtag1-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qttools5-dev libqt5x11extras5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev gstreamer1.0-alsa gstreamer1.0-pulseaudio libchromaprint-dev libfftw3-dev libcdio-dev libmtp-dev libgpod-dev - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: build run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build-macos-qt5: name: Build macOS Qt 5 runs-on: macos-10.15 steps: - uses: actions/checkout@v1.2.0 - name: Install packages run: > brew install wget glib pkgconfig boost libffi protobuf protobuf-c qt5 gettext gnutls fftw sqlite chromaprint gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav libcdio libmtp create-dmg taglib libplist gdk-pixbuf - name: Build libgpod shell: bash 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: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash env: MACOSX_DEPLOYMENT_TARGET: 10.15 PKG_CONFIG_PATH: /usr/local/lib/pkgconfig 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: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_WITH_QT5=ON -DBUILD_WERROR=ON -DUSE_BUNDLE=ON -DCMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake - name: Build working-directory: build shell: bash run: cmake --build . --config Debug --parallel 4 - name: Install 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 - name: Deploy working-directory: build shell: bash run: make deploy - name: Deploy check working-directory: build shell: bash run: make deploycheck - name: Create DMG working-directory: build shell: bash run: make dmg build-macos-qt6: name: Build macOS Qt 6 runs-on: macos-10.15 steps: - uses: actions/checkout@v1.2.0 - name: Install packages run: > brew install wget glib pkgconfig boost libffi protobuf protobuf-c qt6 gettext gnutls fftw sqlite chromaprint gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav libcdio libmtp create-dmg taglib libplist gdk-pixbuf - name: Build libgpod shell: bash 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: Remove problematic files shell: bash run: sudo rm -rf /usr/local/opt/qt6/share/qt/plugins/virtualkeyboard /usr/local/opt/qt6/share/qt/plugins/platforminputcontexts - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash env: MACOSX_DEPLOYMENT_TARGET: 10.15 PKG_CONFIG_PATH: /usr/local/lib/pkgconfig 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: cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_WERROR=ON -DUSE_BUNDLE=ON -DCMAKE_PREFIX_PATH=/usr/local/opt/qt6/lib/cmake - name: Build working-directory: build shell: bash run: cmake --build . --config Release --parallel 4 - name: Install 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/ - name: Deploy working-directory: build shell: bash run: make deploy - name: Deploy check working-directory: build shell: bash run: make deploycheck - name: Create DMG working-directory: build shell: bash run: make dmg - uses: actions/upload-artifact@v2 with: name: upload-macos path: build/strawberry-*.dmg build-windows-mingw: name: Build Windows MinGW runs-on: ubuntu-latest container: image: jonaski/strawberry-mxe-x86_64 steps: - uses: actions/checkout@v1.2.0 - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Link MXE directory shell: bash run: ln -s /usr/src/strawberry-mxe ~/mxe-shared - name: Run CMake shell: bash env: PKG_CONFIG_PATH: /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/lib/pkgconfig working-directory: build run: > cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-x86_64-w64-mingw32-shared.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt6 -DBUILD_WITH_QT6=ON -DBUILD_WERROR=OFF -DARCH=x86_64 -DENABLE_WIN32_CONSOLE=OFF -DENABLE_DBUS=OFF -DENABLE_LIBGPOD=OFF -DENABLE_LIBMTP=OFF -DProtobuf_PROTOC_EXECUTABLE=/usr/src/strawberry-mxe/usr/x86_64-pc-linux-gnu/bin/protoc - name: Run Make working-directory: build run: cmake --build . --config Release --parallel $(nproc) - name: Create directories working-directory: build run: mkdir -p gio-modules platforms sqldrivers tls imageformats styles gstreamer-plugins nsisplugins - name: Copy GIO modules working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/lib/gio/modules/libgiognutls.dll ${GITHUB_WORKSPACE}/build/gio-modules/ - name: Copy Qt platform plugins working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt6/plugins/platforms/qwindows.dll ${GITHUB_WORKSPACE}/build/platforms/ - name: Copy Qt styles working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt6/plugins/styles/qwindowsvistastyle.dll ${GITHUB_WORKSPACE}/build/styles/ - name: Copy Qt TLS plugins working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt6/plugins/tls/qopensslbackend.dll ${GITHUB_WORKSPACE}/build/tls/ - name: Copy Qt SQL drivers working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt6/plugins/sqldrivers/qsqlite.dll ${GITHUB_WORKSPACE}/build/sqldrivers/ - name: Copy Qt imageformats working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt6/plugins/imageformats/{qgif.dll,qico.dll,qjpeg.dll} ${GITHUB_WORKSPACE}/build/imageformats/ - name: Copy gstreamer plugins working-directory: build run: > cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstapp.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstcoreelements.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudioconvert.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudiofx.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudiomixer.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudioparsers.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudiorate.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudioresample.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaudiotestsrc.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstautodetect.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstplayback.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstvolume.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstspectrum.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstequalizer.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstreplaygain.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgsttypefindfunctions.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstgio.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstdirectsound.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstwasapi.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstpbtypes.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstapetag.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgsticydemux.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstid3demux.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgsttaglib.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgsttcp.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstudp.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstsoup.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstcdio.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstrtp.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstrtsp.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstflac.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstwavparse.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstwavpack.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstogg.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstvorbis.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstopus.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstopusparse.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstspeex.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstlame.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstaiff.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstfaac.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstfaad.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstisomp4.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstasf.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstasfmux.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstlibav.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstopenmpt.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstdash.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstxingmux.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstmpg123.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstbs2b.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstremovesilence.dll /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/gstreamer-1.0/libgstfdkaac.dll ${GITHUB_WORKSPACE}/build/gstreamer-plugins/ - name: Copy extra binaries working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/bin/{sqlite3.exe,gst-launch-1.0.exe,gst-discoverer-1.0.exe,libsoup-3.0-0.dll} . - name: Copy dependencies working-directory: build run: > /usr/src/strawberry-mxe/tools/copydlldeps.sh -c -d . -F . -F ./platforms -F ./styles -F ./imageformats -F ./tls -F ./sqldrivers -F ./gstreamer-plugins -R /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared - name: Strip binaries working-directory: build run: find . -type f \( -iname \*.dll -o -iname \*.exe \) -exec /usr/src/strawberry-mxe/usr/bin/x86_64-w64-mingw32.shared-strip {} \; - name: Copy nsis files working-directory: build run: cp ${GITHUB_WORKSPACE}/dist/windows/*.nsi ${GITHUB_WORKSPACE}/dist/windows/*.nsh ${GITHUB_WORKSPACE}/dist/windows/*.ico . - name: Copy COPYING license file working-directory: build run: cp ${GITHUB_WORKSPACE}/COPYING . - name: Build Windows installer working-directory: build run: makensis strawberry.nsi build-windows-msvc: name: Build Windows MSVC runs-on: windows-2019 steps: - uses: ilammy/msvc-dev-cmd@v1 with: arch: x86_64 toolset: 14.29 - uses: actions/checkout@v1.2.0 - name: Download Boost uses: suisei-cn/actions-download-file@v1 with: url: "Boost [this](https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.zip)!" target: downloads/ auto-match: true - name: Download Qt Base uses: suisei-cn/actions-download-file@v1 with: url: "Qt Base [this](https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt6_623/qt.qt6.623.win64_msvc2019_64/6.2.3-0-202201260729qtbase-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z)!" target: downloads/ auto-match: true - name: Download Qt Tools uses: suisei-cn/actions-download-file@v1 with: url: "Qt Tools [this](https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt6_623/qt.qt6.623.win64_msvc2019_64/6.2.3-0-202201260729qttools-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z)!" target: downloads/ auto-match: true - name: Download Qt OpenSSL uses: suisei-cn/actions-download-file@v1 with: url: "Qt OpenSSL [this](https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_openssl_x64/qt.tools.openssl.win_x64/1.1.1-10openssl_1.1.1j_prebuild_x64.7z)!" target: downloads/ auto-match: true - name: Download SQLite uses: suisei-cn/actions-download-file@v1 with: url: "SQLite [this](https://sqlite.org/2022/sqlite-autoconf-3370200.tar.gz)!" target: downloads/ auto-match: true - name: Download glib-networking uses: suisei-cn/actions-download-file@v1 with: url: "glib-networking [this](https://download.gnome.org/sources/glib-networking/2.62/glib-networking-2.62.4.tar.xz)!" target: downloads/ auto-match: true - name: Download GStreamer uses: suisei-cn/actions-download-file@v1 with: url: "GStreamer [this](https://gstreamer.freedesktop.org/data/pkg/windows/1.20.0/msvc/gstreamer-1.0-msvc-x86_64-1.20.0.msi)!" target: downloads/ auto-match: true - name: Download GStreamer Devel uses: suisei-cn/actions-download-file@v1 with: url: "GStreamer Devel [this](https://gstreamer.freedesktop.org/data/pkg/windows/1.20.0/msvc/gstreamer-1.0-devel-msvc-x86_64-1.20.0.msi)!" target: downloads/ auto-match: true - name: Download GnuTLS uses: suisei-cn/actions-download-file@v1 with: url: "GnutTLS [this](https://github.com/ShiftMediaProject/gnutls/releases/download/3.7.2/libgnutls_3.7.2_msvc14.zip)!" target: downloads/ auto-match: true - name: Download GnuTLS PC File uses: suisei-cn/actions-download-file@v1 with: url: "GnutTLS PC File [this](https://files.strawberrymusicplayer.org/gnutls.pc)!" target: downloads/ auto-match: true - name: Download TagLib uses: suisei-cn/actions-download-file@v1 with: url: "TagLib [this](https://taglib.org/releases/taglib-1.12.tar.gz)!" target: downloads/ auto-match: true - name: Download FFTW uses: suisei-cn/actions-download-file@v1 with: url: "FFTW [this](https://fftw.org/pub/fftw/fftw-3.3.5-dll64.zip)!" target: downloads/ auto-match: true - name: Download Chromaprint uses: suisei-cn/actions-download-file@v1 with: url: "Chromaprint [this](https://github.com/acoustid/chromaprint/releases/download/v1.5.1/chromaprint-1.5.1.tar.gz)!" target: downloads/ auto-match: true - name: Download Protobuf uses: suisei-cn/actions-download-file@v1 with: url: "Protobuf [this](https://files.strawberrymusicplayer.org/protobuf-3.19.4-msvc.zip)!" # url: "Protobuf [this](https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protobuf-cpp-3.19.4.zip)!" target: downloads/ auto-match: true - name: Create sources directory run: mkdir sources - name: Download qtsparkle shell: bash working-directory: sources run: git clone https://github.com/davidsansome/qtsparkle qtsparkle-git - name: Download qtsparkle pc file shell: bash working-directory: sources/qtsparkle-git run: curl -O -L https://files.strawberrymusicplayer.org/qtsparkle-qt6.pc - name: Download LockedList plugin for NSIS uses: suisei-cn/actions-download-file@v1 with: url: "LockedList [this](https://nsis.sourceforge.io/mediawiki/images/d/d3/LockedList.zip)!" target: downloads/ auto-match: true - name: Extract NSIS LockedList plugin run: 7z x -o"${{github.workspace}}/NSIS_Plugins" "${{github.workspace}}/downloads/LockedList.zip" - name: Copy NSIS LockedList plugin run: | copy "${{github.workspace}}/NSIS_Plugins/Plugins/LockedList64.dll" "C:/Program Files (x86)/NSIS/Plugins/" copy "${{github.workspace}}/NSIS_Plugins/Plugins/x86-unicode/LockedList.dll" "C:/Program Files (x86)/NSIS/Plugins/x86-unicode/" - name: Grant Full Access to c:\windows\temp directory run: icacls "C:\Windows\Temp" /q /c /t /grant Users:F /T - name: Install GStreamer working-directory: downloads run: msiexec /a gstreamer-1.0-msvc-x86_64-1.20.0.msi /passive /qn - name: Wait for GStreamer installation to complete run: Start-Sleep -s 20 shell: powershell - name: Install GStreamer Devel working-directory: downloads run: msiexec /a gstreamer-1.0-devel-msvc-x86_64-1.20.0.msi /passive /qn - name: Wait for GStreamer Devel installation to complete run: Start-Sleep -s 30 shell: powershell - name: Extract Boost working-directory: sources run: 7z x ..\downloads\boost_1_78_0.zip - name: Copy Boost shell: bash working-directory: sources run: cp -r boost_1_78_0/boost /c/gstreamer/1.0/msvc_x86_64/include/ - name: Extract Qt working-directory: C:\ shell: bash run: | mkdir qt cd qt 7z x "${{github.workspace}}/downloads/6.2.3-0-202201260729qtbase-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z" 7z x "${{github.workspace}}/downloads/6.2.3-0-202201260729qttools-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z" 7z x "${{github.workspace}}/downloads/1.1.1-10openssl_1.1.1j_prebuild_x64.7z" - name: Extract GnuTLS run: | mkdir gnutls cd gnutls 7z x "${{github.workspace}}/downloads/libgnutls_3.7.2_msvc14.zip" xcopy /s /y bin\x64\*.* c:\gstreamer\1.0\msvc_x86_64\bin\ xcopy /s /y lib\x64\*.* c:\gstreamer\1.0\msvc_x86_64\lib\ xcopy /s /y include\* c:\gstreamer\1.0\msvc_x86_64\include\ xcopy /s /y include\* c:\gstreamer\1.0\msvc_x86_64\include\ copy "${{github.workspace}}/downloads/gnutls.pc" c:\gstreamer\1.0\msvc_x86_64\lib\pkgconfig\ - name: Extract TagLib working-directory: sources shell: bash run: tar -xvf ../downloads/taglib-1.12.tar.gz - name: Extract Chromaprint working-directory: sources shell: bash run: tar -xvf ../downloads/chromaprint-1.5.1.tar.gz - name: Extract glib-networking working-directory: sources shell: bash run: tar -xvf ../downloads/glib-networking-2.62.4.tar.xz - name: Extract FFTW run: | mkdir fftw cd fftw 7z x "${{github.workspace}}/downloads/fftw-3.3.5-dll64.zip" lib /def:libfftw3-3.def lib /def:libfftw3f-3.def lib /def:libfftw3l-3.def xcopy /s /y *.dll c:\gstreamer\1.0\msvc_x86_64\bin\ xcopy /s /y *.lib c:\gstreamer\1.0\msvc_x86_64\lib\ xcopy /s /y *.h c:\gstreamer\1.0\msvc_x86_64\include\ #- name: Compile Protobuf # env: # CL: "/MP" # working-directory: sources/protobuf-3.19.4 # run: | # cd cmake # mkdir build # cd build # cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="${{github.workspace}}/protobuf" -Dprotobuf_BUILD_TESTS=OFF # nmake # cmake --install . # copy ..\cmake\build\protobuf.pc c:\gstreamer\1.0\msvc_x86_64\lib\pkgconfig\ - name: Extract Protobuf run: | 7z x downloads\protobuf-3.19.4-msvc.zip xcopy /s /y protobuf-3.19.4-msvc\bin\*.dll c:\gstreamer\1.0\msvc_x86_64\bin\ xcopy /s /y protobuf-3.19.4-msvc\bin\*.exe c:\gstreamer\1.0\msvc_x86_64\bin\ xcopy /s /y protobuf-3.19.4-msvc\lib\*.lib c:\gstreamer\1.0\msvc_x86_64\lib\ xcopy /s /y protobuf-3.19.4-msvc\lib\pkgconfig\*.pc c:\gstreamer\1.0\msvc_x86_64\lib\pkgconfig\ xcopy /s /y protobuf-3.19.4-msvc\include\*.* c:\gstreamer\1.0\msvc_x86_64\include\ - name: Extract SQLite working-directory: sources shell: bash run: tar -xvf ../downloads/sqlite-autoconf-3370200.tar.gz - name: Compile SQlite env: CL: "/MP" working-directory: sources/sqlite-autoconf-3370200 run: cl shell.c sqlite3.c -Fe:sqlite3.exe #cl -DSQLITE_API="__declspec(dllexport)" sqlite3.c -link -dll -out:sqlite3.dll # - name: Copy SQLite # working-directory: sources/sqlite-autoconf-3370200 # run: | # copy *.h c:\gstreamer\1.0\msvc_x86_64\include\ # copy *.lib c:\gstreamer\1.0\msvc_x86_64\lib\ # copy *.dll c:\gstreamer\1.0\msvc_x86_64\bin\ # copy *.def c:\gstreamer\1.0\msvc_x86_64\lib\ # copy *.def c:\gstreamer\1.0\msvc_x86_64\bin\ - name: Compile TagLib env: CL: "/MP" working-directory: sources/taglib-1.12 run: | mkdir build cd build cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="c:\gstreamer\1.0\msvc_x86_64" -DBUILD_SHARED_LIBS=ON nmake cmake --install . - name: Compile Chromaprint env: CL: "/MP" working-directory: sources/chromaprint-1.5.1 run: | mkdir build cd build cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DFFMPEG_ROOT=C:\gstreamer\1.0\msvc_x86_64 -DCMAKE_INSTALL_PREFIX=C:\gstreamer\1.0\msvc_x86_64 nmake cmake --install . - name: Update PATH run: echo "c:\gstreamer\1.0\msvc_x86_64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Compile glib-networking env: CL: "/MP" working-directory: sources/glib-networking-2.62.4 run: | echo "c:\gstreamer\1.0\msvc_x86_64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append pip3 install meson meson -Dgnutls=enabled -Dpkg_config_path=c:\gstreamer\1.0\msvc_x86_64\lib\pkgconfig build cd build ninja - name: Compile qtsparkle env: CL: "/MP" working-directory: sources/qtsparkle-git run: | copy qtsparkle-qt6.pc c:\gstreamer\1.0\msvc_x86_64\lib\pkgconfig\ mkdir build cd build cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_PATH=c:\qt\6.2.3\msvc2019_64\lib\cmake -DCMAKE_INSTALL_PREFIX="${{github.workspace}}/qtsparkle" nmake cmake --install . cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_PREFIX_PATH=c:\qt\6.2.3\msvc2019_64\lib\cmake -DCMAKE_INSTALL_PREFIX="${{github.workspace}}/qtsparkle" nmake cmake --install . - name: Remove find_package(Boost) shell: bash run: sed -i 's/find_package(Boost.*//g' CMakeLists.txt - name: Create Build Environment run: cmake -E make_directory build - name: Run CMake working-directory: build run: > cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=c:\qt\6.2.3\msvc2019_64\lib\cmake -DBUILD_WITH_QT6=ON -DBUILD_WERROR=OFF -DARCH=x86_64 -DENABLE_WIN32_CONSOLE=OFF -DENABLE_DBUS=OFF -DENABLE_LIBGPOD=OFF -DENABLE_LIBMTP=OFF -DUSE_TAGLIB=ON -DPKG_CONFIG_EXECUTABLE=C:/gstreamer/1.0/msvc_x86_64/bin/pkg-config.exe -DGNUTLS_LIBRARY=c:/gstreamer/1.0/msvc_x86_64/lib/gnutls.lib -DGNUTLS_INCLUDE_DIR=c:/gstreamer/1.0/msvc_x86_64/include -DGNUTLS_INCLUDE_DIRS=c:/gstreamer/1.0/msvc_x86_64/include -DBoost_INCLUDE_DIR=c:/gstreamer/1.0/msvc_x86_64/include -DBoost_INCLUDE_DIRS=c:/gstreamer/1.0/msvc_x86_64/include -DProtobuf_LIBRARY=c:/gstreamer/1.0/msvc_x86_64/lib/libprotobuf.lib -DProtobuf_INCLUDE_DIR=c:/gstreamer/1.0/msvc_x86_64/include -DProtobuf_INCLUDE_DIRS=c:/gstreamer/1.0/msvc_x86_64/include -DPROTOBUF_PROTOC_EXECUTABLE=c:/gstreamer/1.0/msvc_x86_64/bin/protoc.exe -DSQLITE_INCLUDE_DIRS=c:/gstreamer/1.0/msvc_x86_64/include -DSQLITE_LIBRARY_DIRS=c:/gstreamer/1.0/msvc_x86_64/lib -DFFTW3_DIR=c:\gstreamer\1.0\msvc_x86_64 -DQTSPARKLE_INCLUDE_DIRS="${{github.workspace}}/qtsparkle/include" - name: Copy qtsparkle header working-directory: build run: xcopy /s /y "${{github.workspace}}\qtsparkle\include" - name: Run Make env: CL: "/MP" working-directory: build run: cmake --build . --config Release --parallel $(nproc) - name: list files working-directory: build run: dir - name: Copy executables working-directory: build run: copy release\*.exe . - name: Copy extra binaries working-directory: build run: | copy c:\qt\tools\openssl\win_x64\bin\libssl-1_1-x64.dll copy c:\qt\tools\openssl\win_x64\bin\libcrypto-1_1-x64.dll copy "${{github.workspace}}/sources/sqlite-autoconf-3370200/sqlite3.exe" copy c:\gstreamer\1.0\msvc_x86_64\bin\soup-2.4-1.dll copy c:\gstreamer\1.0\msvc_x86_64\bin\gst-launch-1.0.exe copy c:\gstreamer\1.0\msvc_x86_64\bin\gst-discoverer-1.0.exe - name: Create directories working-directory: build run: | mkdir gio-modules mkdir platforms mkdir styles mkdir tls mkdir sqldrivers mkdir imageformats mkdir gstreamer-plugins mkdir nsisplugins - name: Copy GIO modules working-directory: build run: copy "${{github.workspace}}/sources/glib-networking-2.62.4/build/tls/gnutls/giognutls.dll" ./gio-modules/ - name: Copy Qt platform plugins working-directory: build run: copy C:\Qt\6.2.3\msvc2019_64\plugins\platforms\qwindows.dll .\platforms\ - name: Copy Qt styles working-directory: build run: copy C:\Qt\6.2.3\msvc2019_64\plugins\styles\qwindowsvistastyle.dll .\styles\ - name: Copy Qt TLS plugins working-directory: build run: copy C:\Qt\6.2.3\msvc2019_64\plugins\tls\*.dll .\tls\ - name: Copy Qt SQL drivers working-directory: build run: copy C:\Qt\6.2.3\msvc2019_64\plugins\sqldrivers\qsqlite.dll .\sqldrivers\ - name: Copy Qt imageformats plugins working-directory: build run: copy C:\Qt\6.2.3\msvc2019_64\plugins\imageformats\*.dll .\imageformats\ - name: Copy gstreamer plugins working-directory: build run: | copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstapp.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstcoreelements.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudioconvert.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudiofx.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudiomixer.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudioparsers.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudiorate.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudioresample.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaudiotestsrc.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstautodetect.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstplayback.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstvolume.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstspectrum.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstequalizer.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstreplaygain.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gsttypefindfunctions.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstgio.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstdirectsound.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstwasapi.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstwasapi2.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstapetag.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gsticydemux.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstid3demux.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gsttcp.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstudp.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstsoup.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstrtp.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstrtsp.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstflac.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstwavparse.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstwavpack.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstogg.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstvorbis.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstopus.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstopusparse.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstspeex.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstlame.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstaiff.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstisomp4.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstasf.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstasfmux.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstlibav.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstdash.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstxingmux.dll .\gstreamer-plugins\ copy C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstmpg123.dll .\gstreamer-plugins\ - name: Download copydlldeps.sh shell: bash working-directory: build run: curl -O -L https://raw.githubusercontent.com/strawberrymusicplayer/strawberry-mxe/master/tools/copydlldeps.sh - name: Copy dependencies shell: bash working-directory: build run: > ./copydlldeps.sh -c -d . -F . -F ./platforms -F ./styles -F ./tls -F ./sqldrivers -F ./imageformats -F ./gio-modules -F ./gstreamer-plugins -R /c/qt/6.2.3/msvc2019_64/bin -R /c/gstreamer/1.0/msvc_x86_64 -R "${{github.workspace}}/qtsparkle/bin" - name: Strip binaries shell: bash working-directory: build run: find . -type f \( -iname \*.dll -o -iname \*.exe \) -exec strip {} \; - name: Copy nsis files working-directory: build run: | copy ..\dist\windows\*.nsi . copy ..\dist\windows\*.nsh . copy ..\dist\windows\*.ico . - name: Copy COPYING license file working-directory: build run: copy ..\COPYING . - name: list files working-directory: build run: dir - name: Create nsis installer working-directory: build run: makensis strawberry.nsi - uses: actions/upload-artifact@v2 with: name: upload-windows path: build/StrawberrySetup*.exe upload-macos: name: Upload macOS DMG runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' needs: - build-macos-qt6 steps: - uses: actions/checkout@v1.2.0 - uses: actions/download-artifact@v2 with: path: uploads - name: Install SSH keys uses: shimataro/ssh-key-action@v2 with: known_hosts: ${{ secrets.KNOWN_HOSTS2 }} key: ${{ secrets.SSH_KEY }} - name: rsync run: | set -x for i in $(find uploads -type f -name 'strawberry-*.dmg'); do rsync -e "ssh -p 50220 -o StrictHostKeyChecking=no" -va $i travis@echoes.jkvinge.net:/home/travis/builds/macos/ done upload-windows: name: Upload Windows Setup runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' needs: - build-windows-msvc steps: - uses: actions/checkout@v1.2.0 - uses: actions/download-artifact@v2 with: path: uploads - name: Install SSH keys uses: shimataro/ssh-key-action@v2 with: known_hosts: ${{ secrets.KNOWN_HOSTS2 }} key: ${{ secrets.SSH_KEY }} - name: rsync run: | set -x for i in $(find uploads -type f -name 'StrawberrySetup*.exe'); do rsync -e "ssh -p 50220 -o StrictHostKeyChecking=no" -va $i travis@echoes.jkvinge.net:/home/travis/builds/windows/ done build-freebsd: name: Build FreeBSD runs-on: macos-10.15 steps: - uses: actions/checkout@v1.2.0 - name: Build FreeBSD id: build-freebsd uses: vmactions/freebsd-vm@v0.1.5 with: usesh: true mem: 4096 prepare: pkg install -y git cmake pkgconf gettext-tools boost-libs glib gnutls qt5-core qt5-concurrent qt5-network qt5-sql qt5-dbus qt5-gui qt5-widgets qt5-buildtools qt5-linguisttools qt5-qmake qt5-sqldrivers-sqlite3 qt5-testlib sqlite gstreamer1 gstreamer1-plugins chromaprint protobuf protobuf-c taglib libcdio libmtp gdk-pixbuf2 libgpod fftw3 googletest iconv run: | cmake -E make_directory build cd build cmake .. -DCMAKE_BUILD_TYPE=Debug cmake --build . --config Debug --parallel 4 cd .. rm -rf build