796c7ee85a
relibc now provides the real <byteswap.h> header and Linux mmap extension flags (MAP_LOCKED, MAP_HUGETLB, etc.) in <sys/mman.h>. Drop the redox_compat/ shim files from the WirePlumber patch, update README-redbear.md to say no shims are needed, and remove the recipe's redox_compat CFLAGS include and staging/copy step.
123 lines
6.4 KiB
TOML
123 lines
6.4 KiB
TOML
# WirePlumber — PipeWire session/policy manager (Red Bear OS).
|
|
#
|
|
# This recipe pulls upstream freedesktop WirePlumber 0.4.14
|
|
# (https://gitlab.freedesktop.org/pipewire/wireplumber) at the pinned
|
|
# tag, then applies Red Bear OS external patches from
|
|
# local/patches/wireplumber/ on top of the upstream tree.
|
|
#
|
|
# Per local/AGENTS.md Rule 2 (NO OVERLAY-STYLE PATCHES — AMENDED 2026),
|
|
# wireplumber is a big external project. Red Bear does NOT maintain a
|
|
# source fork of wireplumber — external patches in
|
|
# local/patches/wireplumber/ keep us close to upstream, give a clean
|
|
# audit trail (one mbox-style patch per Red Bear change), and make
|
|
# upstream syncs a `rev = "..."` bump + patch rebase instead of a
|
|
# full rebase of a Red Bear fork.
|
|
#
|
|
# All Red Bear-specific wireplumber changes (README-redbear.md port
|
|
# status) live as patches under local/patches/wireplumber/. To add a new wireplumber
|
|
# change:
|
|
# 1. make the change in the fetched tree
|
|
# 2. `git diff > local/patches/wireplumber/NN-short-description.patch`
|
|
# 3. add a `git apply` line in [build].script in apply order
|
|
# 4. commit the patch in the main repo
|
|
#
|
|
# WirePlumber is a Lua-based session and policy manager that runs on
|
|
# top of PipeWire; it owns the policy decisions about which audio
|
|
# stream connects to which sink/source, applies per-client volume
|
|
# and routing rules, and exposes a D-Bus API to the desktop session
|
|
# (org.freedesktop.PipeWire.Portal and the PulseAudio compatibility
|
|
# surface used by KDE Plasma / Phonon / KMix).
|
|
#
|
|
# Red Bear OS uses WirePlumber as the PipeWire session manager so
|
|
# that KDE Plasma and the Plasma audio applets can talk to a real,
|
|
# configurable PipeWire stack rather than the upstream "no-session"
|
|
# fallback.
|
|
#
|
|
# On Redox, WirePlumber talks to:
|
|
# * libpipewire-0.3 (this recipe's sibling, local/recipes/libs/pipewire)
|
|
# * libspa-0.2 (shipped with the pipewire recipe)
|
|
# * glib-2.0 (already a Red Bear dependency)
|
|
# * D-Bus (for activation and for KDE's org.pulseaudio.Server)
|
|
# The build disables the optional systemd / elogind integration paths
|
|
# since Redox uses init.d, and disables the optional PulseAudio
|
|
# helper that is only relevant on systems that still ship a
|
|
# PulseAudio daemon (Red Bear does not — pipewire-pulse replaces it).
|
|
#
|
|
# Known gaps (intentional TODOs in the source fork, documented in
|
|
# the patch's README-redbear.md):
|
|
# * systemd / elogind integration — Redox uses init.d
|
|
# * wireplumber.options Lua config — needs to be staged by the
|
|
# recipe's [[files]] entry; not committed to the patch
|
|
# * LuaJIT is preferred over the system Lua when both are available;
|
|
# Red Bear currently ships neither and depends on the bundled Lua
|
|
# subproject (downloaded via meson wrap on first build; we plan
|
|
# to vendor it once the wrap cache is committed)
|
|
#
|
|
# What IS built (this recipe's purpose):
|
|
# * libwireplumber-0.4.so — the C client library
|
|
# * wireplumber — the session manager daemon
|
|
# * wpctl — the command-line control utility
|
|
# * SPA modules — the Lua-loaded policy modules
|
|
[source]
|
|
git = "https://gitlab.freedesktop.org/pipewire/wireplumber.git"
|
|
upstream = "https://gitlab.freedesktop.org/pipewire/wireplumber"
|
|
rev = "0.4.14"
|
|
|
|
[build]
|
|
template = "custom"
|
|
dependencies = [
|
|
"glib",
|
|
"dbus",
|
|
"expat",
|
|
"pipewire",
|
|
]
|
|
script = """
|
|
DYNAMIC_INIT
|
|
|
|
# Red Bear OS external patches — apply on top of the upstream wireplumber tree.
|
|
# These patches live in local/patches/wireplumber/ and survive `make clean` and
|
|
# upstream syncs. Add new patches at the end of the chain in numbered
|
|
# order (e.g. 02-foo.patch, 03-bar.patch) so `ls -1` apply order matches
|
|
# patch numbering.
|
|
# Apply Red Bear OS external patches (per local/AGENTS.md Rule 2).
|
|
# cookbook_apply_patches handles the "already applied" check, the
|
|
# `cd "${COOKBOOK_SOURCE}"` dance, and the "return to build dir"
|
|
# so this stays a single line. Recipe is at local/recipes/libs/wireplumber/
|
|
# (depth 3), so 4 dots reach the project root, then /local/patches/wireplumber
|
|
# is appended.
|
|
REDBEAR_PATCHES_DIR="${REDBEAR_PATCHES_DIR:-$(cd "$(dirname "${COOKBOOK_RECIPE}")/../../../.." && pwd)}/local/patches/wireplumber"
|
|
cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
|
|
|
export PKG_CONFIG="${COOKBOOK_PKG_CONFIG:-x86_64-unknown-redox-pkg-config}"
|
|
export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}"
|
|
export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/share/pkgconfig"
|
|
|
|
export CC="x86_64-unknown-redox-gcc"
|
|
export CXX="x86_64-unknown-redox-g++"
|
|
export AR="x86_64-unknown-redox-ar"
|
|
export STRIP="x86_64-unknown-redox-strip"
|
|
export RANLIB="x86_64-unknown-redox-ranlib"
|
|
export CFLAGS="-I${COOKBOOK_SYSROOT}/usr/include --sysroot=${COOKBOOK_SYSROOT} -Wno-error=format-overflow -Wno-error=stringop-truncation -Wno-error=array-bounds -Wno-error=use-after-free -Wno-error=array-parameter -Wno-error=cast-function-type -Wno-error=deprecated-declarations -Wno-error=stringop-overread -Wno-error=dangling-pointer -Wno-error=uninitialized -Wno-error=maybe-uninitialized -Wno-error=incompatible-pointer-types"
|
|
export LDFLAGS="--sysroot=${COOKBOOK_SYSROOT}"
|
|
|
|
# Disable the Linux-specific optional integrations. Keep the core
|
|
# session manager, the C library, and the command-line tools.
|
|
cookbook_meson \\
|
|
-Ddocs=disabled \\
|
|
-Dtests=disabled \\
|
|
-Dsystemd=disabled \\
|
|
-Delogind=disabled \\
|
|
-Dsystemd-system-service=false \\
|
|
-Dsystemd-user-service=false \\
|
|
-Dintrospection=disabled \\
|
|
-Dtools=enabled \\
|
|
-Ddaemon=enabled \\
|
|
-Dmodules=true \\
|
|
-Ddbus-tests=false \\
|
|
-Dsystem-lua=false
|
|
"""
|
|
|
|
[package]
|
|
version = "0.4.14"
|
|
description = "WirePlumber 0.4.14 — PipeWire session and policy manager (v6.0 2026 Red Bear). Provides libwireplumber-0.4.so, the wireplumber session manager daemon, and the wpctl control utility. Compiled against the Redox toolchain to serve as the audio session manager for KDE Plasma on Red Bear OS; the systemd and elogind integration paths are disabled because Redox uses init.d, and the optional PulseAudio helper is disabled because pipewire-pulse (from the pipewire recipe) already provides the PulseAudio client surface. Per local/AGENTS.md Rule 2, all Red Bear-specific edits to upstream wireplumber live as external patches in local/patches/wireplumber/ (currently: 01 — Red Bear port README). The previous source fork at local/sources/wireplumber/ is preserved as historical reference but is no longer used by the build system."
|