summary refs log tree commit diff
path: root/pkgs/applications/office
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2014-12-04 09:35:48 -0600
committerThomas Tuegel <ttuegel@gmail.com>2014-12-04 09:40:57 -0600
commit5c9de384886667d487a109b615901e3ede02563a (patch)
treec0c1578666f90aa1cb6b82fda60939f6c3579dad /pkgs/applications/office
parent0377be182ccf60fa9b559a29281243f2b7e71d50 (diff)
downloadnixlib-5c9de384886667d487a109b615901e3ede02563a.tar
nixlib-5c9de384886667d487a109b615901e3ede02563a.tar.gz
nixlib-5c9de384886667d487a109b615901e3ede02563a.tar.bz2
nixlib-5c9de384886667d487a109b615901e3ede02563a.tar.lz
nixlib-5c9de384886667d487a109b615901e3ede02563a.tar.xz
nixlib-5c9de384886667d487a109b615901e3ede02563a.tar.zst
nixlib-5c9de384886667d487a109b615901e3ede02563a.zip
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.
Diffstat (limited to 'pkgs/applications/office')
-rw-r--r--pkgs/applications/office/zotero/default.nix13
-rw-r--r--pkgs/applications/office/zotero/firefox.nix108
-rw-r--r--pkgs/applications/office/zotero/xulrunner.nix80
3 files changed, 200 insertions, 1 deletions
diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix
index 1b4bec3c24b8..6cd8697cd7d7 100644
--- a/pkgs/applications/office/zotero/default.nix
+++ b/pkgs/applications/office/zotero/default.nix
@@ -1,8 +1,19 @@
-{ stdenv, fetchurl, bash, xulrunner }:
+{ stdenv, fetchurl, bash, callPackage, libIDL, pysqlite }:
 
 assert (stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux");
 
+
 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";
   arch = if stdenv.system == "x86_64-linux"
            then "linux-x86_64"
diff --git a/pkgs/applications/office/zotero/firefox.nix b/pkgs/applications/office/zotero/firefox.nix
new file mode 100644
index 000000000000..60befdbaad53
--- /dev/null
+++ b/pkgs/applications/office/zotero/firefox.nix
@@ -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;
+  };
+}
diff --git a/pkgs/applications/office/zotero/xulrunner.nix b/pkgs/applications/office/zotero/xulrunner.nix
new file mode 100644
index 000000000000..4dd1095c0ce8
--- /dev/null
+++ b/pkgs/applications/office/zotero/xulrunner.nix
@@ -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; };
+}