Package 000ea4f31eb7d91029052b3c261c7acc43273031 by @badaix #61
Workflow file for this run
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: Package | |
run-name: Package ${{ github.sha }} by @${{ github.actor }} | |
on: | |
workflow_dispatch: | |
env: | |
BOOST_VERSION: 1_84_0 | |
SNAPWEB_VERSION: v0.7.0 | |
jobs: | |
deb: | |
strategy: | |
fail-fast: false | |
matrix: | |
debian: | |
- bullseye | |
- bookworm | |
arch: | |
- amd64 | |
- armhf | |
- arm64 | |
include: | |
- arch: "amd64" | |
os: ubuntu-latest | |
image_prefix: "debian:" | |
- arch: "armhf" | |
os: self-hosted-rpi4 | |
image_prefix: "badaix/raspios-lite:" | |
- arch: "arm64" | |
os: self-hosted-rpi5 | |
image_prefix: "badaix/raspios-lite:" | |
runs-on: ${{ matrix.os }} | |
name: deb (${{ matrix.arch }}, ${{ matrix.debian }}) | |
timeout-minutes: 240 | |
container: | |
image: ${{matrix.image_prefix}}${{matrix.debian}} | |
steps: | |
- name: Get dependencies | |
run: apt-get update && apt-get install -yq wget debhelper build-essential cmake git rename libatomic1 libasound2-dev libsoxr-dev libvorbisidec-dev libvorbis-dev libflac-dev libopus-dev alsa-utils libpulse-dev libavahi-client-dev avahi-daemon libexpat1-dev python3 ccache unzip | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup environment | |
run: | | |
echo "PARENT_DIR=$(dirname $GITHUB_WORKSPACE)" >> $GITHUB_ENV | |
BOOST_DOT_VERSION=$(echo ${BOOST_VERSION} | sed 's/_/./g') | |
echo "BOOST_DOT_VERSION=$BOOST_DOT_VERSION" >> $GITHUB_ENV | |
echo "BOOST=boost_${BOOST_VERSION}" >> $GITHUB_ENV | |
ln -s extras/package/debian debian | |
- name: Create changelog | |
run: | | |
$GITHUB_WORKSPACE/debian/changelog_md2deb.py $GITHUB_WORKSPACE/changelog.md > $GITHUB_WORKSPACE/debian/changelog | |
cat $GITHUB_WORKSPACE/debian/changelog | |
- name: Clean up | |
run: rm -rf ${{env.PARENT_DIR}}/snap*_${{ matrix.arch }}.deb | |
- name: Cache boost | |
id: cache-boost | |
uses: actions/cache@v4 | |
with: | |
path: ${{env.BOOST}} | |
key: ${{env.BOOST}} | |
- name: Get boost | |
if: steps.cache-boost.outputs.cache-hit != 'true' | |
run: | | |
wget https://boostorg.jfrog.io/artifactory/main/release/${{env.BOOST_DOT_VERSION}}/source/${{env.BOOST}}.tar.bz2 | |
tar xjf ${{env.BOOST}}.tar.bz2 | |
- name: cache ccache | |
id: cache-ccache | |
uses: actions/cache@v4 | |
with: | |
# TODO: use environment variable $HOME/.ccache | |
path: /home/runner/.ccache | |
key: ${{ matrix.os }}-${{ matrix.debian }}-ccache-${{ github.sha }} | |
restore-keys: ${{ matrix.os }}-${{ matrix.debian }}-ccache- | |
- name: Get Snapweb | |
run: | | |
wget https://github.com/badaix/snapweb/releases/download/${SNAPWEB_VERSION}/snapweb.zip | |
unzip snapweb.zip -d snapweb | |
- name: Create deb package | |
env: | |
# TODO: use environment variable $HOME/.ccache | |
CCACHE_DIR: /home/runner/.ccache | |
run: | | |
fakeroot make -f debian/rules CMAKEFLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBOOST_ROOT=$GITHUB_WORKSPACE/${{env.BOOST}} -DCMAKE_BUILD_TYPE:STRING=Release -DREVISION=${{ github.sha }} -DBUILD_WITH_PULSE=OFF -DSNAPWEB_DIR:STRING=$GITHUB_WORKSPACE/snapweb" binary | |
rename 's/_${{ matrix.arch }}/_without-pulse_${{ matrix.arch }}/g' ../snapclient*_${{ matrix.arch }}.deb | |
fakeroot make -f debian/rules clean | |
fakeroot make -f debian/rules CMAKEFLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBOOST_ROOT=$GITHUB_WORKSPACE/${{env.BOOST}} -DCMAKE_BUILD_TYPE:STRING=Release -DREVISION=${{ github.sha }} -DSNAPWEB_DIR:STRING=$GITHUB_WORKSPACE/snapweb" binary | |
- name: Archive artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: snapcast_${{ matrix.arch }}-debian-${{matrix.debian}}-${{ github.sha }} | |
path: ${{env.PARENT_DIR}}/snap*_${{ matrix.arch }}.deb | |
# mac: | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# xcode: ['11'] | |
# runs-on: macos-latest | |
# name: mac (xcode ${{ matrix.xcode }}) | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v4 | |
# - name: Checkout Snapcast | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: badaix/snapcast | |
# path: src/snapcast | |
# ref: ${{ env.VERSION }} | |
# - name: Setup environment | |
# run: | | |
# BOOST_DOT_VERSION=$(echo ${BOOST_VERSION} | sed 's/_/./g') | |
# echo "BOOST_DOT_VERSION=$BOOST_DOT_VERSION" >> $GITHUB_ENV | |
# echo "BOOST=boost_${BOOST_VERSION}" >> $GITHUB_ENV | |
# - name: Get dependencies | |
# run: brew install pkgconfig libsoxr ccache expat | |
# - name: Cache boost | |
# id: cache-boost | |
# uses: actions/cache@v4 | |
# with: | |
# path: ${{env.BOOST}} | |
# key: ${{ runner.os }}-boost | |
# - name: Get boost | |
# if: steps.cache-boost.outputs.cache-hit != 'true' | |
# run: | | |
# wget https://boostorg.jfrog.io/artifactory/main/release/${{env.BOOST_DOT_VERSION}}/source/${{env.BOOST}}.tar.bz2 | |
# tar xjf ${{env.BOOST}}.tar.bz2 | |
# - name: Cache ccache | |
# id: cache-ccache | |
# uses: actions/cache@v4 | |
# with: | |
# path: /Users/runner/.ccache | |
# key: ${{ runner.os }}-ccache-${{ github.sha }} | |
# restore-keys: ${{ runner.os }}-ccache- | |
# #- name: ccache dump config | |
# # run: ccache -p | |
# - name: configure | |
# run: cmake -S $GITHUB_WORKSPACE/src/snapcast -B build -DBOOST_ROOT=$GITHUB_WORKSPACE/${{env.BOOST}} -DCMAKE_BUILD_TYPE=Release -DREVISION=${{ github.sha }} -DWERROR=ON -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_FLAGS="-I/usr/local/include -Wno-deprecated-declarations" | |
# - name: build | |
# run: cmake --build build --parallel 3 | |
# rpm: | |
# if: ${{ false }} # disable for now | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# image: | |
# - 34 | |
# - 35 | |
# os: | |
# - ubuntu-latest | |
# - self-hosted-rpi4 | |
# include: | |
# - os: ubuntu-latest | |
# arch: "x86_64" | |
# - os: self-hosted-rpi4 | |
# arch: "armv7hl" | |
# runs-on: ${{ matrix.os }} | |
# name: rpm (${{ matrix.arch }}, fedora ${{ matrix.image }}) | |
# container: | |
# image: fedora:${{matrix.image}} | |
# steps: | |
# - name: Get dependencies | |
# run: dnf -y update && dnf -y install wget git rpm-build gcc-c++ cmake boost-devel alsa-lib-devel avahi-devel libatomic libvorbis-devel opus-devel pulseaudio-libs-devel flac-devel soxr-devel libstdc++-static expat-devel | |
# - name: Checkout | |
# uses: actions/checkout@v4 | |
# - name: Checkout Snapcast | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: badaix/snapcast | |
# path: src/snapcast | |
# ref: ${{ env.VERSION }} | |
# - name: Create rpm package | |
# run: | | |
# mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} | |
# cp rpm/* ~/rpmbuild/SOURCES/ | |
# tar -C $GITHUB_WORKSPACE/src/ -czvf ~/rpmbuild/SOURCES/snapcast.tar.gz snapcast | |
# rpmbuild --nodebuginfo --define '_reversion ${{ github.sha }}' --define '_version ${{ env.VERSION }}' -bb ~/rpmbuild/SOURCES/snapcast.spec | |
# - name: Archive artifacts | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: snapcast_${{ matrix.arch }}-fedora-${{matrix.image}}-${{ github.sha }} | |
# path: ~/rpmbuild/RPMS/${{ matrix.arch }}/snap*.rpm | |
win: | |
runs-on: windows-2019 | |
name: win | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Checkout Snapcast | |
uses: actions/checkout@v4 | |
with: | |
repository: badaix/snapcast | |
path: src/snapcast | |
ref: ${{ env.VERSION }} | |
- name: Cache dependencies | |
id: cache-dependencies | |
uses: actions/cache@v4 | |
with: | |
#path: ${VCPKG_INSTALLATION_ROOT}\installed | |
path: c:\vcpkg\installed | |
key: ${{ runner.os }}-dependencies | |
- name: Get dependenciesenv | |
if: steps.cache-dependencies.outputs.cache-hit != 'true' | |
run: vcpkg.exe install libflac libvorbis soxr opus boost-asio --triplet x64-windows | |
- name: configure | |
run: | | |
echo vcpkg installation root: $env:VCPKG_INSTALLATION_ROOT | |
cmake -S . -B build -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows" -DCMAKE_BUILD_TYPE="Release" -DREVISION="${{ github.sha }}" -DWERROR=ON -DBUILD_TESTS=ON | |
- name: build | |
run: cmake --build build --config Release --parallel 3 --verbose | |
- name: installer | |
run: | | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\FLAC.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\ogg.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\opus.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\vorbis.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\soxr.dll bin\Release\ | |
copy "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Redist\MSVC\v142\vc_redist.x64.exe" bin\Release\ | |
- name: Archive artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: snapcast_win64-${{ github.sha }} | |
path: | | |
bin\Release\snapclient.exe | |
bin\Release\FLAC.dll | |
bin\Release\ogg.dll | |
bin\Release\opus.dll | |
bin\Release\vorbis.dll | |
bin\Release\soxr.dll | |
bin\Release\vc_redist.x64.exe |