Application: Use shared pointers #838
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: [push, pull_request] | |
jobs: | |
build-opensuse: | |
name: Build openSUSE | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
opensuse_version: [ 'tumbleweed', 'leap:15.4', 'leap:15.5' ] | |
qt_version: [ 'qt5', 'qt6' ] | |
container: | |
image: opensuse/${{matrix.opensuse_version}} | |
steps: | |
- name: Add tagparser repo | |
if: matrix.opensuse_version == 'tumbleweed' | |
run: zypper -n ar -c -f -n 'repo-tagparser' https://download.opensuse.org/repositories/home:/mkittler/openSUSE_Tumbleweed/ repo-tagparser | |
- name: Refresh repositories | |
run: zypper -n --gpg-auto-import-keys ref | |
- name: Upgrade packages | |
if: matrix.opensuse_version == 'tumbleweed' | |
run: zypper -n --gpg-auto-import-keys dup | |
- name: Install gcc | |
if: matrix.opensuse_version == 'tumbleweed' | |
run: zypper -n --gpg-auto-import-keys in gcc gcc-c++ | |
- name: Install gcc10 | |
if: matrix.opensuse_version != 'tumbleweed' | |
run: zypper -n --gpg-auto-import-keys in gcc10 gcc10-c++ | |
- name: Install packages | |
run: > | |
zypper -n --gpg-auto-import-keys in | |
lsb-release | |
rpm-build | |
git | |
tar | |
make | |
cmake | |
gettext-tools | |
rsync | |
glibc-devel | |
libboost_headers-devel | |
boost-devel | |
glib2-devel | |
glib2-tools | |
dbus-1-devel | |
alsa-devel | |
libnotify-devel | |
protobuf-devel | |
sqlite3-devel | |
libpulse-devel | |
gstreamer-devel | |
gstreamer-plugins-base-devel | |
vlc-devel | |
taglib-devel | |
libicu-devel | |
libcdio-devel | |
libgpod-devel | |
libmtp-devel | |
libchromaprint-devel | |
libebur128-devel | |
desktop-file-utils | |
update-desktop-files | |
appstream-glib | |
hicolor-icon-theme | |
- name: Install Qt 5 | |
if: matrix.qt_version == 'qt5' | |
run: > | |
zypper -n --gpg-auto-import-keys in | |
libQt5Core-devel | |
libQt5Gui-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 | |
- name: Install Qt 6 | |
if: matrix.qt_version == 'qt6' | |
run: > | |
zypper -n --gpg-auto-import-keys in | |
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 | |
- name: Install tagparser | |
if: matrix.opensuse_version == 'tumbleweed' | |
run: zypper -n --gpg-auto-import-keys in tagparser-devel | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON -DUSE_TAGLIB=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 (Tumbleweed) | |
if: matrix.opensuse_version == 'tumbleweed' | |
working-directory: build | |
run: rpmbuild -ba ../dist/unix/strawberry.spec | |
- name: Build RPM (Leap) | |
if: matrix.opensuse_version != 'tumbleweed' | |
working-directory: build | |
env: | |
CC: gcc-10 | |
CXX: g++-10 | |
run: rpmbuild -ba ../dist/unix/strawberry.spec | |
- name: Set opensuse subdir | |
run: echo "opensuse_subdir=$(echo ${{matrix.opensuse_version}} | sed 's/leap:/lp/g' | sed 's/\.//g')" > $GITHUB_ENV | |
- name: Upload artifacts | |
if: matrix.opensuse_version != 'tumbleweed' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: opensuse-${{env.opensuse_subdir}} | |
path: | | |
/usr/src/packages/SOURCES/*.xz | |
/usr/src/packages/SRPMS/*.rpm | |
/usr/src/packages/RPMS/x86_64/*.rpm | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/source ${{secrets.BUILDS_PATH}}/opensuse/${{env.opensuse_subdir}} | |
- name: rsync source | |
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci') && matrix.opensuse_version == 'tumbleweed' && matrix.qt_version == 'qt6' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var /usr/src/packages/SOURCES/*.xz ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/source/ | |
- name: rsync rpms | |
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci') && matrix.opensuse_version != 'tumbleweed' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var /usr/src/packages/SRPMS/*.rpm /usr/src/packages/RPMS/x86_64/*.rpm ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/opensuse/${{env.opensuse_subdir}}/ | |
build-fedora: | |
name: Build Fedora | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
fedora_version: [ '37', '38', '39' ] | |
container: | |
image: fedora:${{matrix.fedora_version}} | |
steps: | |
- name: Fix /etc/dnf/dnf.conf | |
if: matrix.fedora_version == '39' | |
run: | | |
dnf_conf_main=$(grep '^\[main\]$' /etc/dnf/dnf.conf 2>/dev/null || true) | |
if [ "${dnf_conf_main}" = "" ]; then | |
echo "[main]" > /etc/dnf/dnf.conf | |
echo "gpgcheck=True" >> /etc/dnf/dnf.conf | |
echo "installonly_limit=3" >> /etc/dnf/dnf.conf | |
echo "clean_requirements_on_remove=True" >> /etc/dnf/dnf.conf | |
echo "best=False" >> /etc/dnf/dnf.conf | |
echo "skip_if_unavailable=True" >> /etc/dnf/dnf.conf | |
echo "tsflags=nodocs" >> /etc/dnf/dnf.conf | |
fi | |
- name: Update repositories | |
run: dnf update -y | |
- name: Upgrade packages | |
run: dnf upgrade -y | |
- name: Install dependencies | |
run: > | |
dnf install -y | |
@development-tools | |
redhat-lsb-core | |
which | |
git | |
glibc | |
gcc-c++ | |
rpmdevtools | |
make | |
cmake | |
pkgconfig | |
glib | |
man | |
tar | |
gettext | |
openssh | |
rsync | |
boost-devel | |
dbus-devel | |
protobuf-devel | |
protobuf-compiler | |
sqlite-devel | |
alsa-lib-devel | |
pulseaudio-libs-devel | |
libnotify-devel | |
libicu-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 | |
libebur128-devel | |
fftw-devel | |
desktop-file-utils | |
libappstream-glib | |
hicolor-icon-theme | |
- name: Remove dangling Qt 6 SQL CMake files | |
run: rm -rf /usr/lib64/cmake/Qt6Sql/{Qt6QMYSQL*,Qt6QODBCD*,Qt6QPSQL*} | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -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 | |
env: | |
RPM_BUILD_NCPUS: "2" | |
working-directory: build | |
run: rpmbuild -ba ../dist/unix/strawberry.spec | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: fedora-${{matrix.fedora_version}} | |
path: | | |
/github/home/rpmbuild/SRPMS/*.rpm | |
/github/home/rpmbuild/RPMS/x86_64/*.rpm | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/fedora/${{matrix.fedora_version}} | |
- name: rsync | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var /github/home/rpmbuild/SRPMS/*.rpm /github/home/rpmbuild/RPMS/x86_64/*.rpm ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/fedora/${{matrix.fedora_version}}/ | |
build-openmandriva: | |
name: Build OpenMandriva | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
openmandriva_version: [ "cooker" ] | |
container: | |
image: openmandriva/${{matrix.openmandriva_version}} | |
steps: | |
- name: Update repositories | |
run: dnf update -y | |
- name: Upgrade packages | |
run: dnf upgrade -y | |
- name: Install dependencies | |
run: > | |
dnf install -y | |
glibc | |
gcc-c++ | |
git | |
gnutar | |
make | |
cmake | |
glib | |
gettext | |
lsb-release | |
rpmdevtools | |
rpm-build | |
rsync | |
glibc-devel | |
boost-devel | |
dbus-devel | |
protobuf-devel | |
protobuf-compiler | |
sqlite-devel | |
libasound-devel | |
pulseaudio-devel | |
lib64GL-devel | |
libgst-plugins-base1.0-devel | |
taglib-devel | |
chromaprint-devel | |
libebur128-devel | |
fftw-devel | |
icu-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: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -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 | |
env: | |
RPM_BUILD_NCPUS: "2" | |
working-directory: build | |
run: rpmbuild -ba ../dist/unix/strawberry.spec | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: openmandriva-${{matrix.openmandriva_version}} | |
path: | | |
/github/home/rpmbuild/SRPMS/*.rpm | |
/github/home/rpmbuild/RPMS/x86_64/*.rpm | |
- name: SSH key setup | |
if: matrix.openmandriva_version != 'cooker' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci') | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: matrix.openmandriva_version != 'cooker' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci') | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/openmandriva/${{matrix.openmandriva_version}} | |
- name: rsync | |
if: matrix.openmandriva_version != 'cooker' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci') | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var /github/home/rpmbuild/SRPMS/*.rpm /github/home/rpmbuild/RPMS/x86_64/*.rpm ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/openmandriva/${{matrix.openmandriva_version}}/ | |
build-mageia: | |
name: Build Mageia | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
mageia_version: [ '8' ] | |
container: | |
image: mageia:${{matrix.mageia_version}} | |
steps: | |
- name: Update repositories | |
run: urpmi.update --auto -a | |
- name: Upgrade packages | |
run: urpmi --auto --auto-update | |
- name: Install dependencies | |
run: > | |
urpmi --auto --force urpmi-debuginfo-install | |
git | |
glibc | |
gcc-c++ | |
binutils | |
make | |
cmake | |
man | |
tar | |
rpmdevtools | |
gettext | |
rsync | |
lib64boost-devel | |
lib64protobuf-devel | |
lib64sqlite3-devel | |
lib64alsa2-devel | |
lib64pulseaudio-devel | |
lib64gstreamer1.0-devel | |
lib64gstreamer-plugins-base1.0-devel | |
lib64cdio-devel | |
lib64gpod-devel | |
lib64mtp-devel | |
lib64taglib-devel | |
lib64chromaprint-devel | |
lib64ebur128-devel | |
lib64icu-devel | |
lib64fftw-devel | |
lib64dbus-devel | |
lib64appstream-devel | |
protobuf-compiler | |
desktop-file-utils | |
appstream-util | |
hicolor-icon-theme | |
- name: Install Qt 5 | |
if: matrix.mageia_version == '8' | |
run: urpmi --auto --force urpmi-debuginfo-install lib64qt5core-devel lib64qt5gui-devel lib64qt5widgets-devel lib64qt5network-devel lib64qt5concurrent-devel lib64qt5sql-devel lib64qt5dbus-devel lib64qt5help-devel lib64qt5test-devel lib64qt5x11extras-devel | |
- name: Install Qt 6 | |
if: matrix.mageia_version == 'cauldron' | |
run: urpmi --auto --force urpmi-debuginfo-install lib64qt6core-devel lib64qt6gui-devel lib64qt6widgets-devel lib64qt6network-devel lib64qt6concurrent-devel lib64qt6sql-devel lib64qt6dbus-devel lib64qt6help-devel lib64qt6test-devel | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -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 | |
env: | |
RPM_BUILD_NCPUS: "2" | |
working-directory: build | |
run: rpmbuild -ba ../dist/unix/strawberry.spec | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mageia-${{matrix.mageia_version}} | |
path: | |
/github/home/rpmbuild/SRPMS/*.rpm | |
/github/home/rpmbuild/RPMS/x86_64/*.rpm | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/mageia/${{matrix.mageia_version}} | |
- name: rsync | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var /github/home/rpmbuild/SRPMS/*.rpm /github/home/rpmbuild/RPMS/x86_64/*.rpm ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/mageia/${{matrix.mageia_version}}/ | |
build-debian: | |
name: Build Debian | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
debian_version: [ 'bullseye', 'bookworm', 'trixie' ] | |
container: | |
image: debian:${{matrix.debian_version}} | |
steps: | |
- name: Update repositories | |
run: apt update -y | |
- name: Install packages | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: > | |
apt install -y | |
build-essential | |
dh-make | |
ssh | |
git | |
make | |
cmake | |
gcc | |
g++ | |
pkg-config | |
fakeroot | |
gettext | |
lsb-release | |
rsync | |
dpkg-dev | |
libglib2.0-dev | |
libdbus-1-dev | |
libboost-dev | |
libprotobuf-dev | |
protobuf-compiler | |
libsqlite3-dev | |
libasound2-dev | |
libpulse-dev | |
libtag1-dev | |
libicu-dev | |
libgstreamer1.0-dev | |
libgstreamer-plugins-base1.0-dev | |
gstreamer1.0-alsa | |
gstreamer1.0-pulseaudio | |
libchromaprint-dev | |
libebur128-dev | |
libfftw3-dev | |
libcdio-dev | |
libmtp-dev | |
libgpod-dev | |
- name: Install Qt 5 | |
if: matrix.debian_version == 'bullseye' | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install -y qtbase5-dev qtbase5-dev-tools qttools5-dev qttools5-dev-tools libqt5x11extras5-dev | |
- name: Install Qt 6 | |
if: matrix.debian_version != 'bullseye' | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install -y qt6-base-dev qt6-base-dev-tools qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON | |
- name: make deb | |
run: dpkg-buildpackage -b -d -uc -us -nc -j2 | |
- name: Copy deb | |
run: cp ../*.deb . | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: debian-${{matrix.debian_version}} | |
path: "*.deb" | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/debian/${{matrix.debian_version}} | |
- name: rsync | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var *.deb ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/debian/${{matrix.debian_version}}/ | |
build-ubuntu: | |
name: Build Ubuntu | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ubuntu_version: [ 'focal', 'jammy', 'kinetic', 'lunar', 'mantic' ] | |
container: | |
image: ubuntu:${{matrix.ubuntu_version}} | |
steps: | |
- name: Update repositories | |
run: apt update -y | |
- name: Install packages | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: > | |
apt install -y | |
build-essential | |
dh-make | |
ssh | |
git | |
make | |
cmake | |
pkg-config | |
gcc | |
g++ | |
fakeroot | |
wget | |
curl | |
gettext | |
lsb-release | |
rsync | |
dpkg-dev | |
libglib2.0-dev | |
libboost-dev | |
libdbus-1-dev | |
libprotobuf-dev | |
protobuf-compiler | |
libsqlite3-dev | |
libasound2-dev | |
libpulse-dev | |
libtag1-dev | |
libicu-dev | |
libgstreamer1.0-dev | |
libgstreamer-plugins-base1.0-dev | |
libgstreamer-plugins-good1.0-dev | |
gstreamer1.0-alsa | |
gstreamer1.0-pulseaudio | |
libchromaprint-dev | |
libebur128-dev | |
libfftw3-dev | |
libcdio-dev | |
libmtp-dev | |
libgpod-dev | |
- name: Install Qt 5 | |
if: matrix.ubuntu_version == 'focal' | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install -y qtbase5-dev qtbase5-dev-tools qttools5-dev qttools5-dev-tools libqt5x11extras5-dev | |
- name: Install Qt 6 | |
if: matrix.ubuntu_version != 'focal' | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install -y qt6-base-dev qt6-base-dev-tools qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON | |
- name: make deb | |
run: dpkg-buildpackage -b -d -uc -us -nc -j2 | |
- name: Copy deb | |
run: cp ../*.deb ../*.ddeb . | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-${{matrix.ubuntu_version}} | |
path: | | |
*.deb | |
*.ddeb | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/ubuntu/${{matrix.ubuntu_version}} | |
- name: rsync | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var *.deb *.ddeb ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/ubuntu/${{matrix.ubuntu_version}}/ | |
upload-ubuntu-ppa: | |
name: Upload Ubuntu PPA | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ubuntu_version: [ 'focal', 'jammy', 'kinetic', 'lunar', 'mantic' ] | |
container: | |
image: ubuntu:${{matrix.ubuntu_version}} | |
steps: | |
- name: Update repositories | |
run: apt update -y | |
- name: Install packages | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: > | |
apt install -y | |
git | |
ssh | |
build-essential | |
dh-make | |
make | |
cmake | |
pkg-config | |
gcc | |
g++ | |
fakeroot | |
gettext | |
lsb-release | |
gpg | |
dput | |
dpkg-dev | |
libglib2.0-dev | |
libboost-dev | |
libdbus-1-dev | |
libprotobuf-dev | |
libsqlite3-dev | |
libasound2-dev | |
libpulse-dev | |
libtag1-dev | |
libicu-dev | |
libgstreamer1.0-dev | |
libgstreamer-plugins-base1.0-dev | |
libgstreamer-plugins-good1.0-dev | |
libchromaprint-dev | |
libebur128-dev | |
libfftw3-dev | |
libcdio-dev | |
libmtp-dev | |
libgpod-dev | |
gstreamer1.0-alsa | |
gstreamer1.0-pulseaudio | |
protobuf-compiler | |
- name: Install Qt 5 | |
if: matrix.ubuntu_version == 'focal' | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install -y qtbase5-dev qtbase5-dev-tools qttools5-dev qttools5-dev-tools libqt5x11extras5-dev | |
- name: Install Qt 6 | |
if: matrix.ubuntu_version != 'focal' | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install -y qt6-base-dev qt6-base-dev-tools qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Configure CMake | |
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_WERROR=ON | |
- name: Delete build directory | |
run: rm -rf build | |
- name: Import Ubuntu PPA GPG private key | |
uses: crazy-max/ghaction-import-gpg@v5 | |
with: | |
gpg_private_key: ${{secrets.UBUNTU_PPA_GPG_PRIVATE_KEY}} | |
- name: dpkg-buildpackage | |
run: dpkg-buildpackage -S -d -k573D197B5EA20EDF | |
- name: Upload Unstable PPA | |
run: dput ppa:jonaski/strawberry-unstable ../*_source.changes | |
- name: Set is release | |
run: echo "is_release=$(grep '^\s*set\s*(\s*INCLUDE_GIT_REVISION\s\+OFF\s*)\s*$' cmake/Version.cmake >/dev/null 2>&1 && echo 1 || echo 0)" >> $GITHUB_ENV | |
- name: Get release version | |
run: echo "release_version=$(git describe --tags --exact-match ${GITHUB_SHA} 2>/dev/null | head -1)" >> $GITHUB_ENV | |
- name: Upload Stable PPA | |
if: env.is_release == '1' && env.release_version != '' | |
run: dput ppa:jonaski/strawberry ../*_source.changes | |
build-freebsd: | |
name: Build FreeBSD | |
runs-on: macos-12 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Build FreeBSD | |
id: build-freebsd | |
uses: vmactions/[email protected] | |
with: | |
usesh: true | |
mem: 4096 | |
prepare: pkg install -y git cmake pkgconf gettext-tools boost-libs glib qt6-base qt6-tools sqlite gstreamer1 gstreamer1-plugins chromaprint libebur128 protobuf protobuf-c taglib libcdio libmtp gdk-pixbuf2 libgpod fftw3 googletest iconv icu | |
run: | | |
git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
cmake -E make_directory build | |
cmake -S . -B build -DCMAKE_BUILD_TYPE="Debug" | |
cmake --build build --config Debug --parallel 4 | |
cd .. | |
rm -rf build | |
build-macos-homebrew: | |
name: Build macOS Homebrew | |
runs-on: macos-11 | |
steps: | |
- name: Remove packages | |
run: brew remove aliyun-cli ant aws-sam-cli azure-cli bazelisk bicep composer geckodriver ghostscript helm httpd imagemagick kotlin maven [email protected] mongodb-database-tools mongosh nginx php postgresql@14 [email protected] rustup-init sbt selenium-server swiftformat switchaudio-osx chromedriver firefox google-chrome julia microsoft-edge r session-manager-plugin | |
- name: Update packages | |
run: brew update | |
- name: Upgrade packages | |
run: brew upgrade || true | |
- name: Install packages | |
run: | | |
brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c rsync | |
brew install glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc | |
brew install libffi openssl sqlite fftw libmtp libplist libxml2 libsoup | |
brew install libogg libvorbis flac wavpack opus speex mpg123 lame twolame taglib chromaprint libebur128 libbs2b libcdio libopenmpt faad2 faac fdk-aac musepack game-music-emu | |
brew install qt6 | |
- 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/ | |
- 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: Checkout | |
uses: actions/checkout@v3 | |
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 | |
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 | |
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 -DENABLE_DBUS=OFF -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 strawberry.app/Contents/Frameworks/ | |
- name: Deploy | |
working-directory: build | |
run: make deploy | |
- name: Deploy check | |
working-directory: build | |
run: make deploycheck | |
- name: Create DMG | |
working-directory: build | |
run: make dmg | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos | |
path: build/*.dmg | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/macos | |
- name: rsync | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var build/*.dmg ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/macos/ | |
build-macos-macports: | |
name: Build macOS Macports | |
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@v3 | |
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 | |
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 | |
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: Fix macdeployqt and macdeploycheck | |
working-directory: build | |
run: | | |
install_name_tool -change "@rpath/QtCore.framework/Versions/A/QtCore" "/opt/local/libexec/qt6/lib/QtCore.Framework/Versions/A/QtCore" 3rdparty/macdeployqt/macdeployqt | |
install_name_tool -change "@rpath/QtCore.framework/Versions/A/QtCore" "/opt/local/libexec/qt6/lib/QtCore.Framework/Versions/A/QtCore" ext/macdeploycheck/macdeploycheck | |
- name: Deploy | |
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 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [ 'i686', 'x86_64' ] | |
build_type: [ 'debug', 'release' ] | |
container: | |
image: jonaski/strawberry-mxe-${{matrix.arch}}-${{matrix.build_type}} | |
steps: | |
- name: Install rsync | |
run: zypper -n --gpg-auto-import-keys in rsync | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Link MXE directory | |
run: ln -s /strawberry-mxe ~/mxe-shared | |
- name: Set ENABLE_WIN32_CONSOLE (debug) | |
if: matrix.build_type == 'debug' | |
run: echo "win32_console=ON" >> $GITHUB_ENV | |
- name: Set ENABLE_WIN32_CONSOLE (release) | |
if: matrix.build_type == 'release' | |
run: echo "win32_console=OFF" >> $GITHUB_ENV | |
- name: Run CMake | |
env: | |
PKG_CONFIG_PATH: /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/lib/pkgconfig | |
run: > | |
cmake | |
-S . | |
-B build | |
-DCMAKE_TOOLCHAIN_FILE="../cmake/Toolchain-${{matrix.arch}}-w64-mingw32-shared.cmake" | |
-DCMAKE_BUILD_TYPE="${{matrix.build_type}}" | |
-DCMAKE_PREFIX_PATH="/strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/qt6" | |
-DBUILD_WITH_QT6=ON | |
-DBUILD_WERROR=OFF | |
-DARCH="${{matrix.arch}}" | |
-DENABLE_WIN32_CONSOLE=${{env.win32_console}} | |
-DENABLE_DBUS=OFF | |
-DENABLE_LIBGPOD=OFF | |
-DENABLE_LIBMTP=OFF | |
-DENABLE_AUDIOCD=OFF | |
-DProtobuf_PROTOC_EXECUTABLE="/strawberry-mxe/usr/x86_64-pc-linux-gnu/bin/protoc" | |
- name: Run Make | |
run: cmake --build 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 /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/lib/gio/modules/{libgiognutls.dll,libgioopenssl.dll} ${GITHUB_WORKSPACE}/build/gio-modules/ | |
- name: Copy Qt platform plugins | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/qt6/plugins/platforms/qwindows.dll ${GITHUB_WORKSPACE}/build/platforms/ | |
- name: Copy Qt styles | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/qt6/plugins/styles/qwindowsvistastyle.dll ${GITHUB_WORKSPACE}/build/styles/ | |
- name: Copy Qt TLS plugins | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/qt6/plugins/tls/{qschannelbackend.dll,qopensslbackend.dll} ${GITHUB_WORKSPACE}/build/tls/ | |
- name: Copy Qt SQL drivers | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/qt6/plugins/sqldrivers/qsqlite.dll ${GITHUB_WORKSPACE}/build/sqldrivers/ | |
- name: Copy Qt imageformats | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-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 /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/bin/gstreamer-1.0/{libgstaes.dll,libgstaiff.dll,libgstapetag.dll,libgstapp.dll,libgstasf.dll,libgstasfmux.dll,libgstaudioconvert.dll,libgstaudiofx.dll,libgstaudiomixer.dll,libgstaudioparsers.dll,libgstaudiorate.dll,libgstaudioresample.dll,libgstaudiotestsrc.dll,libgstautodetect.dll,libgstbs2b.dll,libgstcoreelements.dll,libgstdash.dll,libgstdirectsound.dll,libgstequalizer.dll,libgstfaac.dll,libgstfaad.dll,libgstfdkaac.dll,libgstflac.dll,libgstgio.dll,libgstgme.dll,libgsthls.dll,libgsticydemux.dll,libgstid3demux.dll,libgstid3tag.dll,libgstisomp4.dll,libgstlame.dll,libgstlibav.dll,libgstmpg123.dll,libgstmusepack.dll,libgstogg.dll,libgstopenmpt.dll,libgstopus.dll,libgstopusparse.dll,libgstpbtypes.dll,libgstplayback.dll,libgstreplaygain.dll,libgstrtp.dll,libgstrtsp.dll,libgstsoup.dll,libgstspectrum.dll,libgstspeex.dll,libgsttaglib.dll,libgsttcp.dll,libgsttwolame.dll,libgsttypefindfunctions.dll,libgstudp.dll,libgstvolume.dll,libgstvorbis.dll,libgstwasapi.dll,libgstwavenc.dll,libgstwavpack.dll,libgstwavparse.dll,libgstxingmux.dll} ${GITHUB_WORKSPACE}/build/gstreamer-plugins/ | |
- name: Copy extra binaries | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/bin/{sqlite3.exe,gst-launch-1.0.exe,gst-play-1.0.exe,gst-discoverer-1.0.exe,libsoup-3.0-0.dll,libnghttp2.dll} . | |
- name: Copy extra binaries (debug) | |
if: matrix.build_type == 'debug' | |
working-directory: build | |
run: cp /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared/bin/{gdb.exe,libreadline8.dll} . | |
- name: Copy dependencies | |
working-directory: build | |
run: > | |
/strawberry-mxe/tools/copydlldeps.sh | |
-c | |
-d . | |
-F . | |
-F ./platforms | |
-F ./styles | |
-F ./imageformats | |
-F ./tls | |
-F ./sqldrivers | |
-F ./gstreamer-plugins | |
-R /strawberry-mxe/usr/${{matrix.arch}}-w64-mingw32.shared | |
- name: Strip binaries | |
if: matrix.build_type == 'release' | |
working-directory: build | |
run: find . -type f \( -iname \*.dll -o -iname \*.exe \) -exec /strawberry-mxe/usr/bin/${{matrix.arch}}-w64-mingw32.shared-strip {} \; | |
- name: Strip gdb.exe | |
if: matrix.build_type == 'debug' | |
working-directory: build | |
run: /strawberry-mxe/usr/bin/${{matrix.arch}}-w64-mingw32.shared-strip gdb.exe | |
- 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: Check that all files are included in nsi | |
working-directory: build | |
run: | | |
files_missing= | |
for i in $(ls -1 *.dll *.exe); do | |
nsi_file_entry=$(grep -i "^\s\+File\s\+\"$i\"$" strawberry.nsi || true) | |
if [ "${nsi_file_entry}" = "" ]; then | |
if [ "${files_missing}" = "" ]; then | |
files_missing="${i}" | |
else | |
files_missing="${files_missing} $i" | |
fi | |
fi | |
done | |
if ! [ "${files_missing}" = "" ]; then | |
echo "Files missing in nsi: ${files_missing}" | |
exit 1 | |
fi | |
- name: Build Windows installer | |
working-directory: build | |
run: makensis strawberry.nsi | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-mingw | |
path: build/StrawberrySetup*.exe | |
- name: SSH key setup | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{ secrets.SSH_KEY }} | |
- name: Create server path | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/windows/mingw | |
- name: rsync | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var build/StrawberrySetup*.exe ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/windows/mingw/ | |
build-windows-msvc: | |
name: Build Windows MSVC | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [ 'x86', 'x86_64' ] | |
build_type: [ 'debug', 'release' ] | |
steps: | |
- name: Set prefix path | |
shell: bash | |
run: | | |
echo "prefix_path_backslash=c:\strawberry_msvc_${{matrix.arch}}_${{matrix.build_type}}" >> $GITHUB_ENV | |
echo "prefix_path_forwardslash=c:/strawberry_msvc_${{matrix.arch}}_${{matrix.build_type}}" >> $GITHUB_ENV | |
echo "prefix_path_unix=/c/strawberry_msvc_${{matrix.arch}}_${{matrix.build_type}}" >> $GITHUB_ENV | |
- name: Get the latest MSVC dependencies | |
shell: bash | |
run: | | |
msvc_deps_version=$(curl -s 'https://github.com/strawberrymusicplayer/strawberry-msvc-dependencies/releases' | sed -n 's,.*releases/tag/\([^"&;]*\)".*,\1,p' | head -1) | |
echo "msvc_deps_version=${msvc_deps_version}" >> $GITHUB_ENV | |
- name: Download Windows MSVC dependencies | |
uses: suisei-cn/actions-download-file@v1 | |
with: | |
url: "Windows MSVC dependencies [this](https://github.com/strawberrymusicplayer/strawberry-msvc-dependencies/releases/download/${{env.msvc_deps_version}}/strawberry-msvc-${{matrix.arch}}-${{matrix.build_type}}.tar.xz)!" | |
target: downloads/ | |
auto-match: true | |
- name: Extract Windows MSVC dependencies | |
shell: bash | |
run: | | |
tar -xf /d/a/strawberry/strawberry/downloads/strawberry-msvc-${{matrix.arch}}-${{matrix.build_type}}.tar.xz | |
mv strawberry_msvc_${{matrix.arch}}_${{matrix.build_type}} /c/ | |
- name: Update PATH | |
run: echo "${{env.prefix_path_backslash}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Copy bin files | |
shell: bash | |
run: cp /c/strawberry/c/bin/{patch.exe,strip.exe,strings.exe,objdump.exe} ${{env.prefix_path_unix}}/bin | |
- name: Uninstall conflicting mingw | |
shell: cmd | |
run: choco uninstall mingw -y -f | |
- name: Delete conflicting files | |
shell: bash | |
run: rm -rf /c/strawberry/c "/c/program files/OpenSSL" "/c/program files/postgresql" | |
- name: Delete conflicting icu | |
shell: bash | |
run: | | |
find "/c/program files (x86)/windows kits/" -name 'icu*.lib' -delete | |
find "/c/program files (x86)/windows kits/" -name 'icu*.h' -delete | |
- 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: Download Registry plugin for NSIS | |
uses: suisei-cn/actions-download-file@v1 | |
with: | |
url: "Registry [this](https://nsis.sourceforge.io/mediawiki/images/4/47/Registry.zip)!" | |
target: downloads/ | |
auto-match: true | |
- name: Extract NSIS Registry plugin | |
run: 7z x -o"${{github.workspace}}/NSIS_Plugins" "${{github.workspace}}/downloads/Registry.zip" | |
- name: Download Inetc plugin for NSIS | |
uses: suisei-cn/actions-download-file@v1 | |
with: | |
url: "Inetc [this](https://nsis.sourceforge.io/mediawiki/images/c/c9/Inetc.zip)!" | |
target: downloads/ | |
auto-match: true | |
- name: Extract NSIS Inetc plugin | |
run: 7z x -o"${{github.workspace}}/NSIS_Plugins" "${{github.workspace}}/downloads/Inetc.zip" | |
- name: Install NSIS plugins | |
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/" | |
copy "${{github.workspace}}/NSIS_Plugins/Desktop/Plugin/registry.dll" "C:/Program Files (x86)/NSIS/Plugins/" | |
copy "${{github.workspace}}/NSIS_Plugins/Desktop/Plugin/registry.dll" "C:/Program Files (x86)/NSIS/Plugins/x86-unicode/" | |
copy "${{github.workspace}}/NSIS_Plugins/Plugins/x86-unicode/INetC.dll" "C:/Program Files (x86)/NSIS/Plugins/x86-unicode/" | |
- name: Setup MSVC Environment | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: ${{matrix.arch}} | |
sdk: 10.0.20348.0 | |
vsversion: 17 | |
toolset: 14.3 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Add safe git directory | |
shell: bash | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Create Build Environment | |
run: cmake -E make_directory build | |
- name: Set ENABLE_WIN32_CONSOLE (debug) | |
if: matrix.build_type == 'debug' | |
shell: bash | |
run: echo "win32_console=ON" >> $GITHUB_ENV | |
- name: Set ENABLE_WIN32_CONSOLE (release) | |
if: matrix.build_type == 'release' | |
shell: bash | |
run: echo "win32_console=OFF" >> $GITHUB_ENV | |
- name: Run CMake | |
run: > | |
cmake | |
-S . | |
-B build | |
-G "Ninja" | |
-DCMAKE_BUILD_TYPE="${{matrix.build_type}}" | |
-DCMAKE_PREFIX_PATH="${{env.prefix_path_forwardslash}}/lib/cmake" | |
-DBUILD_WITH_QT6=ON | |
-DBUILD_WERROR=OFF | |
-DARCH="${{matrix.arch}}" | |
-DENABLE_WIN32_CONSOLE=${{env.win32_console}} | |
-DUSE_TAGLIB=ON | |
-DPKG_CONFIG_EXECUTABLE="${{env.prefix_path_forwardslash}}/bin/pkg-config.exe" | |
-DICU_ROOT="${{env.prefix_path_forwardslash}}" | |
- name: Run Make | |
env: | |
CL: "/MP" | |
run: cmake --build build --config ${{matrix.build_type}} --parallel 4 | |
- name: Copy extra binaries | |
working-directory: build | |
run: | | |
copy ${{env.prefix_path_backslash}}\bin\libssl-3*.dll | |
copy ${{env.prefix_path_backslash}}\bin\libcrypto-3*.dll | |
copy ${{env.prefix_path_backslash}}\bin\soup-3.0-0.dll | |
copy ${{env.prefix_path_backslash}}\bin\gst-launch-1.0.exe | |
copy ${{env.prefix_path_backslash}}\bin\gst-play-1.0.exe | |
copy ${{env.prefix_path_backslash}}\bin\gst-discoverer-1.0.exe | |
copy ${{env.prefix_path_backslash}}\bin\sqlite3.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 ${{env.prefix_path_backslash}}\lib\gio\modules\*.dll .\gio-modules\ | |
- name: Copy Qt platform plugins | |
working-directory: build | |
run: copy ${{env.prefix_path_backslash}}\plugins\platforms\qwindows*.dll .\platforms\ | |
- name: Copy Qt styles | |
working-directory: build | |
run: copy ${{env.prefix_path_backslash}}\plugins\styles\qwindowsvistastyle*.dll .\styles\ | |
- name: Copy Qt TLS plugins | |
working-directory: build | |
run: copy ${{env.prefix_path_backslash}}\plugins\tls\*.dll .\tls\ | |
- name: Copy Qt SQL drivers | |
working-directory: build | |
run: copy ${{env.prefix_path_backslash}}\plugins\sqldrivers\qsqlite*.dll .\sqldrivers\ | |
- name: Copy Qt imageformats plugins | |
working-directory: build | |
run: copy ${{env.prefix_path_backslash}}\plugins\imageformats\*.dll .\imageformats\ | |
- name: Copy gstreamer plugins | |
working-directory: build | |
run: | | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaes.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaiff.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstapetag.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstapp.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstasf.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstasfmux.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudioconvert.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudiofx.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudiomixer.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudioparsers.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudiorate.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudioresample.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstaudiotestsrc.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstautodetect.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstbs2b.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstcoreelements.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstdash.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstdirectsound.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstequalizer.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstfaac.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstfaad.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstfdkaac.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstflac.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstgio.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstgme.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gsthls.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gsticydemux.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstid3demux.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstid3tag.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstisomp4.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstlame.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstlibav.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstmpg123.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstmusepack.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstogg.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstopenmpt.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstopus.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstopusparse.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstpbtypes.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstplayback.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstreplaygain.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstrtp.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstrtsp.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstsoup.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstspectrum.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstspeex.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gsttaglib.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gsttcp.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gsttwolame.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gsttypefindfunctions.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstudp.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstvolume.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstvorbis.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstwasapi.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstwasapi2.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstwavenc.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstwavpack.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstwavparse.dll .\gstreamer-plugins\ | |
copy ${{env.prefix_path_backslash}}\lib\gstreamer-1.0\gstxingmux.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 ${{env.prefix_path_unix}}/bin | |
- 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: Check that all files are included in nsi | |
working-directory: build | |
shell: bash | |
run: | | |
files_missing= | |
for i in $(ls -1 *.dll *.exe); do | |
nsi_file_entry=$(grep -i "^\s\+File\s\+\"$i\"$" strawberry.nsi || true) | |
if [ "${nsi_file_entry}" = "" ]; then | |
if [ "${files_missing}" = "" ]; then | |
files_missing="${i}" | |
else | |
files_missing="${files_missing} $i" | |
fi | |
fi | |
done | |
if ! [ "${files_missing}" = "" ]; then | |
echo "Files missing in nsi: ${files_missing}" | |
exit 1 | |
fi | |
- name: Create nsis installer | |
working-directory: build | |
run: makensis strawberry.nsi | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-msvc | |
path: build/StrawberrySetup*.exe | |
rsync-windows-msvc-builds: | |
name: Rsync Windows MSVC builds | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
needs: | |
- build-windows-msvc | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: windows-msvc | |
path: builds | |
- name: View files | |
run: find builds | |
- name: SSH key setup | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{secrets.SSH_KEY}} | |
- name: Create server path | |
shell: bash | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/windows/msvc | |
- name: rsync | |
shell: bash | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var builds/StrawberrySetup-*-msvc-*.exe ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/windows/msvc/ | |
upload-release: | |
name: Upload release | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' | |
needs: | |
- build-opensuse | |
- build-fedora | |
- build-mageia | |
- build-debian | |
- build-ubuntu | |
- build-macos-homebrew | |
- build-windows-mingw | |
- build-windows-msvc | |
steps: | |
- name: Install rsync | |
run: sudo apt install -y rsync | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set is release | |
run: echo "is_release=$(grep '^\s*set\s*(\s*INCLUDE_GIT_REVISION\s\+OFF\s*)\s*$' cmake/Version.cmake >/dev/null 2>&1 && echo 1 || echo 0)" >> $GITHUB_ENV | |
- name: Get release version | |
run: echo "release_version=$(git describe --tags --exact-match ${GITHUB_SHA} 2>/dev/null | head -1)" >> $GITHUB_ENV | |
- name: Show release version | |
if: env.release_version != '' | |
run: echo "Release version:" ${{env.release_version}} | |
- name: Show release assets | |
if: env.release_version != '' | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
run: hub release show -f "%as" ${{env.release_version}} | |
- name: Download artifacts | |
if: env.release_version != '' | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: SSH key setup | |
if: env.release_version != '' | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}} | |
key: ${{secrets.SSH_KEY}} | |
- name: Add artifacts to release | |
if: env.is_release == '1' && env.release_version != '' | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
run: | | |
echo "Release version: ${{env.release_version}}" | |
a_files=() | |
for i in $(find artifacts -type f); do | |
filename=$(basename $i) | |
existing_asset=$(hub release show -f "%as" ${{env.release_version}} | tr -d '[:blank:]' | grep ".*/${filename}\$" 2>/dev/null || true) | |
if [ "${existing_asset}" = "" ]; then | |
echo "Adding file: ${filename}" | |
if [ "${file_list}" = "" ]; then | |
file_list="$i" | |
else | |
file_list="${file_list} $i" | |
fi | |
a_files+=("-a" "${i}") | |
else | |
echo "Skipping existing file: ${filename}" | |
fi | |
done | |
if ! [ "${file_list}" = "" ]; then | |
echo "Uploading files: ${file_list}" | |
rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var ${file_list} ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.RELEASES_PATH}}/ | |
fi | |
a_file_list="${a_files[@]}" | |
if ! [ "${a_file_list}" = "" ]; then | |
echo "Adding files to GitHub release: ${file_list}" | |
hub release edit -m "Strawberry ${{env.release_version}}" ${a_file_list} "${{env.release_version}}" | |
fi |