name: C/C++ CI on: [push, pull_request] jobs: build_source: name: Create source tarball runs-on: ubuntu-latest container: image: opensuse/leap:15.2 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 libQt5Core-devel libQt5Gui-devel libQt5Widgets-devel libQt5Concurrent-devel libQt5Network-devel libQt5Sql-devel libQt5DBus-devel libQt5Test-devel libqt5-qtx11extras-devel libqt5-qtbase-common-devel libQt5Sql5-sqlite libqt5-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=$BUILD_TYPE -DBUILD_WERROR=ON - name: Create source tarball working-directory: build run: ../dist/scripts/maketarball.sh build_opensuse_lp151: name: Build openSUSE Leap 15.1 runs-on: ubuntu-latest container: image: opensuse/leap:15.1 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 libQt5Core-devel libQt5Gui-devel libQt5Widgets-devel libQt5Concurrent-devel libQt5Network-devel libQt5Sql-devel libQt5DBus-devel libQt5Test-devel libqt5-qtx11extras-devel libqt5-qtbase-common-devel libQt5Sql5-sqlite libqt5-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=$BUILD_TYPE -DBUILD_WERROR=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_lp152_qt5: name: Build openSUSE Leap 15.2 Qt 5 runs-on: ubuntu-latest container: image: opensuse/leap:15.2 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 libQt5Core-devel libQt5Gui-devel libQt5Widgets-devel libQt5Concurrent-devel libQt5Network-devel libQt5Sql-devel libQt5DBus-devel libQt5Test-devel libqt5-qtx11extras-devel libqt5-qtbase-common-devel libQt5Sql5-sqlite libqt5-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=$BUILD_TYPE -DBUILD_WERROR=ON -DBUILD_WITH_QT5=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_lp152_qt6: name: Build openSUSE Leap 15.2 Qt 6 runs-on: ubuntu-latest container: image: opensuse/leap:15.2 steps: - uses: actions/checkout@v1.2.0 - 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.2/ 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 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 qt6-core-devel qt6-gui-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=$BUILD_TYPE -DBUILD_WERROR=ON -DBUILD_WITH_QT6=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_qt5: #name: Build openSUSE Tumbleweed Qt 5 #runs-on: ubuntu-latest #container: #image: opensuse/tumbleweed #steps: #- uses: actions/checkout@v1.2.0 #- name: Lock packages #run: zypper --non-interactive --gpg-auto-import-keys addlock openssh-server #- 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 #libQt5Core-devel #libQt5Gui-devel #libQt5Widgets-devel #libQt5Concurrent-devel #libQt5Network-devel #libQt5Sql-devel #libQt5DBus-devel #libQt5Test-devel #libqt5-qtx11extras-devel #libqt5-qtbase-common-devel #libQt5Sql5-sqlite #libqt5-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=$BUILD_TYPE -DBUILD_WERROR=ON -DBUILD_WITH_QT5=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: Lock packages #run: zypper --non-interactive --gpg-auto-import-keys addlock openssh-server #- 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 #qt6-core-devel #qt6-gui-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=$BUILD_TYPE -DBUILD_WERROR=ON -DBUILD_WITH_QT6=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_32: name: Build Fedora 32 runs-on: ubuntu-latest container: image: fedora:32 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 qt5-devel qt5-qtbase-devel qt5-qtx11extras-devel qt5-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_fedora_33: name: Build Fedora 33 runs-on: ubuntu-latest container: image: fedora:33 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 qt5-qtbase-devel qt5-qtx11extras-devel qt5-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_centos_8: name: Build CentOS 8 runs-on: ubuntu-latest container: image: centos:8 env: RPM_BUILD_NCPUS: "2" steps: - uses: actions/checkout@v1.2.0 - name: Install dnf-plugins-core run: dnf install -y dnf-plugins-core - name: Install epel-release run: dnf install -y epel-release - name: Install config-manager run: dnf install -y 'dnf-command(config-manager)' - name: Enable powertools run: dnf config-manager --set-enabled powertools - name: Clean all run: dnf clean all - name: Update run: dnf update -y - name: Install CentOS dependencies run: > dnf install -y glibc gcc-c++ make libtool cmake3 rpmdevtools redhat-lsb-core git wget curl man tar gettext boost-devel fuse-devel dbus-devel libnotify-devel gnutls-devel sqlite-devel protobuf-devel protobuf-c alsa-lib-devel pulseaudio-libs-devel qt5-qtbase-devel qt5-qtx11extras-devel qt5-qttools-devel fftw-devel libchromaprint-devel libcdio-devel libgpod-devel libmtp-devel libjpeg-devel cairo-devel dbus-x11 xorg-x11-server-Xvfb xorg-x11-xauth vim-common desktop-file-utils libappstream-glib appstream-data hicolor-icon-theme gstreamer1-devel gstreamer1-plugins-base-devel - 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 qtbase5-dev qtbase5-dev-tools qtbase5-private-dev libqt5x11extras5-dev qttools5-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=$BUILD_TYPE - 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 qtbase5-dev qtbase5-dev-tools qtbase5-private-dev libqt5x11extras5-dev qttools5-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=$BUILD_TYPE -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 qtbase5-dev qtbase5-dev-tools qtbase5-private-dev libqt5x11extras5-dev qttools5-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=$BUILD_TYPE -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 qtbase5-dev qtbase5-dev-tools qtbase5-private-dev libqt5x11extras5-dev qttools5-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=$BUILD_TYPE -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build_ubuntu_groovy: name: Build Ubuntu Groovy runs-on: ubuntu-latest container: image: ubuntu:groovy 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 qtbase5-dev qtbase5-dev-tools qtbase5-private-dev libqt5x11extras5-dev qttools5-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=$BUILD_TYPE -DBUILD_WERROR=ON - name: make deb shell: bash run: dpkg-buildpackage -b -d -uc -us -nc -j2 build-macos-catalina: name: Build macOS Catalina runs-on: macos-10.15 steps: - uses: actions/checkout@v1.2.0 - name: Install packages run: > brew install glib pkgconfig boost libffi protobuf protobuf-c qt 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 - name: Install Sparkle run: brew install --cask sparkle - name: Link Sparkle shell: bash run: | sudo ln -s /usr/local/Caskroom/sparkle/$(ls /usr/local/Caskroom/sparkle | head -n1)/Sparkle.framework /Library/Frameworks/Sparkle.framework sudo ln -s /usr/local/Caskroom/sparkle/$(ls /usr/local/Caskroom/sparkle | head -n1)/Sparkle.framework.dSYM /Library/Frameworks/Sparkle.framework.dSYM - name: Delete conflicting taglib system headers shell: bash run: rm -rf /usr/local/include/taglib - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash env: PKG_CONFIG_PATH: /usr/local/lib/pkgconfig Qt5_DIR: /usr/local/opt/qt5/lib/cmake Qt5LinguistTools_DIR: /usr/local/opt/qt5/lib/cmake/Qt5LinguistTools GST_SCANNER_PATH: /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=$BUILD_TYPE -DBUILD_WERROR=ON -DUSE_BUNDLE=ON - name: Build working-directory: build shell: bash run: cmake --build . --config $BUILD_TYPE - name: Install working-directory: build shell: bash run: make install - name: Create DMG working-directory: build shell: bash run: make dmg - uses: actions/upload-artifact@v2 with: name: upload-macos-catalina path: build/strawberry-*-catalina-*.dmg build-macos-bigsur: name: Build macOS Big Sur runs-on: macos-11.0 steps: - uses: actions/checkout@v1.2.0 - name: Install packages run: > brew install glib pkgconfig boost libffi protobuf protobuf-c qt 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 - name: Install Sparkle run: brew install --cask sparkle - name: Link Sparkle shell: bash run: | sudo ln -s /usr/local/Caskroom/sparkle/$(ls /usr/local/Caskroom/sparkle | head -n1)/Sparkle.framework /Library/Frameworks/Sparkle.framework sudo ln -s /usr/local/Caskroom/sparkle/$(ls /usr/local/Caskroom/sparkle | head -n1)/Sparkle.framework.dSYM /Library/Frameworks/Sparkle.framework.dSYM - name: Delete conflicting taglib system headers shell: bash run: rm -rf /usr/local/include/taglib - name: Create Build Environment shell: bash run: cmake -E make_directory build - name: Configure CMake shell: bash env: PKG_CONFIG_PATH: /usr/local/lib/pkgconfig Qt5_DIR: /usr/local/opt/qt5/lib/cmake Qt5LinguistTools_DIR: /usr/local/opt/qt5/lib/cmake/Qt5LinguistTools GST_SCANNER_PATH: /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=$BUILD_TYPE -DBUILD_WERROR=ON -DUSE_BUNDLE=ON - name: Build working-directory: build shell: bash run: cmake --build . --config $BUILD_TYPE - name: Install working-directory: build shell: bash run: make install - name: Create DMG working-directory: build shell: bash run: make dmg - uses: actions/upload-artifact@v2 with: name: upload-macos-bigsur path: build/strawberry-*-bigsur-*.dmg build-windows: name: Build Windows runs-on: ubuntu-latest container: image: jonaski/strawberry-mxe2 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 -DBUILD_WERROR=ON -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: make -j2 - name: Create directories working-directory: build run: mkdir -p gio-modules platforms sqldrivers 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 platforms plugins working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/platforms/qwindows.dll ${GITHUB_WORKSPACE}/build/platforms/ - name: Copy Qt styles plugins working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/styles/qwindowsvistastyle.dll ${GITHUB_WORKSPACE}/build/styles/ - name: Copy Qt SQL drivers plugins working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/sqldrivers/qsqlite.dll ${GITHUB_WORKSPACE}/build/sqldrivers/ - name: Copy Qt imageformats plugins working-directory: build run: cp /usr/src/strawberry-mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/imageformats/*.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 ${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,killproc.exe,gst-launch-1.0.exe} . - name: Copy dependencies working-directory: build run: > /usr/src/strawberry-mxe/tools/copydlldeps.sh -c -d . -F . -F ./platforms -F ./styles -F ./sqldrivers -F ./imageformats -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: Build Windows installer working-directory: build run: makensis strawberry.nsi upload-macos-catalina: name: Upload macOS Catalina DMG runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' needs: - build-macos-catalina 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-*-catalina-*.dmg'); do rsync -e "ssh -p 50220 -o StrictHostKeyChecking=no" -va $i travis@echoes.jkvinge.net:/home/travis/builds/macos/catalina/ done upload-macos-bigsur: name: Upload macOS Big Sur DMG runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' needs: - build-macos-bigsur 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-*-bigsur-*.dmg'); do rsync -e "ssh -p 50220 -o StrictHostKeyChecking=no" -va $i travis@echoes.jkvinge.net:/home/travis/builds/macos/bigsur/ done