From 5c5f11560329f41573c862b2146f6f7bc5e19d1b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 15:31:49 +0200 Subject: [PATCH] firefox: Build without xulrunner Fixes #2950. --- .../networking/browsers/firefox/default.nix | 206 +++++------------- .../browsers/firefox/disable-reporter.patch | 20 -- .../networking/browsers/firefox/xpidl.patch | 11 - .../gecko-mediaplayer/default.nix | 5 +- .../interpreters/xulrunner/default.nix | 82 +++++++ pkgs/tools/admin/gtk-vnc/default.nix | 2 +- pkgs/top-level/all-packages.nix | 14 +- pkgs/top-level/release.nix | 3 - 8 files changed, 143 insertions(+), 200 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/firefox/disable-reporter.patch delete mode 100644 pkgs/applications/networking/browsers/firefox/xpidl.patch create mode 100644 pkgs/development/interpreters/xulrunner/default.nix diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix index 00921220fb07..ad2ea75bd704 100644 --- a/pkgs/applications/networking/browsers/firefox/default.nix +++ b/pkgs/applications/networking/browsers/firefox/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL -, libjpeg, libpng, zlib, dbus, dbus_glib, bzip2, xlibs +{ 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 @@ -15,27 +15,38 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null; -rec { - - firefoxVersion = "31.0"; - - xulVersion = "31.0"; # this attribute is used by other packages +let version = "31.0"; in +stdenv.mkDerivation rec { + name = "firefox-${version}"; src = fetchurl { - url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2"; + url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2"; sha1 = "a6c3e25ee3aeb7da42db2aaeb50a385d63532beb"; }; - commonConfigureFlags = - [ "--with-system-jpeg" + 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" + # "--with-system-png" # needs APNG support # "--with-system-icu" # causes ‘ar: invalid option -- 'L'’ in Firefox 28.0 "--enable-system-ffi" "--enable-system-hunspell" @@ -52,160 +63,45 @@ rec { "--disable-installer" "--disable-updater" "--disable-pulseaudio" - ] ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"] - else [ "--disable-debug" "--enable-release" - "--enable-optimize" "--enable-strip" ]); + ] + ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"] + else [ "--disable-debug" "--enable-release" + "--enable-optimize" "--enable-strip" ]) + ++ lib.optional enableOfficialBranding "--enable-official-branding"; + enableParallelBuilding = true; - xulrunner = stdenv.mkDerivation rec { - name = "xulrunner-${xulVersion}"; + preConfigure = + '' + mkdir ../objdir + cd ../objdir + configureScript=../mozilla-release/configure + ''; - inherit src; - - buildInputs = - [ pkgconfig libpng 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" - ] ++ commonConfigureFlags; - - enableParallelBuilding = true; - - preConfigure = - '' - export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}" - - mkdir ../objdir - cd ../objdir - configureScript=../mozilla-release/configure - ''; # */ - - #installFlags = "SKIP_GRE_REGISTRATION=1"; - - preInstall = '' - # The following is needed for startup cache creation on grsecurity kernels + preInstall = + '' + # The following is needed for startup cache creation on grsecurity kernels. paxmark m ../objdir/dist/bin/xpcshell ''; - postInstall = '' - # Fix run-mozilla.sh search - libDir=$(cd $out/lib && ls -d xulrunner-[0-9]*) - echo libDir: $libDir - test -n "$libDir" - cd $out/bin - rm xulrunner - - for i in $out/lib/$libDir/*; do - file $i; - if file $i | grep executable &>/dev/null; then - echo -e '#! /bin/sh\nexec "'"$i"'" "$@"' > "$out/bin/$(basename "$i")"; - chmod a+x "$out/bin/$(basename "$i")"; - fi; - done - for i in $out/lib/$libDir/*.so; do - patchelf --set-rpath "$(patchelf --print-rpath "$i"):$out/lib/$libDir" $i || true - done - + postInstall = + '' # For grsecurity kernels - paxmark m $out/lib/$libDir/{plugin-container,xulrunner} + paxmark m $out/lib/*/{plugin-container,xulrunner} - for i in $out/lib/$libDir/{plugin-container,xulrunner,xulrunner-stub}; do - wrapProgram $i --prefix LD_LIBRARY_PATH ':' "$out/lib/$libDir" - done + # Remove SDK cruft. FIXME: move to a separate output? + rm -rf $out/share/idl $out/include $out/lib/firefox-devel-* + ''; - 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; }; + meta = { + description = "Mozilla Firefox - the browser, reloaded"; + homepage = http://www.mozilla.com/en-US/firefox/; + maintainers = with lib.maintainers; [ eelco wizeman ]; + platforms = lib.platforms.linux; }; - - firefox = stdenv.mkDerivation rec { - name = "firefox-${firefoxVersion}"; - - inherit src; - - enableParallelBuilding = true; - - buildInputs = - [ pkgconfig libpng gtk perl zip libIDL libjpeg zlib bzip2 python - dbus dbus_glib pango freetype fontconfig alsaLib nspr nss libnotify - xlibs.pixman yasm mesa sqlite file unzip pysqlite - hunspell libevent libstartup_notification libvpx cairo - gstreamer gst_plugins_base icu - ]; - - patches = [ - ./disable-reporter.patch # fixes "search box not working when built on xulrunner" - ./xpidl.patch - ]; - - propagatedBuildInputs = [xulrunner]; - - configureFlags = - [ "--enable-application=browser" - "--with-libxul-sdk=${xulrunner}/lib/xulrunner-devel-${xulrunner.version}" - "--enable-chrome-format=jar" - ] - ++ commonConfigureFlags - ++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding"; - - makeFlags = [ - "SYSTEM_LIBXUL=1" - ]; - - # Because preConfigure runs configure from a subdirectory. - configureScript = "../configure"; - - preConfigure = - '' - # Hack to work around make's idea of -lbz2 dependency - find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${ - stdenv.lib.concatStringsSep ":" - (map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc])) - }' ';' - - # Building directly in the main source directory is not allowed. - mkdir obj_dir - cd obj_dir - ''; - - postInstall = - '' - ln -s ${xulrunner}/lib/xulrunner-${xulrunner.version} $(echo $out/lib/firefox-*)/xulrunner - cd "$out/lib/"firefox-* - rm firefox - echo -e '#!${stdenv.shell}\nexec ${xulrunner}/bin/xulrunner "'"$PWD"'/application.ini" "$@"' > firefox - chmod a+x firefox - - # Put chrome.manifest etc. in the right place. - mv browser/* . - rmdir browser - ''; # */ - - meta = { - description = "Mozilla Firefox - the browser, reloaded"; - homepage = http://www.mozilla.com/en-US/firefox/; - maintainers = with stdenv.lib.maintainers; [ eelco wizeman ]; - }; - - passthru = { - inherit gtk xulrunner nspr; - isFirefox3Like = true; - }; + passthru = { + inherit gtk nspr version; + isFirefox3Like = true; }; } diff --git a/pkgs/applications/networking/browsers/firefox/disable-reporter.patch b/pkgs/applications/networking/browsers/firefox/disable-reporter.patch deleted file mode 100644 index 0a71a7210f2a..000000000000 --- a/pkgs/applications/networking/browsers/firefox/disable-reporter.patch +++ /dev/null @@ -1,20 +0,0 @@ -# from: -# - https://www.linuxquestions.org/questions/linux-from-scratch-13/blfs-xulrunner-firefox-21-0-and-search-4175462532/ -# - http://www.mail-archive.com/blfs-support@linuxfromscratch.org/msg17359.html - ---- mozilla-release/browser/base/content/browser.js.orig 2013-05-11 16:19:21.000000000 -0300 -+++ mozilla-release/browser/base/content/browser.js 2013-06-07 00:39:16.114862388 -0300 -@@ -3559,10 +3559,12 @@ - */ - recordSearchInHealthReport: function (engine, source) { - #ifdef MOZ_SERVICES_HEALTHREPORT -- let reporter = Cc["@mozilla.org/datareporting/service;1"] -+ /*let reporter = Cc["@mozilla.org/datareporting/service;1"] - .getService() - .wrappedJSObject - .healthReporter; -+ */ -+ return; - - // This can happen if the FHR component of the data reporting service is - // disabled. This is controlled by a pref that most will never use. diff --git a/pkgs/applications/networking/browsers/firefox/xpidl.patch b/pkgs/applications/networking/browsers/firefox/xpidl.patch deleted file mode 100644 index e6a6b4d82646..000000000000 --- a/pkgs/applications/networking/browsers/firefox/xpidl.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- mozilla-release/python/mozbuild/mozbuild/backend/recursivemake.py 2013-12-05 08:07:53.000000000 -0800 -+++ mozilla-release_1/python/mozbuild/mozbuild/backend/recursivemake.py 2013-12-12 23:38:39.697318563 -0800 -@@ -421,7 +421,7 @@ - def _handle_idl_manager(self, manager): - build_files = self._purge_manifests['xpidl'] - -- for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done', -+ for p in ('Makefile.in', 'Makefile', 'backend.mk', '.deps/.mkdir.done', - 'xpt/.mkdir.done'): - build_files.add(p) - diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix index 44f191e54f1d..05e3a8bf613a 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix @@ -10,12 +10,12 @@ stdenv.mkDerivation rec { sha256 = "913fd39e70c564cb210c2544a88869f9d1a448184421f000b14b2bc5ba718b49"; }; - buildInputs = [ pkgconfig glib dbus dbus_glib browser x11 GConf browser.xulrunner gmtk ]; + buildInputs = [ pkgconfig glib dbus dbus_glib browser x11 GConf browser gmtk ]; # !!! fix this preBuild = '' - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo ${browser.xulrunner}/include/xulrunner-*) -I${browser.nspr}/include/nspr" + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo ${browser}/include/xulrunner-*) -I${browser.nspr}/include/nspr" echo $NIX_CFLAGS_COMPILE ''; @@ -31,6 +31,7 @@ stdenv.mkDerivation rec { meta = { description = "A browser plugin that uses GNOME MPlayer to play media in a browser"; homepage = http://kdekorte.googlepages.com/gecko-mediaplayer; + broken = true; }; } diff --git a/pkgs/development/interpreters/xulrunner/default.nix b/pkgs/development/interpreters/xulrunner/default.nix new file mode 100644 index 000000000000..47dea40eba22 --- /dev/null +++ b/pkgs/development/interpreters/xulrunner/default.nix @@ -0,0 +1,82 @@ +{ 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 +}: + +assert stdenv.gcc ? libc && stdenv.gcc.libc != null; + +let version = "31.0"; in + +stdenv.mkDerivation rec { + name = "xulrunner-${version}"; + + src = fetchurl { + url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2"; + sha1 = "a6c3e25ee3aeb7da42db2aaeb50a385d63532beb"; + }; + + 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-optimize" "--enable-strip" ]); + + 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; }; +} diff --git a/pkgs/tools/admin/gtk-vnc/default.nix b/pkgs/tools/admin/gtk-vnc/default.nix index 14822d8b6e96..c502cee5415a 100644 --- a/pkgs/tools/admin/gtk-vnc/default.nix +++ b/pkgs/tools/admin/gtk-vnc/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, gobjectIntrospection , python, gtk, pygtk, gnutls, cairo, libtool, glib, pkgconfig, libtasn1 -, libffi, cyrus_sasl, intltool, perl, perlPackages, firefoxPkgs, pulseaudio +, libffi, cyrus_sasl, intltool, perl, perlPackages, pulseaudio , kbproto, libX11, libXext, xextproto, pygobject, libgcrypt, gtk3, vala , pygobject3, libogg, enableGTK3 ? false }: diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 137f11b78e72..797483aa8c14 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3633,7 +3633,10 @@ let tcl = callPackage ../development/interpreters/tcl { }; - xulrunner = pkgs.firefoxPkgs.xulrunner; + xulrunner = callPackage ../development/interpreters/xulrunner { + inherit (gnome) libIDL; + inherit (pythonPackages) pysqlite; + }; ### DEVELOPMENT / MISC @@ -8593,21 +8596,18 @@ let filezilla = callPackage ../applications/networking/ftp/filezilla { }; - firefox = pkgs.firefoxPkgs.firefox; - firefox13Pkgs = callPackage ../applications/networking/browsers/firefox/13.0.nix { inherit (gnome) libIDL; }; firefox13Wrapper = wrapFirefox { browser = firefox13Pkgs.firefox; }; - firefoxPkgs = callPackage ../applications/networking/browsers/firefox { + firefox = callPackage ../applications/networking/browsers/firefox { inherit (gnome) libIDL; inherit (pythonPackages) pysqlite; - libpng = libpng.override { apngSupport = true; }; }; - firefoxWrapper = wrapFirefox { browser = firefoxPkgs.firefox; }; + firefoxWrapper = wrapFirefox { browser = pkgs.firefox; }; firefox-bin = callPackage ../applications/networking/browsers/firefox-bin { gconf = pkgs.gnome.GConf; @@ -8620,7 +8620,6 @@ let flashplayer = callPackage ../applications/networking/browsers/mozilla-plugins/flashplayer-11 { debug = config.flashplayer.debug or false; - # !!! Fix the dependency on two different builds of nss. }; freecad = callPackage ../applications/graphics/freecad { @@ -8724,7 +8723,6 @@ let gmu = callPackage ../applications/audio/gmu { }; gnash = callPackage ../applications/video/gnash { - xulrunner = firefoxPkgs.xulrunner; inherit (gnome) gtkglext; }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index c65d559c71f0..81bf09bfeade 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -341,9 +341,6 @@ let zsh = linux; zsnes = ["i686-linux"]; - firefox36Pkgs.firefox = linux; - firefoxPkgs.firefox = linux; - gnome = { gnome_panel = linux; metacity = linux;