3
0
Fork 0
forked from mirrors/nixpkgs
nixpkgs/pkgs/applications/networking/browsers/firefox/default.nix
William A. Kennington III f6c1004b2a firefox: Use more system libraries
Use system libpng with apng support.
Use the system icu which works fine in newer firefox builds.
Use jemalloc to speed up memory allocations and reduce fragmentation.
2015-08-05 23:26:34 -07:00

119 lines
4 KiB
Nix

{ lib, stdenv, fetchurl, pkgconfig, gtk, gtk3, pango, perl, python, zip, libIDL
, libjpeg, zlib, dbus, dbus_glib, bzip2, xlibs
, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
, yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
, hunspell, libevent, libstartup_notification, libvpx
, cairo, gst_all_1, icu, libpng, jemalloc
, enableGTK3 ? false
, debugBuild ? false
, # If you want the resulting program to call itself "Firefox" instead
# of "Shiretoko" or whatever, enable this option. However, those
# binaries may not be distributed without permission from the
# Mozilla Foundation, see
# http://www.mozilla.org/foundation/trademarks/.
enableOfficialBranding ? false
}:
assert stdenv.cc ? libc && stdenv.cc.libc != null;
let version = "39.0"; in
stdenv.mkDerivation rec {
name = "firefox-${version}";
src = fetchurl {
url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2";
sha1 = "32785daee7ddb9da8d7509ef095258fc58fe838e";
};
buildInputs =
[ pkgconfig gtk perl zip libIDL libjpeg zlib bzip2
python dbus dbus_glib pango freetype fontconfig xlibs.libXi
xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file
alsaLib nspr nss libnotify xlibs.pixman yasm mesa
xlibs.libXScrnSaver xlibs.scrnsaverproto pysqlite
xlibs.libXext xlibs.xextproto sqlite unzip makeWrapper
hunspell libevent libstartup_notification libvpx cairo
gst_all_1.gstreamer gst_all_1.gst-plugins-base icu libpng
jemalloc
]
++ lib.optional enableGTK3 gtk3;
configureFlags =
[ "--enable-application=browser"
"--disable-javaxpcom"
"--with-system-jpeg"
"--with-system-zlib"
"--with-system-bz2"
"--with-system-nspr"
"--with-system-nss"
"--with-system-libevent"
"--with-system-libvpx"
"--with-system-png" # needs APNG support
"--with-system-icu"
"--enable-system-ffi"
"--enable-system-hunspell"
"--enable-system-pixman"
"--enable-system-sqlite"
"--enable-system-cairo"
"--enable-gstreamer=1.0"
"--enable-startup-notification"
"--enable-content-sandbox" # available since 26.0, but not much info available
"--disable-content-sandbox-reporter" # keeping disabled for now
"--disable-crashreporter"
"--disable-tests"
"--disable-necko-wifi" # maybe we want to enable this at some point
"--disable-installer"
"--disable-updater"
"--disable-pulseaudio"
"--enable-jemalloc"
]
++ lib.optional enableGTK3 "--enable-default-toolkit=cairo-gtk3"
++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
else [ "--disable-debug" "--enable-release"
"--enable-optimize${lib.optionalString (stdenv.system == "i686-linux") "=-O1"}"
"--enable-strip" ])
++ lib.optional enableOfficialBranding "--enable-official-branding";
enableParallelBuilding = true;
preConfigure =
''
mkdir ../objdir
cd ../objdir
configureScript=../mozilla-release/configure
'';
preInstall =
''
# The following is needed for startup cache creation on grsecurity kernels.
paxmark m ../objdir/dist/bin/xpcshell
'';
postInstall =
''
# For grsecurity kernels
paxmark m $out/lib/${name}/{firefox,firefox-bin,plugin-container}
# Remove SDK cruft. FIXME: move to a separate output?
rm -rf $out/share/idl $out/include $out/lib/firefox-devel-*
'' + lib.optionalString enableGTK3
''
wrapProgram "$out/bin/firefox" \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \
--suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
'';
meta = {
description = "Web browser";
homepage = http://www.mozilla.com/en-US/firefox/;
maintainers = with lib.maintainers; [ eelco ];
platforms = lib.platforms.linux;
};
passthru = {
inherit gtk nspr version;
isFirefox3Like = true;
};
}