diff options
Diffstat (limited to 'pkgs/applications/networking/browsers/firefox/common.nix')
-rw-r--r-- | pkgs/applications/networking/browsers/firefox/common.nix | 79 |
1 files changed, 41 insertions, 38 deletions
diff --git a/pkgs/applications/networking/browsers/firefox/common.nix b/pkgs/applications/networking/browsers/firefox/common.nix index bfdb5fcc0103..b72e3703ef7e 100644 --- a/pkgs/applications/networking/browsers/firefox/common.nix +++ b/pkgs/applications/networking/browsers/firefox/common.nix @@ -1,7 +1,7 @@ -{ pname, version, updateScript ? null -, src, patches ? [], extraConfigureFlags ? [], extraMakeFlags ? [] -, overrides ? {}, extraNativeBuildInputs ? [], meta -, isTorBrowserLike ? false }: +{ pname, ffversion, meta, updateScript ? null +, src, unpackPhase ? null, patches ? [] +, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? [] +, isTorBrowserLike ? false, tbversion ? null }: { lib, stdenv, pkgconfig, pango, perl, python2, zip, libIDL , libjpeg, zlib, dbus, dbus-glib, bzip2, xorg @@ -19,7 +19,7 @@ , alsaSupport ? stdenv.isLinux, alsaLib , pulseaudioSupport ? true, libpulseaudio , ffmpegSupport ? true, gstreamer, gst-plugins-base -, gtk3Support ? !isTorBrowserLike, gtk2, gtk3, wrapGAppsHook +, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook , gssSupport ? true, kerberos ## privacy-related options @@ -31,7 +31,7 @@ # webrtcSupport breaks the aarch64 build on version >= 60. # https://bugzilla.mozilla.org/show_bug.cgi?id=1434589 -, webrtcSupport ? (if lib.versionAtLeast version "60" && stdenv.isAarch64 then false else !privacySupport) +, webrtcSupport ? (if lib.versionAtLeast ffversion "60" && stdenv.isAarch64 then false else !privacySupport) , geolocationSupport ? !privacySupport , googleAPISupport ? geolocationSupport , crashreporterSupport ? false @@ -80,23 +80,24 @@ let browserName = if stdenv.isDarwin then "Firefox" else "firefox"; in -stdenv.mkDerivation (rec { +stdenv.mkDerivation rec { name = "${pname}-unwrapped-${version}"; + version = if !isTorBrowserLike then ffversion else tbversion; - inherit src patches meta; + inherit src unpackPhase patches meta; buildInputs = [ gtk2 perl zip libIDL libjpeg zlib bzip2 dbus dbus-glib pango freetype fontconfig xorg.libXi xorg.libXcursor xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file - nspr libnotify xorg.pixman yasm libGLU_combined + libnotify xorg.pixman yasm libGLU_combined xorg.libXScrnSaver xorg.scrnsaverproto xorg.libXext xorg.xextproto sqlite unzip makeWrapper libevent libstartup_notification libvpx /* cairo */ icu libpng jemalloc glib ] - ++ lib.optionals (!isTorBrowserLike) [ nss ] - ++ lib.optional (lib.versionOlder version "61") hunspell + ++ lib.optionals (!isTorBrowserLike) [ nspr nss ] + ++ lib.optional (lib.versionOlder ffversion "61") hunspell ++ lib.optional alsaSupport alsaLib ++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed ++ lib.optionals ffmpegSupport [ gstreamer gst-plugins-base ] @@ -106,12 +107,17 @@ stdenv.mkDerivation (rec { AVFoundation MediaToolbox CoreLocation Foundation libobjc AddressBook cups ]; - NIX_CFLAGS_COMPILE = [ "-I${nspr.dev}/include/nspr" - "-I${nss.dev}/include/nss" - "-I${glib.dev}/include/gio-unix-2.0" ] - ++ lib.optional stdenv.isDarwin [ - "-isystem ${llvmPackages.libcxx}/include/c++/v1" - "-DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_10" ]; + NIX_CFLAGS_COMPILE = [ + "-I${glib.dev}/include/gio-unix-2.0" + ] + ++ lib.optionals (!isTorBrowserLike) [ + "-I${nspr.dev}/include/nspr" + "-I${nss.dev}/include/nss" + ] + ++ lib.optional stdenv.isDarwin [ + "-isystem ${llvmPackages.libcxx}/include/c++/v1" + "-DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_10" + ]; postPatch = lib.optionalString stdenv.isDarwin '' substituteInPlace js/src/jsmath.cpp --replace 'defined(HAVE___SINCOS)' 0 @@ -128,14 +134,14 @@ stdenv.mkDerivation (rec { rm -f configure rm -f js/src/configure rm -f .mozconfig* - '' + (if lib.versionAtLeast version "58" + '' + (if lib.versionAtLeast ffversion "58" # this will run autoconf213 then '' configureScript="$(realpath ./mach) configure" '' else '' make -f client.mk configure-files configureScript="$(realpath ./configure)" - '') + lib.optionalString (!isTorBrowserLike && lib.versionAtLeast version "53") '' + '') + lib.optionalString (lib.versionAtLeast ffversion "53") '' export MOZCONFIG=$(pwd)/mozconfig # Set C flags for Rust's bindgen program. Unlike ordinary C @@ -158,7 +164,7 @@ stdenv.mkDerivation (rec { # please get your own set of keys. echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/ga configureFlagsArray+=("--with-google-api-keyfile=$TMPDIR/ga") - '' + lib.optionalString (lib.versionOlder version "58") '' + '' + lib.optionalString (lib.versionOlder ffversion "58") '' cd obj-* ''; @@ -185,37 +191,29 @@ stdenv.mkDerivation (rec { "--disable-gconf" "--enable-default-toolkit=${default-toolkit}" ] - ++ lib.optional (stdenv.isDarwin && lib.versionAtLeast version "61") "--disable-xcode-checks" - ++ lib.optional (lib.versionOlder version "61") "--enable-system-hunspell" - ++ lib.optionals (lib.versionAtLeast version "56" && !stdenv.hostPlatform.isi686) [ + ++ lib.optional (stdenv.isDarwin && lib.versionAtLeast ffversion "61") "--disable-xcode-checks" + ++ lib.optional (lib.versionOlder ffversion "61") "--enable-system-hunspell" + ++ lib.optionals (lib.versionAtLeast ffversion "56" && !stdenv.hostPlatform.isi686) [ # on i686-linux: --with-libclang-path is not available in this configuration "--with-libclang-path=${llvmPackages.libclang}/lib" "--with-clang-path=${llvmPackages.clang}/bin/clang" ] - ++ lib.optionals (lib.versionAtLeast version "57") [ + ++ lib.optionals (lib.versionAtLeast ffversion "57") [ "--enable-webrender=build" ] # TorBrowser patches these ++ lib.optionals (!isTorBrowserLike) [ - "--with-system-nss" "--with-system-nspr" + "--with-system-nss" ] # and wants these ++ lib.optionals isTorBrowserLike ([ - "--with-tor-browser-version=${version}" + "--with-tor-browser-version=${tbversion}" "--enable-signmar" "--enable-verify-mar" - - # We opt out of TorBrowser's nspr because that patch is useless on - # anything but Windows and produces zero fingerprinting - # possibilities on other platforms. - # Lets save some space instead. - "--with-system-nspr" - ] ++ flag geolocationSupport "mozril-geoloc" - ++ flag safeBrowsingSupport "safe-browsing" - ) + ]) ++ flag alsaSupport "alsa" ++ flag pulseaudioSupport "pulseaudio" @@ -226,6 +224,11 @@ stdenv.mkDerivation (rec { ++ flag crashreporterSupport "crashreporter" ++ lib.optional drmSupport "--enable-eme=widevine" + ++ lib.optionals (lib.versionOlder ffversion "60") ([] + ++ flag geolocationSupport "mozril-geoloc" + ++ flag safeBrowsingSupport "safe-browsing" + ) + ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ] else [ "--disable-debug" "--enable-release" "--enable-optimize" @@ -239,11 +242,11 @@ stdenv.mkDerivation (rec { # top level and then run `make` in obj-*. (We can also run the # `make` at the top level in 58, but then we would have to `cd` to # `make install` anyway. This is ugly, but simple.) - postConfigure = lib.optionalString (lib.versionAtLeast version "58") '' + postConfigure = lib.optionalString (lib.versionAtLeast ffversion "58") '' cd obj-* ''; - preBuild = lib.optionalString (enableOfficialBranding && isTorBrowserLike) '' + preBuild = lib.optionalString isTorBrowserLike '' buildFlagsArray=("MOZ_APP_DISPLAYNAME=Tor Browser") ''; @@ -302,4 +305,4 @@ stdenv.mkDerivation (rec { inherit browserName; } // lib.optionalAttrs gtk3Support { inherit gtk3; }; -} // overrides) +} |