1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-29 00:54:11 +00:00

thunderbird: copy thunderbird -> thunderbird-68

This commit is contained in:
taku0 2020-07-27 23:39:25 +09:00
parent aa02af278a
commit a62d988aeb
3 changed files with 385 additions and 0 deletions

View file

@ -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;
};
}

View file

@ -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.

View file

@ -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 { };