mirror of
https://github.com/strawberrymusicplayer/strawberry
synced 2024-12-14 09:44:51 +01:00
1770 lines
69 KiB
YAML
1770 lines
69 KiB
YAML
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: [ '5', '6' ]
|
|
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 == '5'
|
|
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 == '6'
|
|
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@v4
|
|
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 -DQT_VERSION_MAJOR=${{matrix.qt_version}}
|
|
- 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 == '6'
|
|
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: Update repositories
|
|
run: dnf -y update
|
|
- name: Fix dnf
|
|
run: |
|
|
if [ -f "/usr/bin/dnf5" ] && ! [ -f "/usr/bin/dnf" ]; then
|
|
ln -s /usr/bin/dnf5 /usr/bin/dnf
|
|
fi
|
|
- name: Upgrade packages
|
|
run: dnf -y upgrade
|
|
- name: Install dependencies
|
|
run: >
|
|
dnf -y install
|
|
@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: Checkout
|
|
uses: actions/checkout@v4
|
|
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@v4
|
|
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@v4
|
|
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@v4
|
|
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', '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@v4
|
|
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', '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@v4
|
|
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@v6
|
|
with:
|
|
gpg_private_key: ${{secrets.UBUNTU_PPA_GPG_PRIVATE_KEY}}
|
|
- name: dpkg-buildpackage
|
|
run: dpkg-buildpackage -S -d -k573D197B5EA20EDF
|
|
- 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 Unstable PPA
|
|
if: env.is_release != '1' && env.release_version == ''
|
|
run: dput ppa:jonaski/strawberry-unstable ../*_source.changes
|
|
- name: Upload Stable PPA
|
|
if: env.is_release == '1' && env.release_version != ''
|
|
run: dput ppa:jonaski/strawberry ../*_source.changes
|
|
|
|
|
|
build-macos:
|
|
name: Build macOS
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
runner: [ 'macos-11', 'macos-arm64' ]
|
|
buildtype: [ 'release' ]
|
|
|
|
runs-on: ${{ matrix.runner }}
|
|
|
|
steps:
|
|
|
|
- name: Set arch
|
|
shell: bash
|
|
run: echo "arch=$(uname -m)" >> $GITHUB_ENV
|
|
|
|
- name: Set buildtype
|
|
run: echo "buildtype=$(echo ${{matrix.buildtype}} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
|
|
|
|
- name: Set cmake buildtype
|
|
run: echo "cmake_buildtype=$(echo ${{env.buildtype}} | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')" >> $GITHUB_ENV
|
|
|
|
- name: Uninstall homebrew
|
|
if: matrix.runner == 'macos-11'
|
|
run: |
|
|
curl -sfLO https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh
|
|
chmod +x ./uninstall.sh
|
|
sudo ./uninstall.sh --force
|
|
rm -f uninstall.sh
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Download macOS dependencies
|
|
run: curl -f -O -L https://github.com/strawberrymusicplayer/strawberry-macos-dependencies/releases/latest/download/strawberry-macos-${{env.arch}}-${{env.buildtype}}.tar.xz
|
|
|
|
- name: Extract macOS dependencies
|
|
run: sudo tar -C / -xf strawberry-macos-${{env.arch}}-${{env.buildtype}}.tar.xz
|
|
|
|
- name: Set prefix path
|
|
run: echo "prefix_path=/opt/strawberry_macos_${{env.arch}}_${{env.buildtype}}" >> $GITHUB_ENV
|
|
|
|
- name: Update PATH
|
|
run: echo "${{env.prefix_path}}/bin" >> $GITHUB_PATH
|
|
|
|
- name: Change rpath for lconvert
|
|
run: sudo install_name_tool -change @rpath/QtCore.framework/Versions/A/QtCore /opt/strawberry_macos_${{env.arch}}_release/lib/QtCore.framework/QtCore /opt/strawberry_macos_${{env.arch}}_release/bin/lconvert
|
|
|
|
- name: Create Build Environment
|
|
run: cmake -E make_directory build
|
|
|
|
- name: Configure CMake
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
PKG_CONFIG_PATH: ${{env.prefix_path}}/lib/pkgconfig
|
|
LDFLAGS: -L${{env.prefix_path}}/lib -Wl,-rpath,${{env.prefix_path}}/lib
|
|
run: >
|
|
cmake
|
|
--log-level="DEBUG"
|
|
-S .
|
|
-B build
|
|
-DCMAKE_BUILD_TYPE="${{env.cmake_buildtype}}"
|
|
-DCMAKE_PREFIX_PATH="${{env.prefix_path}}/lib/cmake"
|
|
-DBUILD_WITH_QT6=ON
|
|
-DBUILD_WERROR=OFF
|
|
-DUSE_BUNDLE=ON
|
|
-DENABLE_DBUS=OFF
|
|
-DICU_ROOT="${{env.prefix_path}}"
|
|
-DFFTW3_DIR="${{env.prefix_path}}"
|
|
-DCREATEDMG_SKIP_JENKINS=$(test "${{matrix.runner}}" = "macos-arm64" && echo "ON" || echo "OFF")
|
|
|
|
- name: Build
|
|
run: cmake --build build --config Release --parallel 4
|
|
|
|
- name: Install
|
|
working-directory: build
|
|
run: make install
|
|
|
|
- name: Manually copy files not handled by macdeployqt
|
|
working-directory: build
|
|
run: |
|
|
mkdir -p strawberry.app/Contents/Frameworks/
|
|
cp ${{env.prefix_path}}/lib/libsoup-3.0.0.dylib strawberry.app/Contents/Frameworks/
|
|
|
|
- name: Deploy
|
|
env:
|
|
GIO_EXTRA_MODULES: ${{env.prefix_path}}/lib/gio/modules
|
|
GST_PLUGIN_SCANNER: ${{env.prefix_path}}/libexec/gstreamer-1.0/gst-plugin-scanner
|
|
GST_PLUGIN_PATH: ${{env.prefix_path}}/lib/gstreamer-1.0
|
|
working-directory: build
|
|
run: make deploy
|
|
|
|
- name: Deploy check
|
|
working-directory: build
|
|
run: make deploycheck
|
|
|
|
- name: Create DMG
|
|
working-directory: build
|
|
run: make dmg
|
|
|
|
- name: SSH key setup
|
|
if: matrix.runner == 'macos-11' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos')
|
|
uses: shimataro/ssh-key-action@v2
|
|
with:
|
|
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}}
|
|
key: ${{ secrets.SSH_KEY }}
|
|
|
|
- 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: Set Upload path
|
|
run: |
|
|
if [ "${{env.is_release}}" = "1" ] && ! [ "${{env.release_version}}" = "" ]; then
|
|
echo "upload_path=${{secrets.DOWNLOADS_PATH}}/stable_releases/macos" >> $GITHUB_ENV
|
|
else
|
|
echo "upload_path=${{secrets.DOWNLOADS_PATH}}/development_releases/macos" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Create server path
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
|
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{env.upload_path}}
|
|
|
|
- name: rsync
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
|
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var build/*.dmg ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{env.upload_path}}/
|
|
|
|
|
|
build-macos-homebrew:
|
|
name: Build macOS Homebrew
|
|
if: false
|
|
runs-on: macos-11
|
|
steps:
|
|
|
|
- name: Remove installed brew packages
|
|
run: brew uninstall $(brew list)
|
|
|
|
- name: Update packages
|
|
run: brew update
|
|
|
|
- name: Upgrade packages
|
|
run: brew upgrade || true
|
|
|
|
- name: brew tap
|
|
run: brew tap homebrew/core
|
|
|
|
- name: Install packages
|
|
run: brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c rsync glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc libffi openssl sqlite fftw libmtp libplist libxml2 libsoup libogg libvorbis flac wavpack opus speex mpg123 lame twolame taglib chromaprint libebur128 libbs2b libcdio libopenmpt faad2 faac fdk-aac musepack game-music-emu qt6 || true
|
|
|
|
- name: Use modified gstreamer plugin formulas
|
|
run: |
|
|
wget https://files.strawberrymusicplayer.org/patches/gstreamer.rb
|
|
wget https://files.strawberrymusicplayer.org/patches/gst-plugins-base.rb
|
|
wget https://files.strawberrymusicplayer.org/patches/gst-plugins-good.rb
|
|
wget https://files.strawberrymusicplayer.org/patches/gst-plugins-bad.rb
|
|
wget https://files.strawberrymusicplayer.org/patches/gst-plugins-ugly.rb
|
|
wget https://files.strawberrymusicplayer.org/patches/gst-libav.rb
|
|
mv gstreamer.rb gst-plugins-{base,good,bad,ugly}.rb gst-libav.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/g/
|
|
|
|
- name: Build and install gstreamer
|
|
env:
|
|
HOMEBREW_NO_INSTALL_FROM_API: 1
|
|
run: brew reinstall --build-from-source gstreamer
|
|
|
|
- name: Build and install gst-plugins-base
|
|
env:
|
|
HOMEBREW_NO_INSTALL_FROM_API: 1
|
|
run: brew reinstall --build-from-source gst-plugins-base
|
|
|
|
- name: Build and install gst-plugins-good
|
|
env:
|
|
HOMEBREW_NO_INSTALL_FROM_API: 1
|
|
run: brew reinstall --build-from-source gst-plugins-good
|
|
|
|
- name: Build and install gst-plugins-bad
|
|
env:
|
|
HOMEBREW_NO_INSTALL_FROM_API: 1
|
|
run: brew reinstall --build-from-source gst-plugins-bad
|
|
|
|
- name: Build and install gst-plugins-ugly
|
|
env:
|
|
HOMEBREW_NO_INSTALL_FROM_API: 1
|
|
run: brew reinstall --build-from-source gst-plugins-ugly
|
|
|
|
- name: Build and install gst-libav
|
|
env:
|
|
HOMEBREW_NO_INSTALL_FROM_API: 1
|
|
run: brew reinstall --build-from-source gst-libav
|
|
|
|
- name: Build libgpod
|
|
env:
|
|
PERL_MM_USE_DEFAULT: 1
|
|
run: |
|
|
git clone https://github.com/strawberrymusicplayer/strawberry-libgpod
|
|
cd strawberry-libgpod
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
|
make -j 4
|
|
sudo make install
|
|
|
|
- name: Replace relative library @loader_path paths - macdeployqt does not understand these.
|
|
run: |
|
|
for library in $(find -E /usr/local/Cellar -type f -regex '.*/lib/.*\.framework/Versions/A/Qt(Core|Concurrent|Network|Sql|Widgets|Gui|DBus)' -o -name '*.dylib'); do
|
|
library_paths=$(otool -L "${library}" | sed -n "s/^\t\(.*\) (compatibility version [0-9]*\.[0-9]*\.[0-9]*, current version [0-9]*\.[0-9]*\.[0-9]*)/\1/p")
|
|
for library_path in ${library_paths}; do
|
|
if ! [ "$(echo "${library_path}" | grep "^@loader_path" || true)" = "" ]; then
|
|
new_library_path=$(echo "${library_path}" | sed -E 's/@loader_path(\/\.\.)+\/opt/\/usr\/local\/opt/g')
|
|
if ! [ "${new_library_path}" = "" ] && ! [ "${new_library_path}" = "${library_path}" ] && [ -e "${new_library_path}" ]; then
|
|
sudo install_name_tool -change "${library_path}" "${new_library_path}" "${library}"
|
|
else
|
|
echo "${library} points to ${library_path}, could not resolve to absolute path."
|
|
fi
|
|
fi
|
|
done
|
|
done
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Create Build Environment
|
|
run: cmake -E make_directory build
|
|
|
|
- name: Configure CMake
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
PKG_CONFIG_PATH: /usr/local/lib/pkgconfig
|
|
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_WERROR=OFF -DUSE_BUNDLE=ON -DCMAKE_PREFIX_PATH=/usr/local/opt/qt6/lib/cmake -DICU_ROOT=/usr/local/opt/icu4c -DPROTOBUF_INCLUDE_DIRS=/usr/local/include
|
|
|
|
- name: Build
|
|
run: cmake --build build --config Release --parallel 4
|
|
|
|
- name: Install
|
|
working-directory: build
|
|
run: make install
|
|
|
|
- name: Remove problematic files
|
|
run: |
|
|
sudo rm -rf /usr/local/opt/qt6/share/qt/plugins/virtualkeyboard /usr/local/opt/qt6/share/qt/plugins/platforminputcontexts
|
|
sudo rm -f /usr/local/Cellar/qt/*/share/qt/plugins/imageformats/libqpdf.dylib
|
|
|
|
- name: Manually copy files not handled by macdeployqt
|
|
working-directory: build
|
|
run: |
|
|
mkdir -p strawberry.app/Contents/Frameworks/
|
|
cp /usr/local/lib/{libsoup-3.0.0.dylib,libswresample.4.dylib,libswscale.7.dylib,libpostproc.57.dylib} strawberry.app/Contents/Frameworks/
|
|
|
|
- name: Deploy
|
|
env:
|
|
GIO_EXTRA_MODULES: /usr/local/lib/gio/modules
|
|
GST_PLUGIN_SCANNER: /usr/local/opt/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner
|
|
GST_PLUGIN_PATH: /usr/local/lib/gstreamer-1.0
|
|
working-directory: build
|
|
run: make deploy
|
|
|
|
- name: Deploy check
|
|
working-directory: build
|
|
run: make deploycheck
|
|
|
|
- name: Create DMG
|
|
working-directory: build
|
|
run: make dmg
|
|
|
|
|
|
build-macos-macports:
|
|
name: Build macOS Macports
|
|
if: false
|
|
runs-on: macos-11
|
|
steps:
|
|
- name: Install macports
|
|
run: |
|
|
macports_version=$(wget -q -O- 'https://github.com/macports/macports-base' | sed -n 's,.*releases/tag/\([^"&;]*\)".*,\1,p' | sed 's/^v//g' | sort -V | tail -1)
|
|
wget https://github.com/macports/macports-base/releases/download/v${macports_version}/MacPorts-${macports_version}-11-BigSur.pkg
|
|
sudo installer -pkg ./MacPorts-${macports_version}-11-BigSur.pkg -target /
|
|
|
|
- name: Uninstall homebrew
|
|
run: |
|
|
curl -sLO https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh
|
|
chmod +x ./uninstall.sh
|
|
sudo ./uninstall.sh --force
|
|
|
|
- name: Update macports
|
|
run: sudo /opt/local/bin/port -v selfupdate
|
|
|
|
- name: Install packages
|
|
run: sudo /opt/local/bin/port -N -p install wget gettext glib2 pkgconfig cmake boost protobuf-cpp sqlite3 chromaprint libebur128 fftw taglib libcdio libmtp
|
|
|
|
- name: Install gstreamer
|
|
run: sudo /opt/local/bin/port -N -p install gstreamer1 gstreamer1-gst-plugins-base gstreamer1-gst-plugins-good gstreamer1-gst-plugins-bad gstreamer1-gst-plugins-ugly gstreamer1-gst-libav
|
|
|
|
- name: Install gst-plugins-bad
|
|
run: sudo /opt/local/bin/port -N -p install gstreamer1-gst-plugins-bad +faac
|
|
|
|
- name: Install qt6-qtbase
|
|
run: sudo /opt/local/bin/port -N -p install qt6-qtbase
|
|
|
|
- name: Install qt6-qttools
|
|
run: sudo /opt/local/bin/port -N -p install qt6-qttools || true
|
|
|
|
- name: Install qt6-sqlite-plugin
|
|
run: sudo /opt/local/bin/port -N -p install qt6-sqlite-plugin
|
|
|
|
- name: Install libgpod
|
|
run: sudo /opt/local/bin/port -N -p install libgpod || true
|
|
|
|
- name: Add /opt/local/bin to PATH
|
|
run: echo "/opt/local/bin" >> $GITHUB_PATH
|
|
|
|
- name: Install create-dmg
|
|
shell: bash
|
|
run: |
|
|
mkdir -p ~/build
|
|
cd ~/build
|
|
git clone https://github.com/create-dmg/create-dmg
|
|
cd create-dmg
|
|
sudo make install
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Create Build Environment
|
|
run: /opt/local/bin/cmake -E make_directory build
|
|
|
|
- name: Configure CMake
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
PKG_CONFIG_PATH: /opt/local/lib/pkgconfig
|
|
run: /opt/local/libexec/qt6/bin/qt-cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DBUILD_WERROR=OFF -DUSE_BUNDLE=ON -DENABLE_DBUS=OFF
|
|
|
|
- name: Build
|
|
run: /opt/local/bin/cmake --build build --config Release --parallel 4
|
|
|
|
- name: Install
|
|
working-directory: build
|
|
run: make install
|
|
|
|
- name: Deploy
|
|
env:
|
|
GIO_EXTRA_MODULES: /opt/local/lib/gio/modules
|
|
GST_PLUGIN_SCANNER: /opt/local/libexec/gstreamer-1.0/gst-plugin-scanner
|
|
GST_PLUGIN_PATH: /opt/local/lib/gstreamer-1.0
|
|
working-directory: build
|
|
run: make deploy
|
|
|
|
- name: Deploy check
|
|
working-directory: build
|
|
run: make deploycheck
|
|
|
|
- name: Create DMG
|
|
working-directory: build
|
|
run: make dmg
|
|
|
|
|
|
build-windows-mingw:
|
|
name: Build Windows MinGW
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: [ 'i686', 'x86_64' ]
|
|
buildtype: [ 'debug', 'release' ]
|
|
container:
|
|
image: jonaski/strawberry-mxe-${{matrix.arch}}-${{matrix.buildtype}}
|
|
steps:
|
|
|
|
- name: Set cmake buildtype
|
|
shell: bash
|
|
run: echo "cmake_buildtype=$(echo ${{matrix.buildtype}} | sed 's/.*/\u&/')" >> $GITHUB_ENV
|
|
|
|
- name: Install rsync
|
|
run: zypper -n --gpg-auto-import-keys in rsync
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
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: 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="${{env.cmake_buildtype}}"
|
|
-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=$(test "${{matrix.buildtype}}" = "debug" && echo "ON" || echo "OFF")
|
|
-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 "${{env.cmake_buildtype}}" --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.buildtype == '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.buildtype == '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.buildtype == '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: List files
|
|
working-directory: build
|
|
run: ls
|
|
|
|
- name: Check that all files are included in nsi
|
|
shell: bash
|
|
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
|
|
echo "File ${i} is missing File entry."
|
|
fi
|
|
nsi_file_delete_entry=$(grep -i "^\s\+Delete\s\+\"\$INSTDIR\\\\$i\"$" strawberry.nsi || true)
|
|
if [ "${nsi_file_delete_entry}" = "" ] ; then
|
|
echo "File ${i} is missing Delete entry."
|
|
fi
|
|
if [ "${nsi_file_entry}" = "" ] || [ "${nsi_file_delete_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' ]
|
|
buildtype: [ 'debug', 'release' ]
|
|
steps:
|
|
|
|
- name: Set prefix path
|
|
shell: bash
|
|
run: |
|
|
echo "prefix_path_backslash=c:\strawberry_msvc_${{matrix.arch}}_${{matrix.buildtype}}" >> $GITHUB_ENV
|
|
echo "prefix_path_forwardslash=c:/strawberry_msvc_${{matrix.arch}}_${{matrix.buildtype}}" >> $GITHUB_ENV
|
|
echo "prefix_path_unix=/c/strawberry_msvc_${{matrix.arch}}_${{matrix.buildtype}}" >> $GITHUB_ENV
|
|
|
|
- name: Set cmake buildtype
|
|
shell: bash
|
|
run: echo "cmake_buildtype=$(echo ${{matrix.buildtype}} | sed 's/.*/\u&/')" >> $GITHUB_ENV
|
|
|
|
- name: Create downloads directory
|
|
shell: cmd
|
|
run: mkdir downloads
|
|
|
|
- name: Download Windows MSVC dependencies
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: curl -f -O -L https://github.com/strawberrymusicplayer/strawberry-msvc-dependencies/releases/latest/download/strawberry-msvc-${{matrix.arch}}-${{matrix.buildtype}}.tar.xz
|
|
|
|
- name: Extract Windows MSVC dependencies
|
|
shell: bash
|
|
working-directory: downloads
|
|
run: tar -C /c -xf strawberry-msvc-${{matrix.arch}}-${{matrix.buildtype}}.tar.xz
|
|
|
|
- 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/" -iname 'icu*.lib' -delete
|
|
find "/c/program files (x86)/windows kits/" -iname 'icu*.h' -delete
|
|
|
|
- name: Download NSIS LockedList plugin
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: curl -f -O -L https://nsis.sourceforge.io/mediawiki/images/d/d3/LockedList.zip
|
|
|
|
- name: Extract NSIS LockedList plugin
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: 7z x LockedList.zip
|
|
|
|
- name: Download NSIS Registry plugin
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: curl -f -O -L https://nsis.sourceforge.io/mediawiki/images/4/47/Registry.zip
|
|
|
|
- name: Extract NSIS Registry plugin
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: 7z x Registry.zip
|
|
|
|
- name: Download NSIS Inetc plugin
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: curl -f -O -L https://nsis.sourceforge.io/mediawiki/images/c/c9/Inetc.zip
|
|
|
|
- name: Extract NSIS Inetc plugin
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: 7z x Inetc.zip
|
|
|
|
- name: Install NSIS plugins
|
|
shell: cmd
|
|
working-directory: downloads
|
|
run: |
|
|
copy "Plugins\LockedList64.dll" "C:\Program Files (x86)\NSIS\Plugins\"
|
|
copy "Plugins\x86-unicode\LockedList.dll" "C:\Program Files (x86)\NSIS\Plugins\x86-unicode\"
|
|
copy "Desktop\Plugin\registry.dll" "C:\Program Files (x86)\NSIS\Plugins\"
|
|
copy "Desktop\Plugin\registry.dll" "C:\Program Files (x86)\NSIS\Plugins\x86-unicode\"
|
|
copy "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@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Add safe git directory
|
|
shell: bash
|
|
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
|
|
|
|
- name: Create Build Environment
|
|
shell: cmd
|
|
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
|
|
shell: cmd
|
|
run: >
|
|
cmake
|
|
-S .
|
|
-B build
|
|
-G "Ninja"
|
|
-DCMAKE_BUILD_TYPE="${{env.cmake_buildtype}}"
|
|
-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
|
|
shell: cmd
|
|
env:
|
|
CL: "/MP"
|
|
run: cmake --build build --config "${{env.cmake_buildtype}}" --parallel 4
|
|
|
|
- name: Copy extra binaries
|
|
shell: cmd
|
|
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
|
|
shell: cmd
|
|
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
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ${{env.prefix_path_backslash}}\lib\gio\modules\*.dll .\gio-modules\
|
|
|
|
- name: Copy Qt platform plugins
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ${{env.prefix_path_backslash}}\plugins\platforms\qwindows*.dll .\platforms\
|
|
|
|
- name: Copy Qt styles
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ${{env.prefix_path_backslash}}\plugins\styles\qwindowsvistastyle*.dll .\styles\
|
|
|
|
- name: Copy Qt TLS plugins
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ${{env.prefix_path_backslash}}\plugins\tls\*.dll .\tls\
|
|
|
|
- name: Copy Qt SQL drivers
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ${{env.prefix_path_backslash}}\plugins\sqldrivers\qsqlite*.dll .\sqldrivers\
|
|
|
|
- name: Copy Qt imageformats plugins
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ${{env.prefix_path_backslash}}\plugins\imageformats\*.dll .\imageformats\
|
|
|
|
- name: Copy gstreamer plugins
|
|
shell: cmd
|
|
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 -f -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
|
|
shell: cmd
|
|
working-directory: build
|
|
run: |
|
|
copy ..\dist\windows\*.nsi .
|
|
copy ..\dist\windows\*.nsh .
|
|
copy ..\dist\windows\*.ico .
|
|
|
|
- name: Copy COPYING license file
|
|
shell: cmd
|
|
working-directory: build
|
|
run: copy ..\COPYING .
|
|
|
|
- name: List files
|
|
shell: cmd
|
|
working-directory: build
|
|
run: dir
|
|
|
|
- name: Check that all files are included in nsi
|
|
shell: bash
|
|
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
|
|
echo "File ${i} is missing File entry."
|
|
fi
|
|
nsi_file_delete_entry=$(grep -i "^\s\+Delete\s\+\"\$INSTDIR\\\\$i\"$" strawberry.nsi || true)
|
|
if [ "${nsi_file_delete_entry}" = "" ] ; then
|
|
echo "File ${i} is missing Delete entry."
|
|
fi
|
|
if [ "${nsi_file_entry}" = "" ] || [ "${nsi_file_delete_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
|
|
shell: cmd
|
|
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-windows-mingw
|
|
- build-windows-msvc
|
|
steps:
|
|
- name: Install rsync
|
|
run: sudo apt install -y rsync
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
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}}"
|
|
filenames=()
|
|
files=()
|
|
a_files=()
|
|
for i in $(find artifacts -type f); do
|
|
filename=$(basename $i)
|
|
if [[ ${filenames[@]} =~ ${filename} ]]; then
|
|
echo "Skipping duplicate file: ${filename}"
|
|
continue
|
|
fi
|
|
filenames+=("${filename}")
|
|
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}"
|
|
files+=("$i")
|
|
a_files+=("-a" "${i}")
|
|
else
|
|
echo "Release already has file: ${filename}"
|
|
fi
|
|
done
|
|
files_list="${files[@]}"
|
|
a_files_list="${a_files[@]}"
|
|
if ! [ "${files_list}" = "" ]; then
|
|
echo "Uploading files: ${files_list}"
|
|
rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var ${files_list} ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.RELEASES_PATH}}/
|
|
fi
|
|
if ! [ "${a_files_list}" = "" ]; then
|
|
echo "Adding files to GitHub release: ${files_list}"
|
|
hub release edit -m "Strawberry ${{env.release_version}}" ${a_files_list} "${{env.release_version}}"
|
|
fi
|