zotero: use private firefox and xulrunner

Zotero breaks every time firefox is updated (about every six weeks). It
is always fixed with the next zotero update, but that can take weeks.
Sometimes, upstream even skips firefox releases. This will stop zotero
breaking every time.
This commit is contained in:
Thomas Tuegel 2014-12-04 09:35:48 -06:00
parent 0377be182c
commit 5c9de38488
4 changed files with 204 additions and 2 deletions

View File

@ -1,8 +1,19 @@
{ stdenv, fetchurl, bash, xulrunner }: { stdenv, fetchurl, bash, callPackage, libIDL, pysqlite }:
assert (stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux"); assert (stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux");
let let
/* Zotero always has a hard upper bound on its firefox/xulrunner dependency.
* Use private versions of firefox and xulrunner to prevent breakage when the
* system packages are updated. Please update these dependencies whenever
* zotero is updated; it should be as simple as copying the system firefox
* and xulrunner Nix expressions into place.
*/
firefox = callPackage ./firefox.nix { inherit libIDL pysqlite; };
xulrunner = callPackage ./xulrunner.nix { inherit libIDL pysqlite firefox; };
# Please update the firefox and xulrunner dependencies when zotero is updated!
version = "4.0.23"; version = "4.0.23";
arch = if stdenv.system == "x86_64-linux" arch = if stdenv.system == "x86_64-linux"
then "linux-x86_64" then "linux-x86_64"

View File

@ -0,0 +1,108 @@
{ lib, stdenv, fetchurl, pkgconfig, gtk, 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, gstreamer, gst_plugins_base, icu
, 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.gcc ? libc && stdenv.gcc.libc != null;
let version = "33.1.1"; 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 = "1e9e3176e7d221c4f2ce479f37ee7c432236a0ec";
};
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
gstreamer gst_plugins_base icu
];
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" # causes ar: invalid option -- 'L' in Firefox 28.0
"--enable-system-ffi"
"--enable-system-hunspell"
"--enable-system-pixman"
"--enable-system-sqlite"
"--enable-system-cairo"
"--enable-gstreamer"
"--enable-startup-notification"
# "--enable-content-sandbox" # available since 26.0, but not much info available
# "--enable-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"
]
++ (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-*
'';
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;
};
}

View File

@ -0,0 +1,80 @@
{ lib, stdenv, fetchurl, pkgconfig, gtk, 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, gstreamer, gst_plugins_base, icu, firefox
, debugBuild ? false
}:
assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
let version = firefox.version; in
stdenv.mkDerivation rec {
name = "xulrunner-${version}";
src = firefox.src;
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
gstreamer gst_plugins_base icu
];
configureFlags =
[ "--enable-application=xulrunner"
"--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" # causes ar: invalid option -- 'L' in Firefox 28.0
"--enable-system-ffi"
"--enable-system-hunspell"
"--enable-system-pixman"
"--enable-system-sqlite"
"--enable-system-cairo"
"--enable-gstreamer"
"--enable-startup-notification"
# "--enable-content-sandbox" # available since 26.0, but not much info available
# "--enable-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"
]
++ (if debugBuild
then [ "--enable-debug" "--enable-profiling"]
else [ "--disable-debug" "--enable-release" "--enable-strip"
"--enable-optimize${lib.optionalString (stdenv.system == "i686-linux") "=-O1"}" ]);
enableParallelBuilding = true;
preConfigure =
''
mkdir ../objdir
cd ../objdir
configureScript=../mozilla-release/configure
'';
meta = {
description = "Mozilla Firefox XUL runner";
homepage = http://www.mozilla.com/en-US/firefox/;
maintainers = [ lib.maintainers.eelco ];
platforms = lib.platforms.linux;
};
passthru = { inherit gtk version; };
}

View File

@ -11407,7 +11407,10 @@ let
pygtk = pyGtkGlade; pygtk = pyGtkGlade;
}; };
zotero = callPackage ../applications/office/zotero { }; zotero = callPackage ../applications/office/zotero {
inherit (gnome) libIDL;
inherit (pythonPackages) pysqlite;
};
zynaddsubfx = callPackage ../applications/audio/zynaddsubfx { }; zynaddsubfx = callPackage ../applications/audio/zynaddsubfx { };