From 626673b6d773dbbb3b81208cf7a5ced407b80a85 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold Date: Tue, 6 Oct 2020 12:10:08 +0200 Subject: firefox: ensure pipewire is only enabled with wayland & webrtc This ensures that we aren't applying any of the experiemental pipewire patches when the dependencies aren't enabled. As of now pipewire only works with wayland and webrtc. If either of them are not activated we can't build with pipewireSupport and we should not. (cherry picked from commit a5a01d56a20ea7bfbc4c0e3b376f95d3de467a4d) --- .../applications/networking/browsers/firefox/common.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'nixpkgs/pkgs/applications/networking/browsers/firefox') diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix index 790926ad8a96..d6e1f39bc0dc 100644 --- a/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix +++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix @@ -22,7 +22,8 @@ , ffmpegSupport ? true , gtk3Support ? true, gtk2, gtk3, wrapGAppsHook , gssSupport ? true, kerberos -, waylandSupport ? gtk3Support, libxkbcommon, pipewire +, waylandSupport ? gtk3Support, libxkbcommon +, pipewireSupport ? waylandSupport && webrtcSupport, pipewire ## privacy-related options @@ -69,6 +70,7 @@ }: assert stdenv.cc.libc or null != null; +assert pipewireSupport -> !waylandSupport || !webrtcSupport -> throw "pipewireSupport requires both wayland and webrtc support."; let flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")]; @@ -84,6 +86,7 @@ let execdir = if stdenv.isDarwin then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS" else "/bin"; + in stdenv.mkDerivation ({ @@ -94,12 +97,12 @@ stdenv.mkDerivation ({ patches = [ ./env_var_for_system_dir.patch + ] ++ lib.optional pipewireSupport (fetchpatch { # https://src.fedoraproject.org/rpms/firefox/blob/master/f/firefox-pipewire-0-3.patch url = "https://src.fedoraproject.org/rpms/firefox/raw/e99b683a352cf5b2c9ff198756859bae408b5d9d/f/firefox-pipewire-0-3.patch"; sha256 = "0qc62di5823r7ly2lxkclzj9rhg2z7ms81igz44nv0fzv3dszdab"; }) - ] ++ patches; @@ -129,7 +132,8 @@ stdenv.mkDerivation ({ ++ lib.optional gtk3Support gtk3 ++ lib.optional waylandSupport libxkbcommon ++ lib.optional gssSupport kerberos - ++ lib.optionals waylandSupport [ libxkbcommon pipewire ] + ++ lib.optionals waylandSupport [ libxkbcommon ] + ++ lib.optionals pipewireSupport [ pipewire ] ++ lib.optionals stdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos AVFoundation MediaToolbox CoreLocation Foundation libobjc AddressBook cups ]; @@ -143,8 +147,10 @@ stdenv.mkDerivation ({ postPatch = '' rm -rf obj-x86_64-pc-linux-gnu - - # needed for enabling webrtc+pipewire + '' + lib.optionalString pipewireSupport '' + # substitute the /usr/include/ lines for the libraries that pipewire provides. + # The patch we pick from fedora only contains the generated moz.build files + # which hardcode the dependency paths instead of running pkg_config. substituteInPlace \ media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build \ --replace /usr/include ${pipewire.dev}/include -- cgit 1.4.1