From e7bc7a0e4a3db07ba357deaf5583ee2b16c5263b Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 18 May 2025 12:22:00 +0200 Subject: [PATCH 1/6] signal-desktop.webrtc: patch in absolute lib paths for dynamic loader Signed-off-by: Marcin Serwin --- pkgs/by-name/si/signal-desktop/webrtc.nix | 24 +++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/pkgs/by-name/si/signal-desktop/webrtc.nix b/pkgs/by-name/si/signal-desktop/webrtc.nix index 4b36523276b4..320a9ee0c156 100644 --- a/pkgs/by-name/si/signal-desktop/webrtc.nix +++ b/pkgs/by-name/si/signal-desktop/webrtc.nix @@ -19,14 +19,6 @@ stdenv.mkDerivation (finalAttrs: { gclientDeps = gclient2nix.importGclientDeps ./webrtc-sources.json; sourceRoot = "src"; - preConfigure = '' - echo "$SOURCE_DATE_EPOCH" > build/util/LASTCHANGE.committime - echo "generate_location_tags = true" >> build/config/gclient_args.gni - substituteInPlace build/toolchain/linux/BUILD.gn \ - --replace-fail 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""' - patchShebangs build/mac/should_use_hermetic_xcode.py - ''; - nativeBuildInputs = [ gn ninja @@ -44,6 +36,22 @@ stdenv.mkDerivation (finalAttrs: { pulseaudio ]; + postPatch = '' + substituteInPlace build/toolchain/linux/BUILD.gn \ + --replace-fail 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""' + patchShebangs build/mac/should_use_hermetic_xcode.py + + substituteInPlace modules/audio_device/linux/pulseaudiosymboltable_linux.cc \ + --replace-fail "libpulse.so.0" "${pulseaudio}/lib/libpulse.so.0" + substituteInPlace modules/audio_device/linux/alsasymboltable_linux.cc \ + --replace-fail "libasound.so.2" "${alsa-lib}/lib/libasound.so.2" + ''; + + preConfigure = '' + echo "$SOURCE_DATE_EPOCH" > build/util/LASTCHANGE.committime + echo "generate_location_tags = true" >> build/config/gclient_args.gni + ''; + gnFlags = [ ''target_os="linux"'' "use_sysroot=false" From 43a985240731a5244ac6283e3050f05a393195b4 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 18 May 2025 12:22:00 +0200 Subject: [PATCH 2/6] signal-desktop.webrtc: execute install hooks Signed-off-by: Marcin Serwin --- pkgs/by-name/si/signal-desktop/webrtc.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/by-name/si/signal-desktop/webrtc.nix b/pkgs/by-name/si/signal-desktop/webrtc.nix index 320a9ee0c156..ee4b81b0a7e4 100644 --- a/pkgs/by-name/si/signal-desktop/webrtc.nix +++ b/pkgs/by-name/si/signal-desktop/webrtc.nix @@ -74,7 +74,11 @@ stdenv.mkDerivation (finalAttrs: { ninjaFlags = [ "webrtc" ]; installPhase = '' + runHook preInstall + install -D obj/libwebrtc${stdenv.hostPlatform.extensions.staticLibrary} $out/lib/libwebrtc${stdenv.hostPlatform.extensions.staticLibrary} + + runHook postInstall ''; meta = { From 8600e6b358f42530a0fc0ef25e5a1b788d049d05 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 18 May 2025 23:25:24 +0200 Subject: [PATCH 3/6] cubeb: add myself to maintainers Signed-off-by: Marcin Serwin --- pkgs/by-name/cu/cubeb/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/cu/cubeb/package.nix b/pkgs/by-name/cu/cubeb/package.nix index f736e87e8290..a85f999bbdcd 100644 --- a/pkgs/by-name/cu/cubeb/package.nix +++ b/pkgs/by-name/cu/cubeb/package.nix @@ -64,6 +64,9 @@ stdenv.mkDerivation { homepage = "https://github.com/mozilla/cubeb"; license = licenses.isc; platforms = platforms.linux ++ platforms.darwin; - maintainers = with maintainers; [ zhaofengli ]; + maintainers = with maintainers; [ + zhaofengli + marcin-serwin + ]; }; } From d33be52bb886488f23c8a6b5c3b81a8383b5bfce Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 18 May 2025 16:06:32 +0200 Subject: [PATCH 4/6] cubeb: make derivation customizable Signed-off-by: Marcin Serwin --- pkgs/by-name/cu/cubeb/package.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/cu/cubeb/package.nix b/pkgs/by-name/cu/cubeb/package.nix index a85f999bbdcd..1ed7df1635f9 100644 --- a/pkgs/by-name/cu/cubeb/package.nix +++ b/pkgs/by-name/cu/cubeb/package.nix @@ -10,6 +10,11 @@ sndio, speexdsp, lazyLoad ? !stdenv.hostPlatform.isDarwin, + alsaSupport ? !stdenv.hostPlatform.isDarwin, + pulseSupport ? !stdenv.hostPlatform.isDarwin, + jackSupport ? !stdenv.hostPlatform.isDarwin, + sndioSupport ? !stdenv.hostPlatform.isDarwin, + buildSharedLibs ? true, }: assert lib.assertMsg ( @@ -17,12 +22,11 @@ assert lib.assertMsg ( ) "cubeb: lazyLoad is inert on Darwin"; let - backendLibs = [ - alsa-lib - jack2 - libpulseaudio - sndio - ]; + backendLibs = + lib.optional alsaSupport alsa-lib + ++ lib.optional jackSupport jack2 + ++ lib.optional pulseSupport libpulseaudio + ++ lib.optional sndioSupport sndio; in stdenv.mkDerivation { @@ -44,7 +48,7 @@ stdenv.mkDerivation { buildInputs = [ speexdsp ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) backendLibs; cmakeFlags = [ - "-DBUILD_SHARED_LIBS=ON" + (lib.cmakeBool "BUILD_SHARED_LIBS" buildSharedLibs) "-DBUILD_TESTS=OFF" # tests require an audio server "-DBUNDLE_SPEEX=OFF" "-DUSE_SANITIZERS=OFF" From a87981df9aa3280e7b150ff16a8830ad0d7f7007 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 18 May 2025 16:06:32 +0200 Subject: [PATCH 5/6] cubeb: install pkg-config file Signed-off-by: Marcin Serwin --- pkgs/by-name/cu/cubeb/package.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/by-name/cu/cubeb/package.nix b/pkgs/by-name/cu/cubeb/package.nix index 1ed7df1635f9..434945d371b5 100644 --- a/pkgs/by-name/cu/cubeb/package.nix +++ b/pkgs/by-name/cu/cubeb/package.nix @@ -62,6 +62,18 @@ stdenv.mkDerivation { backendLibs = lib.optionals lazyLoad backendLibs; }; + postInstall = '' + # TODO: remove after https://github.com/mozilla/cubeb/pull/813 is merged + mkdir -p $out/lib/pkgconfig/ + echo > $out/lib/pkgconfig/libcubeb.pc \ + "Name: libcubeb + Description: Cross platform audio library + Version: 0.0.0 + Requires.private: libpulse + Libs: -L"$out/lib" -lcubeb + Libs.private: -lstdc++" + ''; + meta = with lib; { description = "Cross platform audio library"; mainProgram = "cubeb-test"; From eead148a3b84189591d70cf3447fc6a1bd65202b Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 18 May 2025 16:06:32 +0200 Subject: [PATCH 6/6] signal-desktop.ringrtc: use cubeb from nixpkgs Signed-off-by: Marcin Serwin --- pkgs/by-name/si/signal-desktop/ringrtc.nix | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/si/signal-desktop/ringrtc.nix b/pkgs/by-name/si/signal-desktop/ringrtc.nix index 13be50c38e60..9c2cb97be71c 100644 --- a/pkgs/by-name/si/signal-desktop/ringrtc.nix +++ b/pkgs/by-name/si/signal-desktop/ringrtc.nix @@ -5,8 +5,19 @@ cmake, protobuf, webrtc, + pkg-config, + cubeb, + libpulseaudio, }: - +let + cubeb' = cubeb.override { + alsaSupport = false; + pulseSupport = true; + jackSupport = false; + sndioSupport = false; + buildSharedLibs = false; + }; +in rustPlatform.buildRustPackage (finalAttrs: { pname = "ringrtc"; version = "2.51.0"; @@ -28,12 +39,20 @@ rustPlatform.buildRustPackage (finalAttrs: { ]; doCheck = false; + env = { + LIBCUBEB_SYS_USE_PKG_CONFIG = 1; + LIBCUBEB_STATIC = 1; + }; + nativeBuildInputs = [ protobuf cmake + pkg-config ]; buildInputs = [ webrtc + cubeb' + libpulseaudio ]; meta = {