build: add alpine/musl to github actions sanity (#3300)
* build: add alpine/musl to github actions sanity * build: sanity build tarball even if the only changes are in submodules
This commit is contained in:
parent
092710fa16
commit
0fa716742a
|
@ -9,19 +9,20 @@ on:
|
|||
env:
|
||||
GTEST_OUTPUT: xml:./
|
||||
jobs:
|
||||
what-to-build:
|
||||
what-to-make:
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
build-cli: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.cli-changed == '1' }}
|
||||
build-code: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.code-changed == '1' }}
|
||||
build-daemon: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.daemon-changed == '1' }}
|
||||
build-docs: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.docs-changed == '1' }}
|
||||
build-gtk: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.gtk-changed == '1' }}
|
||||
build-mac: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.mac-changed == '1' }}
|
||||
build-qt: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.qt-changed == '1' }}
|
||||
build-tests: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.tests-changed == '1' }}
|
||||
build-utils: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.utils-changed == '1' }}
|
||||
build-web: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.web-changed == '1' }}
|
||||
make-cli: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.cli-changed == '1' }}
|
||||
make-daemon: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.daemon-changed == '1' }}
|
||||
make-docs: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.docs-changed == '1' }}
|
||||
make-gtk: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.gtk-changed == '1' }}
|
||||
make-mac: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.mac-changed == '1' }}
|
||||
make-qt: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.qt-changed == '1' }}
|
||||
make-source-tarball: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.any-code-changed == '1' }}
|
||||
make-tests: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.tests-changed == '1' }}
|
||||
make-utils: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.utils-changed == '1' }}
|
||||
make-web: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.web-changed == '1' }}
|
||||
test-style: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.our-code-changed == '1' }}
|
||||
steps:
|
||||
- name: Check State
|
||||
id: check-state
|
||||
|
@ -44,8 +45,10 @@ jobs:
|
|||
set +e
|
||||
git -C "${GITHUB_WORKSPACE}/src" diff --quiet origin/main -- CMakeLists.txt third-party libtransmission cli
|
||||
echo "::set-output name=cli-changed::$?"
|
||||
git -C "${GITHUB_WORKSPACE}/src" diff --quiet origin/main -- CMakeLists.txt third-party libtransmission cli daemon gtk macos qt utils tests web
|
||||
echo "::set-output name=any-code-changed::$?"
|
||||
git -C "${GITHUB_WORKSPACE}/src" diff --quiet origin/main -- CMakeLists.txt libtransmission cli daemon gtk macos qt utils tests web
|
||||
echo "::set-output name=code-changed::$?"
|
||||
echo "::set-output name=our-code-changed::$?"
|
||||
git -C "${GITHUB_WORKSPACE}/src" diff --quiet origin/main -- CMakeLists.txt third-party libtransmission daemon
|
||||
echo "::set-output name=daemon-changed::$?"
|
||||
git -C "${GITHUB_WORKSPACE}/src" diff --quiet origin/main -- docs
|
||||
|
@ -66,8 +69,8 @@ jobs:
|
|||
|
||||
code-style:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [ what-to-build ]
|
||||
if: ${{ needs.what-to-build.outputs.build-code == 'true' }}
|
||||
needs: [ what-to-make ]
|
||||
if: ${{ needs.what-to-make.outputs.test-style == 'true' }}
|
||||
steps:
|
||||
- name: Show Configuration
|
||||
run: |
|
||||
|
@ -104,8 +107,8 @@ jobs:
|
|||
|
||||
sanitizer-tests:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [ what-to-build ]
|
||||
if: ${{ needs.what-to-build.outputs.build-tests == 'true' }}
|
||||
needs: [ what-to-make ]
|
||||
if: ${{ needs.what-to-make.outputs.make-tests == 'true' }}
|
||||
steps:
|
||||
- name: Show Configuration
|
||||
run: |
|
||||
|
@ -163,8 +166,8 @@ jobs:
|
|||
|
||||
macos-11:
|
||||
runs-on: macos-11
|
||||
needs: [ what-to-build ]
|
||||
if: ${{ needs.what-to-build.outputs.build-cli == 'true' || needs.what-to-build.outputs.build-daemon == 'true' || needs.what-to-build.outputs.build-gtk == 'true' || needs.what-to-build.outputs.build-mac == 'true' || needs.what-to-build.outputs.build-qt == 'true' || needs.what-to-build.outputs.build-tests == 'true' || needs.what-to-build.outputs.build-utils == 'true' }}
|
||||
needs: [ what-to-make ]
|
||||
if: ${{ needs.what-to-make.outputs.make-cli == 'true' || needs.what-to-make.outputs.make-daemon == 'true' || needs.what-to-make.outputs.make-gtk == 'true' || needs.what-to-make.outputs.make-mac == 'true' || needs.what-to-make.outputs.make-qt == 'true' || needs.what-to-make.outputs.make-tests == 'true' || needs.what-to-make.outputs.make-utils == 'true' }}
|
||||
steps:
|
||||
- name: Show Configuration
|
||||
run: |
|
||||
|
@ -174,10 +177,10 @@ jobs:
|
|||
- name: Get Dependencies
|
||||
run: brew install cmake gettext libdeflate libevent libnatpmp libpsl miniupnpc ninja
|
||||
- name: Get Dependencies (GTK)
|
||||
if: ${{ needs.what-to-build.outputs.build-gtk == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-gtk == 'true' }}
|
||||
run: brew install gtkmm3
|
||||
- name: Get Dependencies (Qt)
|
||||
if: ${{ needs.what-to-build.outputs.build-qt == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-qt == 'true' }}
|
||||
run: brew install qt@5
|
||||
- name: Get Source
|
||||
uses: actions/checkout@v3
|
||||
|
@ -195,10 +198,83 @@ jobs:
|
|||
-DCMAKE_OSX_ARCHITECTURES='x86_64' \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET='10.10' \
|
||||
-DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt@5 \
|
||||
-DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_GTK=${{ (needs.what-to-make.outputs.make-gtk == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_MAC=${{ (needs.what-to-make.outputs.make-mac == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_QT=${{ (needs.what-to-make.outputs.make-qt == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_TESTS=OFF \
|
||||
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_WEB=OFF \
|
||||
-DRUN_CLANG_TIDY=OFF
|
||||
- name: Make
|
||||
run: cmake --build obj --config RelWithDebInfo
|
||||
- name: Test
|
||||
if: ${{ needs.what-to-make.outputs.make-tests == 'true' }}
|
||||
env:
|
||||
TMPDIR: /private/tmp
|
||||
run: cmake -E chdir obj ctest --build-config RelWithDebInfo --output-on-failure
|
||||
- name: Install
|
||||
run: cmake --build obj --config RelWithDebInfo --target install/strip
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: binaries-${{ github.job }}
|
||||
path: pfx/**/*
|
||||
|
||||
alpine-musl:
|
||||
needs: [ what-to-build ]
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: radupopescu/musl-builder
|
||||
if: ${{ needs.what-to-build.outputs.build-cli == 'true' || needs.what-to-build.outputs.build-daemon == 'true' || needs.what-to-build.outputs.build-gtk == 'true' || needs.what-to-build.outputs.build-qt == 'true' || needs.what-to-build.outputs.build-tests == 'true' || needs.what-to-build.outputs.build-utils == 'true' }}
|
||||
steps:
|
||||
- name: Show Configuration
|
||||
run: |
|
||||
echo '${{ toJSON(needs) }}'
|
||||
echo '${{ toJSON(runner) }}'
|
||||
cat /etc/os-release
|
||||
- name: Get Dependencies
|
||||
run: |
|
||||
set -ex
|
||||
apk update
|
||||
apk add \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
g++ \
|
||||
gettext \
|
||||
git \
|
||||
curl-dev \
|
||||
fmt-dev \
|
||||
libevent-dev \
|
||||
libpsl \
|
||||
miniupnpc-dev \
|
||||
ninja \
|
||||
pkgconfig \
|
||||
xz
|
||||
- name: Get Dependencies (GTK)
|
||||
if: ${{ needs.what-to-build.outputs.build-gtk == 'true' }}
|
||||
run: apk add --upgrade glibmm-dev gtkmm3-dev
|
||||
- name: Get Dependencies (Qt)
|
||||
if: ${{ needs.what-to-build.outputs.build-qt == 'true' }}
|
||||
run: apk add --upgrade qt5-qtbase-dev qt5-qttools-dev
|
||||
- name: Get Source
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: src
|
||||
submodules: recursive
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake \
|
||||
-S src \
|
||||
-B obj \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_INSTALL_PREFIX=pfx \
|
||||
-DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt@5 \
|
||||
-DENABLE_CLI=${{ (needs.what-to-build.outputs.build-cli == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_DAEMON=${{ (needs.what-to-build.outputs.build-daemon == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_GTK=${{ (needs.what-to-build.outputs.build-gtk == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_MAC=${{ (needs.what-to-build.outputs.build-mac == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_MAC=OFF \
|
||||
-DENABLE_QT=${{ (needs.what-to-build.outputs.build-qt == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_TESTS=OFF \
|
||||
-DENABLE_UTILS=${{ (needs.what-to-build.outputs.build-utils == 'true') && 'ON' || 'OFF' }} \
|
||||
|
@ -220,8 +296,8 @@ jobs:
|
|||
|
||||
make-source-tarball:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [ what-to-build ]
|
||||
if: ${{ needs.what-to-build.outputs.build-code == 'true' }}
|
||||
needs: [ what-to-make ]
|
||||
if: ${{ needs.what-to-make.outputs.make-source-tarball == 'true' }}
|
||||
steps:
|
||||
- name: Show Configuration
|
||||
run: |
|
||||
|
@ -257,8 +333,8 @@ jobs:
|
|||
path: obj/transmission*.tar.*
|
||||
|
||||
macos-11-from-tarball:
|
||||
needs: [ make-source-tarball, what-to-build ]
|
||||
if: ${{ needs.what-to-build.outputs.build-cli == 'true' || needs.what-to-build.outputs.build-daemon == 'true' || needs.what-to-build.outputs.build-gtk == 'true' || needs.what-to-build.outputs.build-mac == 'true' || needs.what-to-build.outputs.build-qt == 'true' || needs.what-to-build.outputs.build-tests == 'true' || needs.what-to-build.outputs.build-utils == 'true' }}
|
||||
needs: [ make-source-tarball, what-to-make ]
|
||||
if: ${{ needs.what-to-make.outputs.make-cli == 'true' || needs.what-to-make.outputs.make-daemon == 'true' || needs.what-to-make.outputs.make-gtk == 'true' || needs.what-to-make.outputs.make-mac == 'true' || needs.what-to-make.outputs.make-qt == 'true' || needs.what-to-make.outputs.make-tests == 'true' || needs.what-to-make.outputs.make-utils == 'true' }}
|
||||
runs-on: macos-11
|
||||
steps:
|
||||
- name: Show Configuration
|
||||
|
@ -269,10 +345,10 @@ jobs:
|
|||
- name: Get Dependencies
|
||||
run: brew install cmake gettext libdeflate libevent libnatpmp libpsl miniupnpc ninja
|
||||
- name: Get Dependencies (GTK)
|
||||
if: ${{ needs.what-to-build.outputs.build-gtk == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-gtk == 'true' }}
|
||||
run: brew install gtkmm3
|
||||
- name: Get Dependencies (Qt)
|
||||
if: ${{ needs.what-to-build.outputs.build-qt == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-qt == 'true' }}
|
||||
run: brew install qt@5
|
||||
- name: Get Source
|
||||
uses: actions/download-artifact@v3
|
||||
|
@ -291,19 +367,19 @@ jobs:
|
|||
-DCMAKE_OSX_ARCHITECTURES='x86_64' \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET='10.10' \
|
||||
-DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt@5 \
|
||||
-DENABLE_CLI=${{ (needs.what-to-build.outputs.build-cli == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_DAEMON=${{ (needs.what-to-build.outputs.build-daemon == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_GTK=${{ (needs.what-to-build.outputs.build-gtk == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_MAC=${{ (needs.what-to-build.outputs.build-mac == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_QT=${{ (needs.what-to-build.outputs.build-qt == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_TESTS=${{ (needs.what-to-build.outputs.build-tests == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_UTILS=${{ (needs.what-to-build.outputs.build-utils == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_GTK=${{ (needs.what-to-make.outputs.make-gtk == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_MAC=${{ (needs.what-to-make.outputs.make-mac == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_QT=${{ (needs.what-to-make.outputs.make-qt == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_TESTS=${{ (needs.what-to-make.outputs.make-tests == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_WEB=OFF \
|
||||
-DRUN_CLANG_TIDY=OFF
|
||||
- name: Make
|
||||
run: cmake --build obj --config RelWithDebInfo
|
||||
- name: Test
|
||||
if: ${{ needs.what-to-build.outputs.build-tests == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-tests == 'true' }}
|
||||
env:
|
||||
TMPDIR: /private/tmp
|
||||
run: cmake -E chdir obj ctest --build-config RelWithDebInfo --output-on-failure
|
||||
|
@ -315,8 +391,8 @@ jobs:
|
|||
path: pfx/**/*
|
||||
|
||||
debian-11-from-tarball:
|
||||
needs: [ make-source-tarball, what-to-build ]
|
||||
if: ${{ needs.what-to-build.outputs.build-cli == 'true' || needs.what-to-build.outputs.build-daemon == 'true' || needs.what-to-build.outputs.build-gtk == 'true' || needs.what-to-build.outputs.build-mac == 'true' || needs.what-to-build.outputs.build-qt == 'true' || needs.what-to-build.outputs.build-tests == 'true' || needs.what-to-build.outputs.build-utils == 'true' }}
|
||||
needs: [ make-source-tarball, what-to-make ]
|
||||
if: ${{ needs.what-to-make.outputs.make-cli == 'true' || needs.what-to-make.outputs.make-daemon == 'true' || needs.what-to-make.outputs.make-gtk == 'true' || needs.what-to-make.outputs.make-qt == 'true' || needs.what-to-make.outputs.make-tests == 'true' || needs.what-to-make.outputs.make-utils == 'true' }}
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: debian:11-slim
|
||||
|
@ -347,10 +423,10 @@ jobs:
|
|||
pkg-config \
|
||||
xz-utils
|
||||
- name: Get Dependencies (GTK)
|
||||
if: ${{ needs.what-to-build.outputs.build-gtk == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-gtk == 'true' }}
|
||||
run: apt-get install -y --no-install-recommends libglibmm-2.4-dev libgtkmm-3.0-dev
|
||||
- name: Get Dependencies (Qt)
|
||||
if: ${{ needs.what-to-build.outputs.build-qt == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-qt == 'true' }}
|
||||
run: apt-get install -y --no-install-recommends qtbase5-dev qttools5-dev
|
||||
- name: Get Source
|
||||
uses: actions/download-artifact@v3
|
||||
|
@ -366,19 +442,19 @@ jobs:
|
|||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_INSTALL_PREFIX=pfx \
|
||||
-DENABLE_CLI=${{ (needs.what-to-build.outputs.build-cli == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_DAEMON=${{ (needs.what-to-build.outputs.build-daemon == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_GTK=${{ (needs.what-to-build.outputs.build-gtk == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_GTK=${{ (needs.what-to-make.outputs.make-gtk == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_MAC=OFF \
|
||||
-DENABLE_QT=${{ (needs.what-to-build.outputs.build-qt == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_TESTS=${{ (needs.what-to-build.outputs.build-tests == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_UTILS=${{ (needs.what-to-build.outputs.build-utils == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_QT=${{ (needs.what-to-make.outputs.make-qt == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_TESTS=${{ (needs.what-to-make.outputs.make-tests == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
|
||||
-DENABLE_WEB=OFF \
|
||||
-DRUN_CLANG_TIDY=OFF
|
||||
- name: Build
|
||||
run: cmake --build obj --config RelWithDebInfo
|
||||
- name: Test
|
||||
if: ${{ needs.what-to-build.outputs.build-tests == 'true' }}
|
||||
if: ${{ needs.what-to-make.outputs.make-tests == 'true' }}
|
||||
run: cmake -E chdir obj ctest --build-config RelWithDebInfo --output-on-failure
|
||||
- name: Install
|
||||
run: cmake --build obj --config RelWithDebInfo --target install/strip
|
||||
|
|
Loading…
Reference in New Issue