Make Firefox 16 the default

This commit is contained in:
Eelco Dolstra 2012-10-23 15:35:48 +02:00
parent 8b9f3e9de4
commit 56cee6fe5c
4 changed files with 12 additions and 198 deletions

View File

@ -1,181 +0,0 @@
{ stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL
, libjpeg, libpng, zlib, cairo, dbus, dbus_glib, bzip2, xlibs
, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
, yasm, mesa, sqlite, unzip
, # 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.gcc ? libc && stdenv.gcc.libc != null;
rec {
firefoxVersion = "12.0";
xulVersion = "12.0"; # this attribute is used by other packages
src = fetchurl {
url = "ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2";
sha1 = "0177185e54b7d63dc36bd5bd5c80ba6afd52e199";
};
commonConfigureFlags =
[ "--enable-optimize"
"--disable-debug"
"--enable-strip"
"--with-system-jpeg"
"--with-system-zlib"
"--with-system-bz2"
"--with-system-nspr"
"--with-system-nss"
# "--with-system-png" # <-- "--with-system-png won't work because the system's libpng doesn't have APNG support"
# "--enable-system-cairo" # disabled for the moment because our Cairo is too old
"--enable-system-sqlite"
"--disable-crashreporter"
"--disable-tests"
"--disable-necko-wifi" # maybe we want to enable this at some point
"--disable-installer"
"--disable-updater"
];
xulrunner = stdenv.mkDerivation rec {
name = "xulrunner-${xulVersion}";
inherit src;
buildInputs =
[ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo 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
xlibs.libXext xlibs.xextproto sqlite unzip
];
configureFlags =
[ "--enable-application=xulrunner"
"--disable-javaxpcom"
] ++ commonConfigureFlags;
enableParallelBuilding = true;
# Hack to work around make's idea of -lbz2 dependency
preConfigure =
''
find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
stdenv.lib.concatStringsSep ":"
(map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
}' ';'
export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}"
'';
# !!! Temporary hack.
preBuild =
''
export NIX_ENFORCE_PURITY=
'';
installFlags = "SKIP_GRE_REGISTRATION=1";
postInstall = ''
# Fix some references to /bin paths in the Xulrunner shell script.
substituteInPlace $out/bin/xulrunner \
--replace /bin/pwd "$(type -tP pwd)" \
--replace /bin/ls "$(type -tP ls)"
# Fix run-mozilla.sh search
libDir=$(cd $out/lib && ls -d xulrunner-[0-9]*)
echo libDir: $libDir
test -n "$libDir"
cd $out/bin
mv xulrunner ../lib/$libDir/
for i in $out/lib/$libDir/*; do
file $i;
if file $i | grep executable &>/dev/null; then
echo -e '#! /bin/sh\n"'"$i"'" "$@"' > "$out/bin/$(basename "$i")";
chmod a+x "$out/bin/$(basename "$i")";
fi;
done;
for i in $out/lib/$libDir/{xpcshell,plugin-container,*.so}; do
patchelf --set-rpath "$(patchelf --print-rpath "$i"):$out/lib/$libDir" $i || true
done;
rm -f $out/bin/run-mozilla.sh
''; # */
meta = {
description = "Mozilla Firefox XUL runner";
homepage = http://www.mozilla.com/en-US/firefox/;
};
passthru = { inherit gtk; version = xulVersion; };
};
firefox = stdenv.mkDerivation rec {
name = "firefox-${firefoxVersion}";
inherit src;
enableParallelBuilding = true;
buildInputs =
[ pkgconfig gtk perl zip libIDL libjpeg zlib cairo bzip2 python
dbus dbus_glib pango freetype fontconfig alsaLib nspr nss libnotify
xlibs.pixman yasm mesa sqlite file unzip
];
propagatedBuildInputs = [xulrunner];
configureFlags =
[ "--enable-application=browser"
"--with-libxul-sdk=${xulrunner}/lib/xulrunner-devel-${xulrunner.version}"
"--enable-chrome-format=jar"
"--disable-elf-hack"
]
++ commonConfigureFlags
++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding";
# Hack to work around make's idea of -lbz2 dependency
preConfigure =
''
find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
stdenv.lib.concatStringsSep ":"
(map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
}' ';'
'';
postInstall =
''
ln -s ${xulrunner}/lib/xulrunner-${xulrunner.version} $(echo $out/lib/firefox-*)/xulrunner
for j in $out/bin/*; do
i="$(readlink "$j")";
file $i;
if file $i | grep executable &>/dev/null; then
rm "$out/bin/$(basename "$i")"
echo -e '#! /bin/sh\nexec "'"$i"'" "$@"' > "$out/bin/$(basename "$i")"
chmod a+x "$out/bin/$(basename "$i")"
fi;
done;
''; # */
meta = {
description = "Mozilla Firefox - the browser, reloaded";
homepage = http://www.mozilla.com/en-US/firefox/;
maintainers = [ stdenv.lib.maintainers.eelco ];
};
passthru = {
inherit gtk xulrunner nspr;
isFirefox3Like = true;
};
};
}

View File

@ -24,7 +24,7 @@ rec {
then attrByPath (tail attrPath) default (getAttr attr e) then attrByPath (tail attrPath) default (getAttr attr e)
else default; else default;
/* Return nested attribute set in which an attribute is set. For instance /* Return nested attribute set in which an attribute is set. For instance
["x" "y"] applied with some value v returns `x.y = v;' */ ["x" "y"] applied with some value v returns `x.y = v;' */
setAttrByPath = attrPath: value: setAttrByPath = attrPath: value:
@ -37,7 +37,7 @@ rec {
getAttrFromPath = attrPath: set: getAttrFromPath = attrPath: set:
let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'"; let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'";
in attrByPath attrPath (abort errorMsg) set; in attrByPath attrPath (abort errorMsg) set;
/* Return the specified attributes from a set. /* Return the specified attributes from a set.
@ -79,6 +79,7 @@ rec {
filterAttrs = pred: set: filterAttrs = pred: set:
listToAttrs (fold (n: ys: let v = getAttr n set; in if pred n v then [(nameValuePair n v)] ++ ys else ys) [] (attrNames set)); listToAttrs (fold (n: ys: let v = getAttr n set; in if pred n v then [(nameValuePair n v)] ++ ys else ys) [] (attrNames set));
/* foldAttrs: apply fold functions to values grouped by key. Eg accumulate values as list: /* foldAttrs: apply fold functions to values grouped by key. Eg accumulate values as list:
foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }] foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }]
=> { a = [ 2 3 ]; } => { a = [ 2 3 ]; }
@ -90,6 +91,7 @@ rec {
) a (attrNames n) ) a (attrNames n)
) {} list_of_attrs; ) {} list_of_attrs;
/* Recursively collect sets that verify a given predicate named `pred' /* Recursively collect sets that verify a given predicate named `pred'
from the set `attrs'. The recursion is stopped when the predicate is from the set `attrs'. The recursion is stopped when the predicate is
verified. verified.
@ -119,7 +121,7 @@ rec {
builtins.listToAttrs. */ builtins.listToAttrs. */
nameValuePair = name: value: { inherit name value; }; nameValuePair = name: value: { inherit name value; };
/* Apply a function to each element in an attribute set. The /* Apply a function to each element in an attribute set. The
function takes two arguments --- the attribute name and its value function takes two arguments --- the attribute name and its value
--- and returns the new value for the attribute. The result is a --- and returns the new value for the attribute. The result is a
@ -137,7 +139,7 @@ rec {
/* Like `mapAttrs', but allows the name of each attribute to be /* Like `mapAttrs', but allows the name of each attribute to be
changed in addition to the value. The applied function should changed in addition to the value. The applied function should
return both the new name and value as a `nameValuePair'. return both the new name and value as a `nameValuePair'.
Example: Example:
mapAttrs' (name: value: nameValuePair ("foo_" + name) ("bar-" + value)) mapAttrs' (name: value: nameValuePair ("foo_" + name) ("bar-" + value))
{ x = "a"; y = "b"; } { x = "a"; y = "b"; }
@ -145,11 +147,11 @@ rec {
*/ */
mapAttrs' = f: set: mapAttrs' = f: set:
listToAttrs (map (attr: f attr (getAttr attr set)) (attrNames set)); listToAttrs (map (attr: f attr (getAttr attr set)) (attrNames set));
/* Call a function for each attribute in the given set and return /* Call a function for each attribute in the given set and return
the result in a list. the result in a list.
Example: Example:
mapAttrsToList (name: value: name + value) mapAttrsToList (name: value: name + value)
{ x = "a"; y = "b"; } { x = "a"; y = "b"; }
@ -157,7 +159,7 @@ rec {
*/ */
mapAttrsToList = f: attrs: mapAttrsToList = f: attrs:
map (name: f name (getAttr name attrs)) (attrNames attrs); map (name: f name (getAttr name attrs)) (attrNames attrs);
/* Like `mapAttrs', except that it recursively applies itself to /* Like `mapAttrs', except that it recursively applies itself to
attribute sets. Also, the first argument of the argument attribute sets. Also, the first argument of the argument
@ -174,7 +176,7 @@ rec {
*/ */
mapAttrsRecursive = mapAttrsRecursiveCond (as: true); mapAttrsRecursive = mapAttrsRecursiveCond (as: true);
/* Like `mapAttrsRecursive', but it takes an additional predicate /* Like `mapAttrsRecursive', but it takes an additional predicate
function that tells it whether to recursive into an attribute function that tells it whether to recursive into an attribute
set. If it returns false, `mapAttrsRecursiveCond' does not set. If it returns false, `mapAttrsRecursiveCond' does not
@ -258,7 +260,7 @@ rec {
returns: { returns: {
foo.bar = 1; # 'foo.*' from the second set foo.bar = 1; # 'foo.*' from the second set
foo.quz = 2; # foo.quz = 2; #
bar = 3; # 'bar' from the first set bar = 3; # 'bar' from the first set
baz = 4; # 'baz' from the second set baz = 4; # 'baz' from the second set
} }

View File

@ -6951,7 +6951,7 @@ let
firefoxWrapper = wrapFirefox { browser = pkgs.firefox; }; firefoxWrapper = wrapFirefox { browser = pkgs.firefox; };
firefoxPkgs = pkgs.firefox15Pkgs; firefoxPkgs = pkgs.firefox16Pkgs;
firefox36Pkgs = callPackage ../applications/networking/browsers/firefox/3.6.nix { firefox36Pkgs = callPackage ../applications/networking/browsers/firefox/3.6.nix {
inherit (gnome) libIDL; inherit (gnome) libIDL;
@ -6959,12 +6959,6 @@ let
firefox36Wrapper = wrapFirefox { browser = firefox36Pkgs.firefox; }; firefox36Wrapper = wrapFirefox { browser = firefox36Pkgs.firefox; };
firefox12Pkgs = callPackage ../applications/networking/browsers/firefox/12.0.nix {
inherit (gnome) libIDL;
};
firefox12Wrapper = wrapFirefox { browser = firefox12Pkgs.firefox; };
firefox15Pkgs = callPackage ../applications/networking/browsers/firefox/15.0.nix { firefox15Pkgs = callPackage ../applications/networking/browsers/firefox/15.0.nix {
inherit (gnome) libIDL; inherit (gnome) libIDL;
inherit (pythonPackages) pysqlite; inherit (pythonPackages) pysqlite;

View File

@ -354,7 +354,6 @@ with (import ./release-lib.nix);
}; };
firefox36Pkgs.firefox = linux; firefox36Pkgs.firefox = linux;
firefox12Pkgs.firefox = linux;
firefox15Pkgs.firefox = linux; firefox15Pkgs.firefox = linux;
firefox16Pkgs.firefox = linux; firefox16Pkgs.firefox = linux;