Skip to content

Commit 9dfdded

Browse files
committed
ci: build and upload Mixxx against TagLib 2.2 and 1.11
Convert the single TagLib 2.2 build job into a matrix so the mkv/webm cover-art feature is compiled and packaged against both supported cases: - TagLib 2.2 built from source (native Matroska support) - TagLib 1.11 from the Focal system package (FFmpeg metadata fallback) Each leg uploads its own runtime tarball and logs artifact, keyed by a per-leg artifact_tag, to prove both code paths compile and link.
1 parent 13750e4 commit 9dfdded

1 file changed

Lines changed: 36 additions & 20 deletions

File tree

.github/workflows/ubuntu-20.04-qt6-taglib22-build.yml

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow
2-
name: Ubuntu 20.04 Focal build with TagLib 2.2 (Qt 6 from artifact)
2+
name: Ubuntu 20.04 Focal build with TagLib 2.2 / 1.11 (Qt 6 from artifact)
33

44
# Manual trigger, and automatic on pushes to the mkv/webm taglib-2.2 test branch.
55
on:
@@ -15,19 +15,33 @@ permissions:
1515
env:
1616
QT_VERSION: 6.10.3
1717
QT_PREFIX: /opt/qt/6.10.3
18-
TAGLIB_VERSION: 2.2
19-
TAGLIB_PREFIX: /opt/taglib/2.2
2018

2119
jobs:
2220
build:
23-
name: Ubuntu 20.04 (Focal) compile against TagLib 2.2
21+
name: Ubuntu 20.04 (Focal) compile against TagLib ${{ matrix.taglib_version }}
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
include:
26+
- taglib_version: "2.2"
27+
taglib_prefix: /opt/taglib/2.2
28+
taglib_pkgconfig: /opt/taglib/2.2/lib/pkgconfig
29+
build_taglib_from_source: true
30+
artifact_tag: taglib22
31+
- taglib_version: "1.11"
32+
taglib_prefix: /usr
33+
taglib_pkgconfig: /usr/lib/x86_64-linux-gnu/pkgconfig
34+
build_taglib_from_source: false
35+
artifact_tag: taglib111
2436
runs-on: ubuntu-24.04
2537
container: ubuntu:20.04
2638

2739
env:
2840
DEBIAN_FRONTEND: noninteractive
2941
TZ: Etc/UTC
3042
CMAKE_VERSION: 3.31.8
43+
TAGLIB_VERSION: ${{ matrix.taglib_version }}
44+
TAGLIB_PREFIX: ${{ matrix.taglib_prefix }}
3145

3246
steps:
3347
- name: Check out repository
@@ -96,9 +110,10 @@ jobs:
96110
/tmp/debian_buildenv-focal.sh
97111
chmod +x /tmp/debian_buildenv-focal.sh
98112
/tmp/debian_buildenv-focal.sh setup 2>&1 | tee logs/04-mixxx-buildenv.log
99-
# Focal ships TagLib 1.11.1 (libtag1-dev). It stays installed but the
100-
# configure step puts /opt/taglib/2.2 first in PKG_CONFIG_PATH, so
101-
# Mixxx resolves TagLib 2.2 from the source build below.
113+
# Focal ships TagLib 1.11.1 (libtag1-dev), which has no Matroska
114+
# support. The 2.2 leg overrides it by putting /opt/taglib/2.2 first
115+
# in PKG_CONFIG_PATH; the 1.11 leg uses the system package and thus
116+
# exercises the FFmpeg metadata fallback path.
102117
103118
- name: Build hidapi 0.14.0 (Focal ships 0.9.0)
104119
shell: bash
@@ -115,6 +130,7 @@ jobs:
115130
nm -D /usr/local/lib/libhidapi-hidraw.so.0 | grep -q ' hid_get_report_descriptor$'
116131
117132
- name: Build TagLib ${TAGLIB_VERSION} from source (native Matroska/WebM)
133+
if: matrix.build_taglib_from_source
118134
shell: bash
119135
run: |
120136
set -o pipefail
@@ -203,7 +219,7 @@ jobs:
203219
shell: bash
204220
env:
205221
CMAKE_PREFIX_PATH: /opt/qt/6.10.3:/usr/local:${{ env.TAGLIB_PREFIX }}
206-
PKG_CONFIG_PATH: ${{ env.TAGLIB_PREFIX }}/lib/pkgconfig
222+
PKG_CONFIG_PATH: ${{ matrix.taglib_pkgconfig }}
207223
LD_LIBRARY_PATH: /opt/qt/6.10.3/lib:/usr/local/lib:${{ env.TAGLIB_PREFIX }}/lib
208224
CC: gcc-12
209225
CXX: g++-12
@@ -227,13 +243,13 @@ jobs:
227243
2>&1 | tee logs/07-cmake-configure.log
228244
echo '=== TagLib resolved by Mixxx ==='
229245
grep -iE 'TagLib' build/CMakeCache.txt || true
230-
grep -E 'Found TagLib|suitable version "2\.2"' logs/07-cmake-configure.log || true
246+
grep -E 'Found TagLib|suitable version' logs/07-cmake-configure.log || true
231247
232248
- name: Build (Release)
233249
shell: bash
234250
env:
235251
CMAKE_PREFIX_PATH: /opt/qt/6.10.3:/usr/local:${{ env.TAGLIB_PREFIX }}
236-
PKG_CONFIG_PATH: ${{ env.TAGLIB_PREFIX }}/lib/pkgconfig
252+
PKG_CONFIG_PATH: ${{ matrix.taglib_pkgconfig }}
237253
LD_LIBRARY_PATH: /opt/qt/6.10.3/lib:/usr/local/lib:${{ env.TAGLIB_PREFIX }}/lib
238254
CC: gcc-12
239255
CXX: g++-12
@@ -263,32 +279,32 @@ jobs:
263279
shell: bash
264280
env:
265281
CMAKE_PREFIX_PATH: /opt/qt/6.10.3:/usr/local:${{ env.TAGLIB_PREFIX }}
266-
PKG_CONFIG_PATH: ${{ env.TAGLIB_PREFIX }}/lib/pkgconfig
282+
PKG_CONFIG_PATH: ${{ matrix.taglib_pkgconfig }}
267283
LD_LIBRARY_PATH: /opt/qt/6.10.3/lib:/usr/local/lib:${{ env.TAGLIB_PREFIX }}/lib
268284
CC: gcc-12
269285
CXX: g++-12
270286
run: |
271287
set -o pipefail
272288
export PATH=/opt/qt/6.10.3/bin:$PATH
273-
rm -rf /opt/mixxx-taglib22
274-
cmake --install build --prefix /opt/mixxx-taglib22 \
289+
rm -rf "/opt/mixxx-${{ matrix.artifact_tag }}"
290+
cmake --install build --prefix "/opt/mixxx-${{ matrix.artifact_tag }}" \
275291
2>&1 | tee logs/10-cmake-install.log
276292
echo '=== Installed runtime tree ==='
277-
find /opt/mixxx-taglib22 -type f -printf '%P\n' \
293+
find "/opt/mixxx-${{ matrix.artifact_tag }}" -type f -printf '%P\n' \
278294
| sort | tee logs/10-install-tree.log
279295
280-
- name: Package Mixxx runtime (TagLib 2.2)
296+
- name: Package Mixxx runtime (TagLib ${TAGLIB_VERSION})
281297
shell: bash
282298
run: |
283299
set -o pipefail
284-
tar czf /tmp/mixxx-taglib22-runtime.tar.gz -C /opt/mixxx-taglib22 .
285-
ls -lh /tmp/mixxx-taglib22-runtime.tar.gz
300+
tar czf "/tmp/mixxx-${{ matrix.artifact_tag }}-runtime.tar.gz" -C "/opt/mixxx-${{ matrix.artifact_tag }}" .
301+
ls -lh "/tmp/mixxx-${{ matrix.artifact_tag }}-runtime.tar.gz"
286302
287303
- name: Upload Mixxx runtime artifact
288304
uses: actions/upload-artifact@v4
289305
with:
290-
name: mixxx-taglib22-runtime-${{ github.run_number }}
291-
path: /tmp/mixxx-taglib22-runtime.tar.gz
306+
name: mixxx-${{ matrix.artifact_tag }}-runtime-${{ github.run_number }}
307+
path: /tmp/mixxx-${{ matrix.artifact_tag }}-runtime.tar.gz
292308
if-no-files-found: error
293309

294310
- name: Collect diagnostics
@@ -315,7 +331,7 @@ jobs:
315331
if: always()
316332
uses: actions/upload-artifact@v4
317333
with:
318-
name: ubuntu-20.04-qt6-taglib22-build-${{ github.run_number }}
334+
name: ubuntu-20.04-qt6-taglib22-build-${{ matrix.artifact_tag }}-${{ github.run_number }}
319335
path: logs/
320336
if-no-files-found: warn
321337
retention-days: 14

0 commit comments

Comments
 (0)