Skip to content

Commit 6dce085

Browse files
cbjeukendrupigorkorsukov
authored andcommitted
Add pipewire recipe
Fetches PipeWire 1.6.7 and drives its Meson build directly (via a pinned, sha256-verified Meson source release, no system pip install), producing a minimal client-only libpipewire-0.3 for consumers that just need to talk to a running PipeWire daemon. Linux-only (DEP_PLATFORMS linux-x86_64/aarch64).
1 parent adcefed commit 6dce085

3 files changed

Lines changed: 128 additions & 0 deletions

File tree

recipes/pipewire/build.cmake

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# PipeWire ships a Meson build, and muse_deps has no generic Meson helper
2+
# yet, so this recipe fetches Meson's own pinned source release (no system
3+
# pip install, so the build stays reproducible) and drives it directly.
4+
5+
set(_meson_version 1.11.1)
6+
set(_meson_archive_name "meson-${_meson_version}.tar.gz")
7+
set(_meson_sha256 "6788ae299979643f8d841bcaf64352558436cae45a0355148a3aeeccf7913866")
8+
set(_meson_url "https://github.com/mesonbuild/meson/releases/download/${_meson_version}/${_meson_archive_name}")
9+
10+
set(_meson_download_dir "${BD_CACHE}/downloads/meson")
11+
set(_meson_archive "${_meson_download_dir}/${_meson_archive_name}")
12+
if(EXISTS "${_meson_archive}")
13+
file(SHA256 "${_meson_archive}" _got_sha256)
14+
if(NOT _got_sha256 STREQUAL _meson_sha256)
15+
message(FATAL_ERROR "[${BD_NAME}] cached ${_meson_archive_name} SHA256 mismatch: ${_got_sha256} != ${_meson_sha256}")
16+
endif()
17+
else()
18+
file(MAKE_DIRECTORY "${_meson_download_dir}")
19+
_bd_fetch("${_meson_archive}" "${_meson_sha256}" "${_meson_url}")
20+
endif()
21+
22+
set(_meson_root "${BD_WORK}/meson")
23+
file(MAKE_DIRECTORY "${_meson_root}")
24+
file(ARCHIVE_EXTRACT INPUT "${_meson_archive}" DESTINATION "${_meson_root}")
25+
set(_meson_py "${_meson_root}/meson-${_meson_version}/meson.py")
26+
27+
find_program(PYTHON3 NAMES python3 REQUIRED)
28+
find_program(NINJA NAMES ninja REQUIRED)
29+
30+
# Map the engine's CMake-style config onto a Meson buildtype
31+
if(BD_CONFIG STREQUAL "Debug")
32+
set(_meson_buildtype debug)
33+
elseif(BD_CONFIG STREQUAL "MinSizeRel")
34+
set(_meson_buildtype minsize)
35+
elseif(BD_CONFIG STREQUAL "Release")
36+
set(_meson_buildtype release)
37+
else()
38+
set(_meson_buildtype debugoptimized)
39+
endif()
40+
41+
_bd_run(${PYTHON3} "${_meson_py}" setup "${BUILD}" "${SRC}"
42+
--prefix "${INSTALL}"
43+
--libdir lib
44+
--buildtype "${_meson_buildtype}"
45+
${DEP_MESON_ARGS}
46+
)
47+
_bd_run(${PYTHON3} "${_meson_py}" compile -C "${BUILD}")
48+
_bd_run(${PYTHON3} "${_meson_py}" install -C "${BUILD}")

recipes/pipewire/meta.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set(DEP_TARGET PipeWire::PipeWire)
2+
set(DEP_LIBS pipewire-0.3)
3+
set(DEP_INCLUDE_SUBDIRS pipewire-0.3 spa-0.2)
4+
set(DEP_SYSTEM_HEADER pipewire-0.3/pipewire/pipewire.h)

recipes/pipewire/spec.cmake

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
set(DEP_VERSION 1.6.7)
2+
3+
set(DEP_SOURCE_URL "https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.6.7/pipewire-1.6.7.tar.gz")
4+
set(DEP_SOURCE_SHA256 "a618c0a159055e2443f638c5c9f4b904e6902b655c09a7ff84546fa2447aedf8")
5+
6+
# Consumed only as an optional Linux audio driver backend
7+
set(DEP_PLATFORMS linux-x86_64 linux-aarch64)
8+
9+
# Built as a minimal client library: only the audioconvert/support spa
10+
# plugins that muse_audio_driver needs are enabled. Everything that would
11+
# pull in extra system deps (bluez5, jack, v4l2, gstreamer, session
12+
# managers, ...) is disabled so the build is deterministic across CI images.
13+
set(DEP_MESON_ARGS
14+
-Ddocs=disabled
15+
-Dman=disabled
16+
-Dexamples=disabled
17+
-Dtests=disabled
18+
-Dinstalled_tests=disabled
19+
-Dgstreamer=disabled
20+
-Dgstreamer-device-provider=disabled
21+
-Dlibsystemd=disabled
22+
-Dlogind=disabled
23+
-Dsystemd-system-service=disabled
24+
-Dsystemd-user-service=disabled
25+
-Dselinux=disabled
26+
-Dpipewire-alsa=disabled
27+
-Dpipewire-jack=disabled
28+
-Dpipewire-v4l2=disabled
29+
-Djack-devel=false
30+
-Dalsa=disabled
31+
-Daudiomixer=disabled
32+
-Daudioconvert=enabled
33+
-Dbluez5=disabled
34+
-Dcontrol=disabled
35+
-Daudiotestsrc=disabled
36+
-Djack=disabled
37+
-Dsupport=enabled
38+
-Devl=disabled
39+
-Dv4l2=disabled
40+
-Ddbus=enabled
41+
-Dlibcamera=disabled
42+
-Dvideoconvert=disabled
43+
-Dvideotestsrc=disabled
44+
-Dpw-cat=disabled
45+
-Dudev=disabled
46+
-Dsdl2=disabled
47+
-Dsndfile=disabled
48+
-Dlibmysofa=disabled
49+
-Dlibpulse=disabled
50+
-Droc=disabled
51+
-Davahi=disabled
52+
-Decho-cancel-webrtc=disabled
53+
-Dlibusb=disabled
54+
-Dsession-managers=[]
55+
-Draop=disabled
56+
-Dlv2=disabled
57+
-Dx11=disabled
58+
-Dx11-xfixes=disabled
59+
-Dlibcanberra=disabled
60+
-Dlegacy-rtkit=false
61+
-Davb=disabled
62+
-Dflatpak=disabled
63+
-Dreadline=disabled
64+
-Dgsettings=disabled
65+
-Dcompress-offload=disabled
66+
-Drlimits-install=false
67+
-Dopus=disabled
68+
-Dlibffado=disabled
69+
-Dgsettings-pulse-schema=disabled
70+
-Debur128=disabled
71+
-Dfftw=disabled
72+
-Donnxruntime=disabled
73+
-Dsnap=disabled
74+
)
75+
76+
set(DEP_LICENSE_FILES COPYING)

0 commit comments

Comments
 (0)