Clementine-audio-player-Mac.../.github/workflows/all.yml

869 lines
23 KiB
YAML

name: all
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
lint:
name: Lint
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: clang-format
uses: clementine-player/clang-format-lint-action@master
with:
style: "{BasedOnStyle: Google, DerivePointerBinding: false, Standard: Cpp11}"
source: ./src
clangFormatVersion: 9
push_translations:
name: Push translation sources to Transifex
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-18.04
container:
image: ubuntu:bionic
steps:
- name: Install dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: >
apt-get update && apt-get install -y
build-essential
cmake
gettext
git
libasound2-dev
libboost-dev
libcdio-dev
libchromaprint-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libglib2.0-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libprotobuf-dev
libpulse-dev
libqt5x11extras5-dev
libsqlite3-dev
libtag1-dev
pkg-config
protobuf-compiler
python-pip
qtbase5-dev
qttools5-dev-tools
qttools5-dev
libsparsehash-dev
ssh
- name: Install tx
run: pip install transifex-client==0.13.9
- name: Checkout
uses: actions/checkout@v1.2.0
- name: tx init
env:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
run: tx init --no-interactive --force
- name: cmake
working-directory: bin
run: cmake ..
- name: make
working-directory: bin
run: make -j2
- name: tx config
env:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
run: tx config mapping --execute -r clementine.clementineplayer -f src/translations/translations.pot -s en -t PO --expression 'src/translations/<lang>.po'
- name: tx push
env:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
run: tx push -s
create_release:
name: Create GitHub Release
runs-on: ubuntu-18.04
if: github.ref == 'refs/heads/master'
needs:
- build_bionic_64
- build_buster_64
- build_eoan_64
- build_fedora_31
- build_fedora_32
- build_focal_64
- build_mac
- build_mingw
- build_source
- build_stretch_64
steps:
- uses: actions/checkout@v1.2.0
- uses: actions/download-artifact@v2
with:
path: release_artifacts
- name: Create draft pre-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
VERSION=$(echo release_artifacts/**/*.tar.xz | sed -e 's/.*clementine-\(.*\).tar.xz/\1/')
echo "Version: ${VERSION}"
assets=()
for asset in $(find release_artifacts -type f); do
echo "Adding asset: ${asset}"
assets+=("-a" "$asset")
done
hub release create -p "${assets[@]}" -m "$VERSION" -t "$GITHUB_SHA" "$VERSION"
build_source:
name: Build source tarball
runs-on: ubuntu-18.04
container:
image: ubuntu:eoan
steps:
- name: Install dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: >
apt-get update && apt-get install -y
cmake
fakeroot
gettext
git
libasound2-dev
libboost-dev
libboost-serialization-dev
libcdio-cdda2
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libplist-dev
libprotobuf-dev
libpulse-dev
libqca-qt5-2-dev
libqca-qt5-2-plugins
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
libusbmuxd-dev
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: cmake ..
- name: Build source tarball
working-directory: bin
run: ../dist/maketarball.sh
- uses: actions/upload-artifact@v2
with:
name: release_source
path: bin/clementine-*.tar.xz
build_fedora_32:
name: Build Fedora 32 RPM
runs-on: ubuntu-18.04
container:
image: fedora:32
env:
RPM_BUILD_NCPUS: "2"
steps:
- name: Install dependencies
run: >
dnf install --assumeyes
@development-tools
alsa-lib-devel
boost-devel
cmake
cryptopp-devel
dbus-devel
desktop-file-utils
fftw-devel
gcc-c++
gettext
git
glew-devel
gstreamer1-devel
gstreamer1-plugins-base-devel
hicolor-icon-theme
libappstream-glib
libcdio-devel
libchromaprint-devel
libgpod-devel
liblastfm-qt5-devel
libmtp-devel
libnotify-devel
openssh
pkgconfig
protobuf-compiler
protobuf-devel
pulseaudio-libs-devel
qca-qt5-devel
qca-qt5-ossl
qt5-devel
rpmdevtools
sha2-devel
sparsehash-devel
sqlite-devel
taglib-devel
tar
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: cmake ..
- name: Build source tarball
working-directory: bin
run: ../dist/maketarball.sh
- name: Create rpmbuild directory
run: mkdir -p ~/rpmbuild/SOURCES
- name: Move source tarball
working-directory: bin
run: mv clementine-*.tar.xz ~/rpmbuild/SOURCES
- name: Build RPM
working-directory: bin
run: rpmbuild -ba ../dist/clementine.spec
- uses: actions/upload-artifact@v2
with:
name: release_fedora_32
path: ~/rpmbuild/RPMS/*/clementine-*.rpm
build_fedora_31:
name: Build Fedora 31 RPM
runs-on: ubuntu-18.04
container:
image: fedora:31
env:
RPM_BUILD_NCPUS: "2"
steps:
- name: Install dependencies
run: >
dnf install --assumeyes
@development-tools
alsa-lib-devel
boost-devel
cmake
cryptopp-devel
dbus-devel
desktop-file-utils
fftw-devel
gcc-c++
gettext
git
glew-devel
gstreamer1-devel
gstreamer1-plugins-base-devel
hicolor-icon-theme
libappstream-glib
libcdio-devel
libchromaprint-devel
libgpod-devel
liblastfm-qt5-devel
libmtp-devel
libnotify-devel
openssh
pkgconfig
protobuf-compiler
protobuf-devel
pulseaudio-libs-devel
qca-qt5-devel
qca-qt5-ossl
qt5-devel
rpmdevtools
sha2-devel
sparsehash-devel
sqlite-devel
taglib-devel
tar
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: cmake ..
- name: Build source tarball
working-directory: bin
run: ../dist/maketarball.sh
- name: Create rpmbuild directory
run: mkdir -p ~/rpmbuild/SOURCES
- name: Move source tarball
working-directory: bin
run: mv clementine-*.tar.xz ~/rpmbuild/SOURCES
- name: Build RPM
working-directory: bin
run: rpmbuild -ba ../dist/clementine.spec
- uses: actions/upload-artifact@v2
with:
name: release_fedora_31
path: ~/rpmbuild/RPMS/*/clementine-*.rpm
build_mingw:
name: Build Windows Installer
runs-on: ubuntu-18.04
container:
image: eu.gcr.io/clementine-data/mingw-w64:latest
env:
PKG_CONFIG_PATH: /target/lib/pkgconfig
steps:
- name: Fix liblastfm includes
run: ln -s /target/include/lastfm /target/include/lastfm5
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: >
cmake ..
-DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake
-DCMAKE_BUILD_TYPE=Release
- name: make
working-directory: bin
run: make -j2
- name: Copy output exes
working-directory: dist/windows
run: cp ../../bin/*.exe .
- name: Copy base runtime DLLs
run: >
cp
/usr/lib/gcc/i686-w64-mingw32/*-posix/libgcc_s_sjlj-1.dll
/usr/lib/gcc/i686-w64-mingw32/*-posix/libstdc++-6.dll
/usr/i686-w64-mingw32/lib/libwinpthread-1.dll
dist/windows
- name: Copy DLL depdendencies
working-directory: /target/bin
run: >
cp
glew32.dll
libcdio-19.dll
libchromaprint.dll
libcrypto-1_1.dll
libfaad-2.dll
libffi-7.dll
libfftw3-3.dll
libFLAC-8.dll
libgcrypt-20.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgmp-10.dll
libgnutls-30.dll
libgobject-2.0-0.dll
libgpg-error-0.dll
libgpod.dll
libgstapp-1.0-0.dll
libgstaudio-1.0-0.dll
libgstbase-1.0-0.dll
libgstfft-1.0-0.dll
libgstnet-1.0-0.dll
libgstpbutils-1.0-0.dll
libgstreamer-1.0-0.dll
libgstriff-1.0-0.dll
libgstrtp-1.0-0.dll
libgstrtsp-1.0-0.dll
libgstsdp-1.0-0.dll
libgsttag-1.0-0.dll
libgstvideo-1.0-0.dll
libgthread-2.0-0.dll
libhogweed-6.dll
libiconv-2.dll
libintl-8.dll
liblastfm5.dll
libmms-0.dll
libmp3lame-0.dll
libnettle-8.dll
libogg-0.dll
liboil-0.3-0.dll
libopus-0.dll
liborc-0.4-0.dll
liborc-test-0.4-0.dll
libp11-kit-0.dll
libpcre-1.dll
libplist.dll
libprotobuf-17.dll
libpsl-5.dll
libssl-1_1.dll
libsoup-2.4-1.dll
libspeex-1.dll
libspotify.dll
libsqlite3-0.dll
libtag.dll
libtasn1-6.dll
libunistring-2.dll
libvorbis-0.dll
libvorbisenc-2.dll
libxml2-2.dll
libwavpack-1.dll
Qt5Concurrent.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Network.dll
Qt5OpenGL.dll
Qt5Sql.dll
Qt5Svg.dll
Qt5Widgets.dll
Qt5WinExtras.dll
Qt5Xml.dll
zlib1.dll
${GITHUB_WORKSPACE}/dist/windows
- run: mkdir dist/windows/imageformats
- name: Copy Qt imageformat plugin DLLs
working-directory: /target/plugins
run: >
cp
imageformats/qgif.dll
imageformats/qjpeg.dll
imageformats/qsvg.dll
${GITHUB_WORKSPACE}/dist/windows/imageformats
- run: mkdir dist/windows/platforms
- name: Copy Qt platforms plugin DLLs
working-directory: /target/plugins
run: >
cp
platforms/qwindows.dll
${GITHUB_WORKSPACE}/dist/windows/platforms
- run: mkdir dist/windows/styles
- name: Copy Qt style plugin DLLs
working-directory: /target/plugins
run: >
cp
styles/qwindowsvistastyle.dll
${GITHUB_WORKSPACE}/dist/windows/styles
- run: mkdir dist/windows/gio-modules
- name: Copy GIO modules
run: cp /target/lib/gio/modules/libgiognutls.dll dist/windows/gio-modules
- run: mkdir dist/windows/gstreamer-plugins
- name: Copy gstreamer plugins
working-directory: /target/lib/gstreamer-1.0
run: >
cp
libgstaiff.dll
libgstapetag.dll
libgstapp.dll
libgstasf.dll
libgstasfmux.dll
libgstaudioconvert.dll
libgstaudiofx.dll
libgstaudioparsers.dll
libgstaudioresample.dll
libgstaudiotestsrc.dll
libgstautodetect.dll
libgstcdio.dll
libgstcoreelements.dll
libgstdirectsound.dll
libgstequalizer.dll
libgstfaad.dll
libgstflac.dll
libgstgdp.dll
libgstgio.dll
libgsticydemux.dll
libgstid3demux.dll
libgstid3tag.dll
libgstisomp4.dll
libgstlame.dll
libgstlibav.dll
libgstmms.dll
libgstogg.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
libgsttypefindfunctions.dll
libgstudp.dll
libgstvolume.dll
libgstvorbis.dll
libgstwavpack.dll
libgstwavparse.dll
${GITHUB_WORKSPACE}/dist/windows/gstreamer-plugins
- name: Build Windows installer
working-directory: dist/windows
run: makensis clementine.nsi
- uses: actions/upload-artifact@v2
with:
name: release_mingw
path: dist/windows/ClementineSetup*.exe
build_stretch_64:
name: Build Debian Stretch 64-bit deb
runs-on: ubuntu-18.04
container:
image: debian:stretch
steps:
- name: Install dependencies
run: >
apt-get update && apt-get install -y
build-essential
cmake
gettext
git
libasound2-dev
libboost-dev
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libglib2.0-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libprotobuf-dev
libpulse-dev
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
pkg-config
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=amd64
-DDEB_DIST=stretch
-DFORCE_GIT_VERSION=
-DENABLE_SPOTIFY_BLOB=OFF
- name: make
working-directory: bin
run : make -j2 deb
- uses: actions/upload-artifact@v2
with:
name: release_stretch_64
path: bin/clementine_*.deb
build_bionic_64:
name: Build Ubuntu Bionic 64-bit deb
runs-on: ubuntu-18.04
container:
image: ubuntu:bionic
steps:
- name: Install dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: >
apt-get update && apt-get install -y
build-essential
cmake
gettext
git
libasound2-dev
libboost-dev
libcdio-dev
libchromaprint-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libglib2.0-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libprotobuf-dev
libpulse-dev
libqt5x11extras5-dev
libsqlite3-dev
libtag1-dev
pkg-config
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
libsparsehash-dev
ssh
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=amd64
-DDEB_DIST=bionic
-DFORCE_GIT_VERSION=
-DENABLE_SPOTIFY_BLOB=OFF
- name: make
working-directory: bin
run : make -j2 deb
- uses: actions/upload-artifact@v2
with:
name: release_bionic_64
path: bin/clementine_*.deb
build_buster_64:
name: Build Debian Buster 64-bit deb
runs-on: ubuntu-18.04
container:
image: debian:buster
steps:
- name: Install dependencies
run: >
apt-get update && apt-get install -y
build-essential
cmake
gettext
git
libasound2-dev
libboost-dev
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libglib2.0-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libprotobuf-dev
libpulse-dev
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
pkg-config
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=amd64
-DDEB_DIST=buster
-DFORCE_GIT_VERSION=
-DENABLE_SPOTIFY_BLOB=OFF
- name: make
working-directory: bin
run : make -j2 deb
- uses: actions/upload-artifact@v2
with:
name: release_buster_64
path: bin/clementine_*.deb
build_eoan_64:
name: Build Ubuntu Eoan 64-bit deb
runs-on: ubuntu-18.04
container:
image: ubuntu:eoan
steps:
- name: Install dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: >
apt-get update && apt-get install -y
cmake
fakeroot
gettext
git
libasound2-dev
libboost-dev
libboost-serialization-dev
libcdio-cdda2
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libplist-dev
libprotobuf-dev
libpulse-dev
libqca-qt5-2-dev
libqca-qt5-2-plugins
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
libusbmuxd-dev
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=amd64
-DDEB_DIST=eoan
-DFORCE_GIT_VERSION=
-DENABLE_SPOTIFY_BLOB=OFF
- name: make
working-directory: bin
run : make -j2 deb
- uses: actions/upload-artifact@v2
with:
name: release_eoan_64
path: bin/clementine_*.deb
build_focal_64:
name: Build Ubuntu Focal 64-bit deb
runs-on: ubuntu-18.04
container:
image: ubuntu:focal
steps:
- name: Install dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: >
apt-get update && apt-get install -y
cmake
fakeroot
gettext
git
libasound2-dev
libboost-dev
libboost-serialization-dev
libcdio-cdda2
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libplist-dev
libprotobuf-dev
libpulse-dev
libqca-qt5-2-dev
libqca-qt5-2-plugins
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
libusbmuxd-dev
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
- uses: actions/checkout@v1.2.0
- name: cmake
working-directory: bin
run: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=amd64
-DDEB_DIST=focal
-DFORCE_GIT_VERSION=
-DENABLE_SPOTIFY_BLOB=OFF
- name: make
working-directory: bin
run : make -j2 deb
- uses: actions/upload-artifact@v2
with:
name: release_focal_64
path: bin/clementine_*.deb
build_mac:
name: Build Mac DMG
runs-on: macos-10.15
steps:
- name: Install dependencies
run: >
brew install
boost
chromaprint
cmake
fftw
glew
glib
google-sparsehash
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gstreamer
pkgconfig
protobuf
protobuf-c
qt
- name: Setup Tomahawk tap
run: brew tap tomahawk-player/homebrew-tomahawkqt5
- name: Install liblastfm
run: brew install tomahawk-player/homebrew-tomahawkqt5/liblastfm
- name: Fix liblastfm includes
run: ln -s /usr/local/include/lastfm /usr/local/include/lastfm5
- uses: actions/checkout@v1.2.0
- name: cmake
env:
PKG_CONFIG_PATH: /usr/local/lib/pkgconfig
Qt5_DIR: /usr/local/opt/qt5/lib/cmake/Qt5
Qt5LinguistTools_DIR: /usr/local/opt/qt5/lib/cmake/Qt5LinguistTools
GST_SCANNER_PATH: /usr/local/opt/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner
GST_PLUGIN_PATH: /usr/local/lib/gstreamer-1.0
working-directory: bin
run: >
cmake ..
-Wno-dev
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_OSX_ARCHITECTURES=x86_64
-DGETTEXT_MSGMERGE_EXECUTABLE=/usr/local/opt/gettext/bin/msgmerge
-DGETTEXT_MSGFMT_EXECUTABLE=/usr/local/opt/gettext/bin/msgfmt
-DGETTEXT_XGETTEXT_EXECUTABLE=/usr/local/opt/gettext/bin/xgettext
- name: make
working-directory: bin
run: make -j2
- name: Copy icon files and resources
working-directory: bin
run: make install
- name: Build DMG
working-directory: bin
run: make dmg
- uses: actions/upload-artifact@v2
with:
name: release_mac
path: bin/clementine-*.dmg