diff --git a/pkgs/applications/networking/mailreaders/thunderbird/68.nix b/pkgs/applications/networking/mailreaders/thunderbird/68.nix new file mode 100644 index 000000000000..28632e9d1733 --- /dev/null +++ b/pkgs/applications/networking/mailreaders/thunderbird/68.nix @@ -0,0 +1,343 @@ +# This pakcage is keeped until Thunderbird 78 supports OpenPGP. +# https://www.thunderbird.net/en-US/thunderbird/78.0.1/releasenotes/ +{ autoconf213 +, bzip2 +, cargo +, common-updater-scripts +, coreutils +, curl +, dbus +, dbus-glib +, fetchurl +, file +, fontconfig +, freetype +, glib +, gnugrep +, gnused +, icu +, jemalloc +, lib +, libGL +, libGLU +, libevent +, libjpeg +, libnotify +, libpng +, libstartup_notification +, libvpx +, libwebp +, llvmPackages +, m4 +, makeDesktopItem +, nasm +, nodejs +, nspr +, nss +, pango +, perl +, pkgconfig +, python2 +, python3 +, runtimeShell +, rust-cbindgen +, rustc +, sqlite +, stdenv +, systemd +, unzip +, which +, writeScript +, xidel +, xorg +, yasm +, zip +, zlib + +, debugBuild ? false + +, alsaSupport ? stdenv.isLinux, alsaLib +, pulseaudioSupport ? stdenv.isLinux, libpulseaudio +, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook +, waylandSupport ? true +, libxkbcommon, calendarSupport ? true + +, # 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 +}: + +assert waylandSupport -> gtk3Support == true; + +stdenv.mkDerivation rec { + pname = "thunderbird"; + version = "68.10.0"; + + src = fetchurl { + url = + "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"; + sha512 = + "24jq4wxhk58403ax8jf6p82fyzf0vszz8am5d8jb6j559da3lp6wv4m5xqavvcf9i57rdivzrmqw9agr8mypfxs8zb908aln5iy7d4d"; + }; + + nativeBuildInputs = [ + autoconf213 + cargo + gnused + llvmPackages.llvm + m4 + nasm + nodejs + perl + pkgconfig + python2 + python3 + rust-cbindgen + rustc + which + yasm + ] ++ lib.optional gtk3Support wrapGAppsHook; + + buildInputs = [ + bzip2 + dbus + dbus-glib + file + fontconfig + freetype + glib + gtk2 + icu + jemalloc + libGL + libGLU + libevent + libjpeg + libnotify + libpng + libstartup_notification + libvpx + libwebp + nspr + nss + pango + perl + sqlite + unzip + xorg.libX11 + xorg.libXScrnSaver + xorg.libXcursor + xorg.libXext + xorg.libXft + xorg.libXi + xorg.libXrender + xorg.libXt + xorg.pixman + xorg.xorgproto + zip + zlib + ] ++ lib.optional alsaSupport alsaLib + ++ lib.optional gtk3Support gtk3 + ++ lib.optional pulseaudioSupport libpulseaudio + ++ lib.optional waylandSupport libxkbcommon; + + NIX_CFLAGS_COMPILE =[ + "-I${glib.dev}/include/gio-unix-2.0" + "-I${nss.dev}/include/nss" + ]; + + patches = [ + ./no-buildconfig-68.patch + ]; + + postPatch = '' + rm -rf obj-x86_64-pc-linux-gnu + ''; + + hardeningDisable = [ "format" ]; + + preConfigure = '' + # remove distributed configuration files + rm -f configure + rm -f js/src/configure + rm -f .mozconfig* + + configureScript="$(realpath ./mach) configure" + # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286 + unset AS + + export MOZCONFIG=$(pwd)/mozconfig + + # Set C flags for Rust's bindgen program. Unlike ordinary C + # compilation, bindgen does not invoke $CC directly. Instead it + # uses LLVM's libclang. To make sure all necessary flags are + # included we need to look in a few places. + # TODO: generalize this process for other use-cases. + + BINDGEN_CFLAGS="$(< ${stdenv.cc}/nix-support/libc-cflags) \ + $(< ${stdenv.cc}/nix-support/cc-cflags) \ + $(< ${stdenv.cc}/nix-support/libcxx-cxxflags) \ + ${ + lib.optionalString stdenv.cc.isClang + "-idirafter ${stdenv.cc.cc}/lib/clang/${ + lib.getVersion stdenv.cc.cc + }/include" + } \ + ${ + lib.optionalString stdenv.cc.isGNU + "-isystem ${stdenv.cc.cc}/include/c++/${ + lib.getVersion stdenv.cc.cc + } -isystem ${stdenv.cc.cc}/include/c++/${ + lib.getVersion stdenv.cc.cc + }/${stdenv.hostPlatform.config}" + } \ + $NIX_CFLAGS_COMPILE" + + echo "ac_add_options BINDGEN_CFLAGS='$BINDGEN_CFLAGS'" >> $MOZCONFIG + ''; + + configureFlags = let + toolkitSlug = if gtk3Support then + "3${lib.optionalString waylandSupport "-wayland"}" + else + "2"; + toolkitValue = "cairo-gtk${toolkitSlug}"; + in [ + "--enable-application=comm/mail" + + "--with-system-bz2" + "--with-system-icu" + "--with-system-jpeg" + "--with-system-libevent" + "--with-system-nspr" + "--with-system-nss" + "--with-system-png" # needs APNG support + "--with-system-icu" + "--with-system-zlib" + "--with-system-webp" + "--with-system-libvpx" + + "--enable-rust-simd" + "--enable-crashreporter" + "--enable-default-toolkit=${toolkitValue}" + "--enable-js-shell" + "--enable-necko-wifi" + "--enable-startup-notification" + "--enable-system-ffi" + "--enable-system-pixman" + "--enable-system-sqlite" + + "--disable-gconf" + "--disable-tests" + "--disable-updater" + "--enable-jemalloc" + ] ++ (if debugBuild then [ + "--enable-debug" + "--enable-profiling" + ] else [ + "--disable-debug" + "--enable-release" + "--disable-debug-symbols" + "--enable-optimize" + "--enable-strip" + ]) ++ lib.optionals (!stdenv.hostPlatform.isi686) [ + # on i686-linux: --with-libclang-path is not available in this configuration + "--with-libclang-path=${llvmPackages.libclang}/lib" + "--with-clang-path=${llvmPackages.clang}/bin/clang" + ] ++ lib.optional alsaSupport "--enable-alsa" + ++ lib.optional calendarSupport "--enable-calendar" + ++ lib.optional enableOfficialBranding "--enable-official-branding" + ++ lib.optional pulseaudioSupport "--enable-pulseaudio"; + + enableParallelBuilding = true; + + postConfigure = '' + cd obj-* + ''; + + makeFlags = lib.optionals enableOfficialBranding [ + "MOZILLA_OFFICIAL=1" + "BUILD_OFFICIAL=1" + ]; + + doCheck = false; + + postInstall = let + desktopItem = makeDesktopItem { + categories = lib.concatStringsSep ";" [ "Application" "Network" ]; + desktopName = "Thunderbird"; + genericName = "Mail Reader"; + name = "thunderbird"; + exec = "thunderbird %U"; + icon = "$out/lib/thunderbird/chrome/icons/default/default256.png"; + mimeType = lib.concatStringsSep ";" [ + # Email + "x-scheme-handler/mailto" + "message/rfc822" + # Feeds + "x-scheme-handler/feed" + "application/rss+xml" + "application/x-extension-rss" + # Newsgroups + "x-scheme-handler/news" + "x-scheme-handler/snews" + "x-scheme-handler/nntp" + ]; + }; + in '' + # TODO: Move to a dev output? + rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl + + ${desktopItem.buildCommand} + ''; + + preFixup = '' + # Needed to find Mozilla runtime + gappsWrapperArgs+=( + --argv0 "$out/bin/thunderbird" + --set MOZ_APP_LAUNCHER thunderbird + # https://github.com/NixOS/nixpkgs/pull/61980 + --set SNAP_NAME "thunderbird" + --set MOZ_LEGACY_PROFILES 1 + --set MOZ_ALLOW_DOWNGRADE 1 + ) + ''; + + # FIXME: The XUL portion of this can probably be removed as soon as we + # package a Thunderbird >=71.0 since XUL shouldn't be anymore (in use)? + postFixup = '' + local xul="$out/lib/thunderbird/libxul.so" + patchelf --set-rpath "${libnotify}/lib:${systemd.lib}/lib:$(patchelf --print-rpath $xul)" $xul + ''; + + doInstallCheck = true; + installCheckPhase = '' + "$out/bin/thunderbird" --version + ''; + + disallowedRequisites = [ + stdenv.cc + ]; + + passthru.updateScript = import ./../../browsers/firefox/update.nix { + attrPath = "thunderbird"; + baseUrl = "http://archive.mozilla.org/pub/thunderbird/releases/"; + inherit writeScript lib common-updater-scripts xidel coreutils gnused + gnugrep curl runtimeShell; + }; + + meta = with stdenv.lib; { + description = "A full-featured e-mail client"; + homepage = "https://www.thunderbird.net"; + maintainers = with maintainers; [ + eelco + lovesegfault + pierron + ]; + platforms = platforms.linux; + license = licenses.mpl20; + }; +} diff --git a/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig-68.patch b/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig-68.patch new file mode 100644 index 000000000000..fe3a93ebda7b --- /dev/null +++ b/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig-68.patch @@ -0,0 +1,35 @@ +diff -ru -x '*~' a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp +--- a/docshell/base/nsAboutRedirector.cpp 2017-07-31 18:20:51.000000000 +0200 ++++ b/docshell/base/nsAboutRedirector.cpp 2017-09-26 22:02:00.814151731 +0200 +@@ -32,8 +32,6 @@ + {"about", "chrome://global/content/aboutAbout.xhtml", 0}, + {"addons", "chrome://mozapps/content/extensions/extensions.xul", + nsIAboutModule::ALLOW_SCRIPT}, +- {"buildconfig", "chrome://global/content/buildconfig.html", +- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT}, + {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml", + nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | + nsIAboutModule::ALLOW_SCRIPT}, +diff -ru -x '*~' a/toolkit/content/jar.mn b/toolkit/content/jar.mn +--- a/toolkit/content/jar.mn 2017-07-31 18:20:52.000000000 +0200 ++++ b/toolkit/content/jar.mn 2017-09-26 22:01:42.383350314 +0200 +@@ -39,7 +39,6 @@ + content/global/plugins.css + content/global/browser-child.js + content/global/browser-content.js +-* content/global/buildconfig.html + content/global/buildconfig.css + content/global/contentAreaUtils.js + content/global/datepicker.xhtml +--- a/comm/mail/base/jar.mn ++++ b/comm/mail/base/jar.mn +@@ -117,9 +117,7 @@ + % override chrome://mozapps/content/profile/profileDowngrade.js chrome://messenger/content/profileDowngrade.js + % override chrome://mozapps/content/profile/profileDowngrade.xul chrome://messenger/content/profileDowngrade.xul + +-* content/messenger/buildconfig.html (content/buildconfig.html) + content/messenger/buildconfig.css (content/buildconfig.css) +-% override chrome://global/content/buildconfig.html chrome://messenger/content/buildconfig.html + % override chrome://global/content/buildconfig.css chrome://messenger/content/buildconfig.css + + # L10n resources and overrides. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 82396c1f9e32..3c931a5c8327 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22789,6 +22789,13 @@ in nss = nss_3_44; # 68.x won't build with newest nss anymore (like firefox-esr-68) }; + thunderbird-68 = callPackage ../applications/networking/mailreaders/thunderbird/68.nix { + inherit (rustPackages_1_44) cargo rustc; + libpng = libpng_apng; + nss = nss_3_44; + gtk3Support = true; + }; + thunderbolt = callPackage ../os-specific/linux/thunderbolt {}; thunderbird-bin = callPackage ../applications/networking/mailreaders/thunderbird-bin { };