diff options
author | Alvar Penning <post@0x21.biz> | 2020-10-10 15:12:12 +0200 |
---|---|---|
committer | ajs124 <git@ajs124.de> | 2021-02-19 01:23:47 +0100 |
commit | 553ad198c2005468a024e554776efd5587999261 (patch) | |
tree | 3c31ba1421945b79792f6ff668f9e258a723964b /pkgs/applications/networking | |
parent | f5b5016d80ddfb543e7fa120d0abaffad13646ac (diff) |
claws-mail{,-gtk3}: refactor
Update Claws Mail to its latest version and perform a major refactoring. Previously, the configurable arguments were neither complete nor named according to the configure.ac file. Likewise, the values did not correspond to the defaults, but rather to a personal preference. This has now been changed to enable the arguments which are enabled in the configure.ac file. Also the variable names have been adjusted. For compatibility the old parameters also exist. Next to the claws-mail package is the "experimental" claws-mail-gtk3 package for the non official gtk3 git branch. This package started as an almost one-to-one copy of the claws-mail derivation which small modifications. This package was of course not updated. This has also been changed so that both packages are built from the same derivative.
Diffstat (limited to 'pkgs/applications/networking')
-rw-r--r-- | pkgs/applications/networking/mailreaders/claws-mail/default.nix | 220 | ||||
-rw-r--r-- | pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix | 121 |
2 files changed, 151 insertions, 190 deletions
diff --git a/pkgs/applications/networking/mailreaders/claws-mail/default.nix b/pkgs/applications/networking/mailreaders/claws-mail/default.nix index 7eaefdd91c424..a198c355290a4 100644 --- a/pkgs/applications/networking/mailreaders/claws-mail/default.nix +++ b/pkgs/applications/networking/mailreaders/claws-mail/default.nix @@ -1,52 +1,98 @@ -{ lib, config, fetchurl, stdenv, wrapGAppsHook, autoreconfHook -, curl, dbus, dbus-glib, enchant, gtk2, gnutls, gnupg, gpgme, gumbo -, libarchive, libcanberra-gtk2, libetpan, libnotify, libsoup, libxml2, networkmanager -, openldap, perl, pkg-config, poppler, python, shared-mime-info -, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical -# Build options -# TODO: A flag to build the manual. -# TODO: Plugins that complain about their missing dependencies, even when -# provided: -# gdata requires libgdata -# geolocation requires libchamplain -, enableLdap ? false -, enableNetworkManager ? config.networking.networkmanager.enable or false +{ stdenv, lib, fetchgit, wrapGAppsHook, autoreconfHook, bison, flex +, curl, gtk2, gtk3, pkg-config, python2, python3, shared-mime-info +, glib-networking, gsettings-desktop-schemas + +# Use the experimental gtk3 branch. +, useGtk3 ? false + +# Package compatibility: old parameters whose name were not directly derived , enablePgp ? true -, enablePluginArchive ? false -, enablePluginLitehtmlViewer ? false , enablePluginNotificationDialogs ? true , enablePluginNotificationSounds ? true -, enablePluginPdf ? false -, enablePluginPython ? false -, enablePluginRavatar ? false -, enablePluginRssyl ? false -, enablePluginSmime ? false -, enablePluginSpamassassin ? false -, enablePluginSpamReport ? false -, enablePluginVcalendar ? false -, enableSpellcheck ? false +, enablePluginPdf ? true +, enablePluginRavatar ? true +, enableSpellcheck ? true + +# Arguments to include external libraries +, enableLibSM ? true, libSM +, enableGnuTLS ? true, gnutls +, enableEnchant ? enableSpellcheck, enchant +, enableDbus ? true, dbus, dbus-glib +, enableLdap ? true, openldap +, enableNetworkManager ? true, networkmanager +, enableLibetpan ? true, libetpan +, enableValgrind ? true, valgrind +, enableSvg ? true, librsvg + +# Configure claws-mail's plugins +, enablePluginAcpiNotifier ? true +, enablePluginAddressKeeper ? true +, enablePluginArchive ? true, libarchive +, enablePluginAttRemover ? true +, enablePluginAttachWarner ? true +, enablePluginBogofilter ? true +, enablePluginBsfilter ? true +, enablePluginClamd ? true +, enablePluginDillo ? true +, enablePluginFetchInfo ? true +, enablePluginLibravatar ? enablePluginRavatar +, enablePluginLitehtmlViewer ? true, gumbo +, enablePluginMailmbox ? true +, enablePluginManageSieve ? true +, enablePluginNewMail ? true +, enablePluginNotification ? (enablePluginNotificationDialogs || enablePluginNotificationSounds), libcanberra-gtk2, libcanberra-gtk3, libnotify +, enablePluginPdfViewer ? enablePluginPdf, poppler +, enablePluginPerl ? true, perl +, enablePluginPython ? true +, enablePluginPgp ? enablePgp, gnupg, gpgme +, enablePluginRssyl ? true, libxml2 +, enablePluginSmime ? true +, enablePluginSpamassassin ? true +, enablePluginSpamReport ? true +, enablePluginTnefParse ? true, libytnef +, enablePluginVcalendar ? true, libical }: with lib; -stdenv.mkDerivation rec { - pname = "claws-mail"; +let version = "3.17.8"; - src = fetchurl { - url = "https://www.claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz"; - sha256 = "sha256-zbeygUmV1vSpw7HwvBRn7Vw88qXg2hcwqqJaisyv3a8="; + # The official release uses gtk2 and contains the version tag. + gtk2src = { + rev = version; + sha256 = "0l4f8q11iyj8pi120lrapgq51k5j64xf0jlczkzbm99rym752ch5"; + }; + + # The corresponding commit in the gtk3 branch. + gtk3src = { + rev = "3.99.0"; + sha256 = "176h1swh1zx6dqyzfz470x4a1xicnv0zhy8ir47k7p23g6y17i2k"; }; + python = if useGtk3 then python3 else python2; + pythonPkgs = if useGtk3 + then + with python.pkgs; [ python wrapPython pygobject3 ] + else + with python.pkgs; [ python wrapPython pygtk pygobject2 ]; +in stdenv.mkDerivation rec { + pname = "claws-mail"; + inherit version; + + src = fetchgit ({ + url = "git://git.claws-mail.org/claws.git"; + } // (if useGtk3 then gtk3src else gtk2src)); + outputs = [ "out" "dev" ]; - patches = [ - ./mime.patch - ]; + patches = [ ./mime.patch ]; preConfigure = '' # autotools check tries to dlopen libpython as a requirement for the python plugin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib + # generate version without .git + [ -e version ] || echo "echo ${version}" > version ''; postPatch = '' @@ -54,51 +100,87 @@ stdenv.mkDerivation rec { --subst-var-by MIMEROOTDIR ${shared-mime-info}/share ''; - nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook python.pkgs.wrapPython ]; - propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ]; + nativeBuildInputs = [ autoreconfHook pkg-config bison flex wrapGAppsHook ]; + propagatedBuildInputs = pythonPkgs; buildInputs = - [ curl dbus dbus-glib gtk2 gnutls gsettings-desktop-schemas - libetpan perl glib-networking libSM libytnef - ] - ++ optional enableSpellcheck enchant - ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ] - ++ optional enablePluginArchive libarchive - ++ optional enablePluginNotificationSounds libcanberra-gtk2 - ++ optional enablePluginNotificationDialogs libnotify - ++ optional enablePluginLitehtmlViewer gumbo - ++ optional enablePluginRssyl libxml2 - ++ optional enableNetworkManager networkmanager - ++ optional enableLdap openldap - ++ optional enablePluginPdf poppler - ++ optional enablePluginVcalendar libical; + [ curl gsettings-desktop-schemas glib-networking ] + ++ [(if useGtk3 then gtk3 else gtk2)] + ++ optional enableLibSM libSM + ++ optional enableGnuTLS gnutls + ++ optional enableEnchant enchant + ++ optionals enableDbus [ dbus dbus-glib ] + ++ optional enableLdap openldap + ++ optional enableNetworkManager networkmanager + ++ optional enableLibetpan libetpan + ++ optional enableValgrind valgrind + ++ optional enableSvg librsvg + ++ optional enablePluginArchive libarchive + ++ optional enablePluginLitehtmlViewer gumbo + ++ optionals enablePluginNotification [ libnotify ] ++ [(if useGtk3 then libcanberra-gtk3 else libcanberra-gtk2)] + ++ optional enablePluginPerl perl + ++ optional enablePluginPdfViewer poppler + ++ optional enablePluginRssyl libxml2 + ++ optionals enablePluginPgp [ gnupg gpgme ] + ++ optional enablePluginTnefParse libytnef + ++ optional enablePluginVcalendar libical + ; configureFlags = - optional (!enableLdap) "--disable-ldap" - ++ optional (!enableNetworkManager) "--disable-networkmanager" - ++ optionals (!enablePgp) [ - "--disable-pgpcore-plugin" - "--disable-pgpinline-plugin" - "--disable-pgpmime-plugin" + [ + "--disable-manual" # Missing docbook-tools, e.g., docbook2html + "--disable-compface" # Missing compface library + "--disable-jpilot" # Missing jpilot library + + "--disable-gdata-plugin" # Complains about missing libgdata, even when provided + "--disable-fancy-plugin" # Missing libwebkit-1.0 library ] - ++ optional (!enablePluginArchive) "--disable-archive-plugin" - ++ optional (!enablePluginLitehtmlViewer) "--disable-litehtml_viewer-plugin" - ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin" - ++ optional (!enablePluginPython) "--disable-python-plugin" - ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin" - ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin" - ++ optional (!enablePluginSmime) "--disable-smime-plugin" - ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin" - ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin" - ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin" - ++ optional (!enableSpellcheck) "--disable-enchant"; + ++ + (map (e: strings.enableFeature (lists.head e) (lists.last e)) [ + [ enableLibSM "libsm" ] + [ enableGnuTLS "gnutls" ] + [ enableEnchant "enchant" ] + [ enableDbus "dbus" ] + [ enableLdap "ldap" ] + [ enableNetworkManager "networkmanager" ] + [ enableLibetpan "libetpan" ] + [ enableValgrind "valgrind" ] + [ enableSvg "svg" ] - enableParallelBuilding = true; + [ enablePluginAcpiNotifier "acpi_notifier-plugin" ] + [ enablePluginAddressKeeper "address_keeper-plugin" ] + [ enablePluginArchive "archive-plugin" ] + [ enablePluginAttRemover "att_remover-plugin" ] + [ enablePluginAttachWarner "attachwarner-plugin" ] + [ enablePluginBogofilter "bogofilter-plugin" ] + [ enablePluginBsfilter "bsfilter-plugin" ] + [ enablePluginClamd "clamd-plugin" ] + [ enablePluginDillo "dillo-plugin" ] + [ enablePluginFetchInfo "fetchinfo-plugin" ] + [ enablePluginLibravatar "libravatar-plugin" ] + [ enablePluginLitehtmlViewer "litehtml_viewer-plugin" ] + [ enablePluginMailmbox "mailmbox-plugin" ] + [ enablePluginManageSieve "managesieve-plugin" ] + [ enablePluginNewMail "newmail-plugin" ] + [ enablePluginNotification "notification-plugin" ] + [ enablePluginPdfViewer "pdf_viewer-plugin" ] + [ enablePluginPerl "perl-plugin" ] + [ enablePluginPython "python-plugin" ] + [ enablePluginPgp "pgpcore-plugin" ] + [ enablePluginPgp "pgpmime-plugin" ] + [ enablePluginPgp "pgpinline-plugin" ] + [ enablePluginRssyl "rssyl-plugin" ] + [ enablePluginSmime "smime-plugin" ] + [ enablePluginSpamassassin "spamassassin-plugin" ] + [ enablePluginSpamReport "spam_report-plugin" ] + [ enablePluginTnefParse "tnef_parse-plugin" ] + [ enablePluginVcalendar "vcalendar-plugin" ] + ]); - pythonPath = with python.pkgs; [ pygobject2 pygtk ]; + enableParallelBuilding = true; preFixup = '' - buildPythonPath "$out $pythonPath" + buildPythonPath "$out $pythonPkgs" gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH") ''; @@ -112,6 +194,6 @@ stdenv.mkDerivation rec { homepage = "https://www.claws-mail.org/"; license = licenses.gpl3; platforms = platforms.linux; - maintainers = with maintainers; [ fpletz globin orivej ]; + maintainers = with maintainers; [ fpletz globin orivej oxzi ]; }; } diff --git a/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix b/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix deleted file mode 100644 index d5223092446df..0000000000000 --- a/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ lib, config, fetchgit, stdenv, wrapGAppsHook, autoreconfHook, bison, flex -, curl, dbus, dbus-glib, enchant, gtk3, gnutls, gnupg, gpgme -, libarchive, libcanberra-gtk3, libetpan, libnotify, libsoup, libxml2, networkmanager -, openldap, perl, pkg-config, poppler, python, shared-mime-info, webkitgtk -, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical -# Build options -# TODO: A flag to build the manual. -# TODO: Plugins that complain about their missing dependencies, even when -# provided: -# gdata requires libgdata -# geolocation requires libchamplain -, enableLdap ? false -, enableNetworkManager ? config.networking.networkmanager.enable or false -, enablePgp ? true -, enablePluginArchive ? false -, enablePluginFancy ? true -, enablePluginNotificationDialogs ? true -, enablePluginNotificationSounds ? true -, enablePluginPdf ? false -, enablePluginPython ? false -, enablePluginRavatar ? false -, enablePluginRssyl ? false -, enablePluginSmime ? false -, enablePluginSpamassassin ? false -, enablePluginSpamReport ? false -, enablePluginVcalendar ? false -, enableSpellcheck ? false -}: - -with lib; - -stdenv.mkDerivation rec { - pname = "claws-mail-gtk3"; - version = "3.99.0"; - - src = fetchgit { - url = "git://git.claws-mail.org/claws.git"; - rev = version; - sha256 = "176h1swh1zx6dqyzfz470x4a1xicnv0zhy8ir47k7p23g6y17i2k"; - }; - - outputs = [ "out" "dev" ]; - - patches = [ ./mime.patch ]; - - preConfigure = '' - # autotools check tries to dlopen libpython as a requirement for the python plugin - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib - # generate version without .git - [ -e version ] || echo "echo ${version}" > version - ''; - - postPatch = '' - substituteInPlace src/procmime.c \ - --subst-var-by MIMEROOTDIR ${shared-mime-info}/share - ''; - - nativeBuildInputs = [ autoreconfHook bison flex pkg-config wrapGAppsHook python.pkgs.wrapPython ]; - propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ]; - - buildInputs = - [ curl dbus dbus-glib gtk3 gnutls gsettings-desktop-schemas - libetpan perl glib-networking libSM libytnef - ] - ++ optional enableSpellcheck enchant - ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ] - ++ optional enablePluginArchive libarchive - ++ optional enablePluginNotificationSounds libcanberra-gtk3 - ++ optional enablePluginNotificationDialogs libnotify - ++ optional enablePluginFancy libsoup - ++ optional enablePluginRssyl libxml2 - ++ optional enableNetworkManager networkmanager - ++ optional enableLdap openldap - ++ optional enablePluginPdf poppler - ++ optional enablePluginFancy webkitgtk - ++ optional enablePluginVcalendar libical; - - configureFlags = - optional (!enableLdap) "--disable-ldap" - ++ optional (!enableNetworkManager) "--disable-networkmanager" - ++ optionals (!enablePgp) [ - "--disable-pgpcore-plugin" - "--disable-pgpinline-plugin" - "--disable-pgpmime-plugin" - ] - ++ optional (!enablePluginArchive) "--disable-archive-plugin" - ++ optional (!enablePluginFancy) "--disable-fancy-plugin" - ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin" - ++ optional (!enablePluginPython) "--disable-python-plugin" - ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin" - ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin" - ++ optional (!enablePluginSmime) "--disable-smime-plugin" - ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin" - ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin" - ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin" - ++ optional (!enableSpellcheck) "--disable-enchant"; - - enableParallelBuilding = true; - - pythonPath = with python.pkgs; [ pygobject2 pygtk ]; - - preFixup = '' - buildPythonPath "$out $pythonPath" - gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH") - ''; - - postInstall = '' - mkdir -p $out/share/applications - cp claws-mail.desktop $out/share/applications - ''; - - NIX_CFLAGS_COMPILE = [ "-Wno-deprecated-declarations" ]; - - meta = { - description = "The user-friendly, lightweight, and fast email client"; - homepage = "https://www.claws-mail.org/"; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = with maintainers; [ fpletz globin orivej ]; - }; -} |