push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
diff --git a/src/modules/meson.build b/src/modules/meson.build
index 5d2dc9984..35f5773aa 100644
--- a/src/modules/meson.build
+++ b/src/modules/meson.build
@@ -169,6 +169,7 @@ if build_module_jack_tunnel
install_dir : modules_install_dir,
install_rpath: modules_install_dir,
dependencies : [mathlib, dl_lib, pipewire_dep],
+ c_args: '-DNIXPKGS_LIBJACK_PATH="@0@"'.format(jack_dep.get_variable('libdir'))
)
build_module_jackdbus_detect = dbus_dep.found()
if build_module_jackdbus_detect
diff --git a/src/modules/module-jack-tunnel/weakjack.h b/src/modules/module-jack-tunnel/weakjack.h
index 42580f798..e7aadd3cc 100644
--- a/src/modules/module-jack-tunnel/weakjack.h
+++ b/src/modules/module-jack-tunnel/weakjack.h
@@ -164,8 +164,7 @@ static inline int weakjack_load(struct weakjack *jack, const char *lib)
search_dirs = getenv("LIBJACK_PATH");
if (!search_dirs)
- search_dirs = PREFIX "/lib64/:" PREFIX "/lib/:"
- "/usr/lib64/:/usr/lib/:" LIBDIR;
+ search_dirs = NIXPKGS_LIBJACK_PATH;
while ((p = pw_split_walk(search_dirs, ":", &len, &state))) {
int pathlen;

View File

@@ -0,0 +1,29 @@
diff --git a/meson.build b/meson.build
index 2107c19ec..20ccdfd9f 100644
--- a/meson.build
+++ b/meson.build
@@ -380,8 +380,8 @@ lilv_lib = dependency('lilv-0', required: get_option('lv2'))
summary({'lilv (for lv2 plugins)': lilv_lib.found()}, bool_yn: true)
cdata.set('HAVE_LILV', lilv_lib.found())
-installed_tests_metadir = pipewire_datadir / 'installed-tests' / pipewire_name
-installed_tests_execdir = pipewire_libexecdir / 'installed-tests' / pipewire_name
+installed_tests_metadir = get_option('installed_test_prefix') / 'share' / 'installed-tests' / pipewire_name
+installed_tests_execdir = get_option('installed_test_prefix') / 'libexec' / 'installed-tests' / pipewire_name
installed_tests_enabled = get_option('installed_tests').allowed()
installed_tests_template = files('template.test.in')
diff --git a/meson_options.txt b/meson_options.txt
index 961ae2a76..a36e9e45f 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -22,6 +22,9 @@ option('installed_tests',
description: 'Install manual and automated test executables',
type: 'feature',
value: 'disabled')
+option('installed_test_prefix',
+ description: 'Prefix for installed tests',
+ type: 'string')
option('gstreamer',
description: 'Build GStreamer plugins',
type: 'feature',

View File

@@ -0,0 +1,278 @@
{
stdenv,
lib,
testers,
buildPackages,
fetchFromGitLab,
python3,
meson,
ninja,
freebsd,
elogind,
libinotify-kqueue,
epoll-shim,
systemd,
enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, # enableSystemd=false maintained by maintainers.qyliss.
pkg-config,
docutils,
doxygen,
graphviz,
glib,
dbus,
alsa-lib,
libjack2,
libusb1,
udev,
libsndfile,
vulkanSupport ? true,
vulkan-headers,
vulkan-loader,
webrtc-audio-processing,
ncurses,
readline, # meson can't find <7 as those versions don't have a .pc file
lilv,
makeFontsConf,
nixosTests,
valgrind,
libcamera,
libdrm,
gst_all_1,
ffmpeg,
fftwFloat,
bluezSupport ? stdenv.hostPlatform.isLinux,
bluez,
sbc,
libfreeaptx,
liblc3,
fdk_aac,
libopus,
ldacbt,
modemmanager,
libpulseaudio,
zeroconfSupport ? true,
avahi,
raopSupport ? true,
openssl,
rocSupport ? true,
roc-toolkit,
x11Support ? true,
libcanberra,
xorg,
libmysofa,
ffadoSupport ?
x11Support
&& lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform
&& lib.meta.availableOn stdenv.hostPlatform ffado,
ffado,
libselinux,
libebur128,
}:
let
modemmanagerSupport = lib.meta.availableOn stdenv.hostPlatform modemmanager;
libcameraSupport = lib.meta.availableOn stdenv.hostPlatform libcamera;
ldacbtSupport = lib.meta.availableOn stdenv.hostPlatform ldacbt;
webrtcAudioProcessingSupport = lib.meta.availableOn stdenv.hostPlatform webrtc-audio-processing;
in
stdenv.mkDerivation (finalAttrs: {
pname = "pipewire";
version = "1.4.8";
outputs = [
"out"
"jack"
"dev"
"doc"
"man"
"installedTests"
];
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "pipewire";
repo = "pipewire";
rev = finalAttrs.version;
sha256 = "sha256-o4puApKXW4pQ0DRcLgZTDor8CAxKehn7Zi56/PzrSLU=";
};
patches = [
# Load libjack from a known location
./0060-libjack-path.patch
# Move installed tests into their own output.
./0070-installed-tests-path.patch
];
strictDeps = true;
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [
docutils
doxygen
graphviz
meson
ninja
pkg-config
python3
glib
];
buildInputs = [
dbus
ffmpeg
fftwFloat
glib
gst_all_1.gst-plugins-base
gst_all_1.gstreamer
libebur128
libjack2
libmysofa
libopus
libpulseaudio
libusb1
libsndfile
lilv
ncurses
readline
]
++ (
if enableSystemd then
[ systemd ]
else if stdenv.hostPlatform.isLinux then
[
elogind
udev
]
else
[ ]
)
++ lib.optionals stdenv.hostPlatform.isFreeBSD [
libinotify-kqueue
epoll-shim
freebsd.libstdthreads
]
++ lib.optional webrtcAudioProcessingSupport webrtc-audio-processing
++ lib.optional stdenv.hostPlatform.isLinux alsa-lib
++ lib.optional ldacbtSupport ldacbt
++ lib.optional libcameraSupport libcamera
++ lib.optional zeroconfSupport avahi
++ lib.optional raopSupport openssl
++ lib.optional rocSupport roc-toolkit
++ lib.optionals vulkanSupport [
libdrm
vulkan-headers
vulkan-loader
]
++ lib.optionals x11Support [
libcanberra
xorg.libX11
xorg.libxcb
xorg.libXfixes
]
++ lib.optionals bluezSupport [
bluez
libfreeaptx
liblc3
sbc
fdk_aac
]
++ lib.optional ffadoSupport ffado
++ lib.optional stdenv.hostPlatform.isLinux libselinux
++ lib.optional modemmanagerSupport modemmanager;
# Valgrind binary is required for running one optional test.
nativeCheckInputs = lib.optional (lib.meta.availableOn stdenv.hostPlatform valgrind) valgrind;
mesonFlags = [
(lib.mesonEnable "pipewire-alsa" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "alsa" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "docs" true)
(lib.mesonOption "udevrulesdir" "lib/udev/rules.d")
(lib.mesonEnable "installed_tests" true)
(lib.mesonOption "installed_test_prefix" (placeholder "installedTests"))
(lib.mesonOption "libjack-path" "${placeholder "jack"}/lib")
(lib.mesonEnable "echo-cancel-webrtc" webrtcAudioProcessingSupport)
(lib.mesonEnable "libcamera" (lib.meta.availableOn stdenv.hostPlatform libcamera))
(lib.mesonEnable "libffado" ffadoSupport)
(lib.mesonEnable "roc" rocSupport)
(lib.mesonEnable "libpulse" true)
(lib.mesonEnable "avahi" zeroconfSupport)
(lib.mesonEnable "gstreamer" true)
(lib.mesonEnable "gstreamer-device-provider" true)
(lib.mesonOption "logind-provider" (if enableSystemd then "libsystemd" else "libelogind"))
(lib.mesonEnable "logind" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "selinux" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "avb" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "v4l2" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "pipewire-v4l2" stdenv.hostPlatform.isLinux)
(lib.mesonEnable "systemd" enableSystemd)
(lib.mesonEnable "systemd-system-service" enableSystemd)
(lib.mesonEnable "udev" (!enableSystemd && stdenv.hostPlatform.isLinux))
(lib.mesonEnable "ffmpeg" true)
(lib.mesonEnable "pw-cat-ffmpeg" true)
(lib.mesonEnable "bluez5" bluezSupport)
(lib.mesonEnable "bluez5-backend-hsp-native" bluezSupport)
(lib.mesonEnable "bluez5-backend-hfp-native" bluezSupport)
(lib.mesonEnable "bluez5-backend-native-mm" bluezSupport)
(lib.mesonEnable "bluez5-backend-ofono" bluezSupport)
(lib.mesonEnable "bluez5-backend-hsphfpd" bluezSupport)
# source code is not easily obtainable
(lib.mesonEnable "bluez5-codec-lc3plus" false)
(lib.mesonEnable "bluez5-codec-lc3" bluezSupport)
(lib.mesonEnable "bluez5-codec-ldac" (bluezSupport && ldacbtSupport))
(lib.mesonEnable "opus" true)
(lib.mesonOption "sysconfdir" "/etc")
(lib.mesonEnable "raop" raopSupport)
(lib.mesonOption "session-managers" "")
(lib.mesonEnable "vulkan" vulkanSupport)
(lib.mesonEnable "x11" x11Support)
(lib.mesonEnable "x11-xfixes" x11Support)
(lib.mesonEnable "libcanberra" x11Support)
(lib.mesonEnable "libmysofa" true)
(lib.mesonEnable "sdl2" false) # required only to build examples, causes dependency loop
(lib.mesonBool "rlimits-install" false) # installs to /etc, we won't use this anyway
(lib.mesonEnable "compress-offload" true)
(lib.mesonEnable "man" true)
(lib.mesonEnable "snap" false) # we don't currently have a working snapd
];
# Fontconfig error: Cannot load default config file
FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; };
doCheck = true;
doInstallCheck = true;
postPatch = ''
patchShebangs doc/*.py
patchShebangs doc/input-filter-h.sh
# Remove installed-test that runs forever
sed -i -e "/test-pipewire-alsa-stress/d" pipewire-alsa/tests/meson.build
'';
postInstall = ''
moveToOutput "bin/pw-jack" "$jack"
'';
passthru.tests = {
installed-tests = nixosTests.installed-tests.pipewire;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
meta = with lib; {
description = "Server and user space API to deal with multimedia pipelines";
changelog = "https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/${finalAttrs.version}";
homepage = "https://pipewire.org/";
license = licenses.mit;
platforms = platforms.linux ++ platforms.freebsd;
maintainers = with maintainers; [
kranzes
k900
];
pkgConfigModules = [
"libpipewire-0.3"
"libspa-0.2"
];
};
})

View File

@@ -0,0 +1,95 @@
{
lib,
stdenv,
fetchFromGitLab,
nix-update-script,
# base build deps
meson,
pkg-config,
ninja,
# docs build deps
python3,
doxygen,
graphviz,
# GI build deps
gobject-introspection,
# runtime deps
glib,
systemd,
lua5_4,
pipewire,
# options
enableDocs ? true,
enableGI ? true,
}:
stdenv.mkDerivation rec {
pname = "wireplumber";
version = "0.5.11";
outputs = [
"out"
"dev"
]
++ lib.optional enableDocs "doc";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "pipewire";
repo = "wireplumber";
rev = version;
hash = "sha256-ZTduzHeEBqcranJxHhNnfZE5PV/by5ZUaale9W6AJrE=";
};
nativeBuildInputs = [
meson
pkg-config
ninja
]
++ lib.optionals enableDocs [
graphviz
]
++ lib.optionals enableGI [
gobject-introspection
]
++ lib.optionals (enableDocs || enableGI) [
doxygen
(python3.pythonOnBuildForHost.withPackages (
ps:
with ps;
lib.optionals enableDocs [
sphinx
sphinx-rtd-theme
breathe
]
++ lib.optionals enableGI [ lxml ]
))
];
buildInputs = [
glib
systemd
lua5_4
pipewire
];
mesonFlags = [
(lib.mesonBool "system-lua" true)
(lib.mesonEnable "elogind" false)
(lib.mesonEnable "doc" enableDocs)
(lib.mesonEnable "introspection" enableGI)
(lib.mesonBool "systemd-system-service" true)
(lib.mesonOption "systemd-system-unit-dir" "${placeholder "out"}/lib/systemd/system")
(lib.mesonOption "sysconfdir" "/etc")
];
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Modular session / policy manager for PipeWire";
homepage = "https://pipewire.org";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ k900 ];
};
}