From b023370f3757a76acb244e647f29e388e076cab0 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Sun, 9 Apr 2017 20:15:06 +0300 Subject: [PATCH] thunderbird: port changes from firefox Fix random crashes. Add optional GTK3 support. --- .../mailreaders/thunderbird/default.nix | 151 +++++++++--------- 1 file changed, 74 insertions(+), 77 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix index 80d2c05584b7..661d499d34e6 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix @@ -1,28 +1,27 @@ -{ stdenv, lib, fetchurl, pkgconfig, autoconf213, which, m4, gtk2, pango -, perl, python2, zip -, libIDL , libjpeg, libpng, zlib, dbus, dbus_glib, bzip2, xorg -, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify -, yasm, mesa, sqlite, unzip, makeWrapper -, hunspell, libevent, libstartup_notification, libvpx -, cairo, gstreamer, gst-plugins-base, icu +{ lib, stdenv, fetchurl, pkgconfig, gtk2, pango, perl, python, zip, libIDL +, libjpeg, zlib, dbus, dbus_glib, bzip2, xorg +, freetype, fontconfig, file, nspr, nss, libnotify +, yasm, mesa, sqlite, unzip +, hunspell, libevent, libstartup_notification +, cairo, gstreamer, gst-plugins-base, icu, libpng, jemalloc +, autoconf213, which, m4 , writeScript, xidel, common-updater-scripts, coreutils, gnused, gnugrep, curl +, enableGTK3 ? false, gtk3, wrapGAppsHook , debugBuild ? false -, # If you want the resulting program to call itself "Thunderbird" - # instead of "Earlybird", enable this option. However, those +, # If you want the resulting program to call itself "Thunderbird" instead + # of "Earlybird" 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 }: -let version = "52.0"; in -let verName = "${version}"; in - stdenv.mkDerivation rec { - name = "thunderbird-${verName}"; + name = "thunderbird-${version}"; + version = "52.0"; src = fetchurl { - url = "mirror://mozilla/thunderbird/releases/${verName}/source/thunderbird-${verName}.source.tar.xz"; + url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"; sha512 = "215de8ae386f6f12d7a4338bb03bac956410be0dd4de5cca218e12241e3948c8c2540756e149bfde597cd10e399b4cb4db86619a2aa50a368ba323b413c1f93c"; }; @@ -33,97 +32,95 @@ stdenv.mkDerivation rec { done ''; - buildInputs = # from firefox30Pkgs.xulrunner, without gstreamer and libvpx - [ pkgconfig autoconf213 which libpng gtk2 perl zip libIDL libjpeg zlib bzip2 - python2 dbus dbus_glib pango freetype fontconfig xorg.libXi + # from firefox, but without sound libraries + buildInputs = + [ gtk2 zip libIDL libjpeg zlib bzip2 + dbus dbus_glib pango freetype fontconfig xorg.libXi xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file - alsaLib nspr nss libnotify xorg.pixman yasm mesa + nspr nss libnotify xorg.pixman yasm mesa xorg.libXScrnSaver xorg.scrnsaverproto - xorg.libXext xorg.xextproto sqlite unzip makeWrapper - hunspell libevent libstartup_notification cairo icu - ] ++ [ m4 ]; + xorg.libXext xorg.xextproto sqlite unzip + hunspell libevent libstartup_notification /* cairo */ + icu libpng jemalloc + ] + ++ lib.optional enableGTK3 gtk3; + + # from firefox + m4 + nativeBuildInputs = [ m4 autoconf213 which gnused pkgconfig perl python ] ++ lib.optional enableGTK3 wrapGAppsHook; + + configureFlags = + [ # from firefox, but without sound libraries (alsa, libvpx, pulseaudio) + "--enable-application=mail" + "--disable-alsa" + "--disable-pulseaudio" - configurePhase = let configureFlags = [ "--enable-application=mail" ] - # from firefox30Pkgs.commonConfigureFlags, but without gstreamer and libvpx - ++ [ "--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" "--enable-system-ffi" "--enable-system-hunspell" "--enable-system-pixman" "--enable-system-sqlite" - "--enable-system-cairo" - "--disable-gconf" + #"--enable-system-cairo" "--enable-startup-notification" - # "--enable-content-sandbox" # available since 26.0, but not much info available - # "--enable-content-sandbox-reporter" # keeping disabled for now + "--enable-content-sandbox" # available since 26.0, but not much info available "--disable-crashreporter" "--disable-tests" "--disable-necko-wifi" # maybe we want to enable this at some point "--disable-updater" - "--disable-pulseaudio" - "--enable-default-toolkit=cairo-gtk2" - ] ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"] + "--enable-jemalloc" + "--disable-gconf" + "--enable-default-toolkit=cairo-gtk${if enableGTK3 then "3" else "2"}" + ] + ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"] else [ "--disable-debug" "--enable-release" "--disable-debug-symbols" "--enable-optimize" "--enable-strip" ]) - ++ [ - #"--enable-stdcxx-compat" # Avoid dependency on libstdc++ 4.7 - ] - ++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding"; - in '' - mkdir -p objdir/mozilla - cd objdir - echo '${stdenv.lib.concatMapStrings (s : "ac_add_options ${s}\n") configureFlags}' > .mozconfig - echo 'ac_add_options --prefix="'"$out"'"' >> .mozconfig - # From version 38, we need to specify the source directory to build - # Thunderbird. Refer to mozilla/configure and search a line with - # "checking for application to build" and "# Support comm-central". - echo 'ac_add_options --with-external-source-dir="'`realpath ..`'"' >> .mozconfig - echo 'mk_add_options MOZ_MAKE_FLAGS="-j'"$NIX_BUILD_CORES"'"' >> .mozconfig - echo 'mk_add_options MOZ_OBJDIR="'`pwd`'"' >> .mozconfig - - export MOZCONFIG=`realpath ./.mozconfig` - - patchShebangs ../mozilla/mach - ../mozilla/mach configure - ''; + ++ lib.optional enableOfficialBranding "--enable-official-branding"; enableParallelBuilding = true; - requiredSystemFeatures = [ "big-parallel" ]; - buildPhase = "../mozilla/mach build"; - - installPhase = + preConfigure = '' - ../mozilla/mach install - - rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl - - # Create a desktop item. - mkdir -p $out/share/applications - cat > $out/share/applications/thunderbird.desktop <