From 582a09df266cfb2d99bc89c1c7f15d2ed2950ba8 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Thu, 23 Mar 2023 13:19:30 +0100 Subject: [PATCH 1/2] neomutt: 20220429 -> 20230407 neomutt-test-files: updated to latest version. Cleaned up old hacks (?) now that pkg-config is used. Exposes Lua feature as `enableLua` flag in function signature. --- .../mailreaders/neomutt/default.nix | 31 ++++++----- .../neomutt/fix-open-very-large-mailbox.patch | 51 +++++++++++++++++++ 2 files changed, 66 insertions(+), 16 deletions(-) create mode 100644 pkgs/applications/networking/mailreaders/neomutt/fix-open-very-large-mailbox.patch diff --git a/pkgs/applications/networking/mailreaders/neomutt/default.nix b/pkgs/applications/networking/mailreaders/neomutt/default.nix index d15ab04315e8..9a8dbb97bcd0 100644 --- a/pkgs/applications/networking/mailreaders/neomutt/default.nix +++ b/pkgs/applications/networking/mailreaders/neomutt/default.nix @@ -1,29 +1,36 @@ { lib, stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which , ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn, libxml2, notmuch, openssl -, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib -, zstd, enableZstd ? true, enableMixmaster ? false +, lua, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib +, pkg-config, zstd, enableZstd ? true, enableMixmaster ? false, enableLua ? false }: stdenv.mkDerivation rec { - version = "20220429"; + version = "20230407"; pname = "neomutt"; src = fetchFromGitHub { owner = "neomutt"; repo = "neomutt"; rev = version; - sha256 = "sha256-LBY7WtmEMg/PcMS/Tc5XEYunIWjoI4IQfUJURKgy1YA="; + sha256 = "sha256-cTZua1AbLMjkMhlUk2aMttj6HdwpJYnRYPuvukSxfwc="; }; + patches = [ + # https://github.com/neomutt/neomutt/issues/3773#issuecomment-1493295144 + ./fix-open-very-large-mailbox.patch + ]; + buildInputs = [ cyrus_sasl gss gpgme libkrb5 libidn ncurses notmuch openssl perl lmdb mailcap sqlite ] - ++ lib.optional enableZstd zstd; + ++ lib.optional enableZstd zstd + ++ lib.optional enableLua lua; nativeBuildInputs = [ docbook_xsl docbook_xml_dtd_42 gettext libxml2 libxslt.bin makeWrapper tcl which zlib w3m + pkg-config ]; enableParallelBuilding = true; @@ -46,10 +53,6 @@ stdenv.mkDerivation rec { --replace /etc/mime.types ${mailcap}/etc/mime.types ''; - preBuild = '' - export HOME=$(mktemp -d) - ''; - configureFlags = [ "--enable-autocrypt" "--gpgme" @@ -66,13 +69,9 @@ stdenv.mkDerivation rec { "--zlib" ] ++ lib.optional enableZstd "--zstd" + ++ lib.optional enableLua "--lua" ++ lib.optional enableMixmaster "--mixmaster"; - # Fix missing libidn in mutt; - # this fix is ugly since it links all binaries in mutt against libidn - # like pgpring, pgpewrap, ... - NIX_LDFLAGS = "-lidn"; - postInstall = '' wrapProgram "$out/bin/neomutt" --prefix PATH : "$out/libexec/neomutt" ''; @@ -83,8 +82,8 @@ stdenv.mkDerivation rec { cp -r ${fetchFromGitHub { owner = "neomutt"; repo = "neomutt-test-files"; - rev = "8629adab700a75c54e8e28bf05ad092503a98f75"; - sha256 = "1ci04nqkab9mh60zzm66sd6mhsr6lya8wp92njpbvafc86vvwdlr"; + rev = "1569b826a56c39fd09f7c6dd5fc1163ff5a356a2"; + sha256 = "sha256-MaH2zEH1Wq3C0lFxpEJ+b/A+k2aKY/sr1EtSPAuRPp8="; }} $(pwd)/test-files chmod -R +w test-files (cd test-files && ./setup.sh) diff --git a/pkgs/applications/networking/mailreaders/neomutt/fix-open-very-large-mailbox.patch b/pkgs/applications/networking/mailreaders/neomutt/fix-open-very-large-mailbox.patch new file mode 100644 index 000000000000..11a4464a57ca --- /dev/null +++ b/pkgs/applications/networking/mailreaders/neomutt/fix-open-very-large-mailbox.patch @@ -0,0 +1,51 @@ +diff --git a/mutt_mailbox.c b/mutt_mailbox.c +index 5581a8187..22f0ca21a 100644 +--- a/mutt_mailbox.c ++++ b/mutt_mailbox.c +@@ -160,6 +160,9 @@ int mutt_mailbox_check(struct Mailbox *m_cur, CheckStatsFlags flags) + st_ctx.st_dev = 0; + st_ctx.st_ino = 0; + ++ if (kInMboxOpen) ++ return 0; ++ + #ifdef USE_IMAP + if (flags & MUTT_MAILBOX_CHECK_FORCE) + mutt_update_num_postponed(); +diff --git a/mx.c b/mx.c +index 4bf5af141..a4e9f83f5 100644 +--- a/mx.c ++++ b/mx.c +@@ -295,6 +295,8 @@ bool mx_mbox_ac_link(struct Mailbox *m) + return true; + } + ++int kInMboxOpen = 0; ++ + /** + * mx_mbox_open - Open a mailbox and parse it + * @param m Mailbox to open +@@ -386,8 +388,10 @@ bool mx_mbox_open(struct Mailbox *m, OpenMailboxFlags flags) + m->msg_tagged = 0; + m->vcount = 0; + ++ kInMboxOpen = 1; + enum MxOpenReturns rc = m->mx_ops->mbox_open(m); + m->opened++; ++ kInMboxOpen = 0; + + if ((rc == MX_OPEN_OK) || (rc == MX_OPEN_ABORT)) + { +diff --git a/mx.h b/mx.h +index 741431570..43e40bf32 100644 +--- a/mx.h ++++ b/mx.h +@@ -38,6 +38,8 @@ extern const struct MxOps *mx_ops[]; + + extern struct EnumDef MboxTypeDef; + ++extern int kInMboxOpen; ++ + typedef uint8_t MsgOpenFlags; ///< Flags for mx_msg_open_new(), e.g. #MUTT_ADD_FROM + #define MUTT_MSG_NO_FLAGS 0 ///< No flags are set + #define MUTT_ADD_FROM (1 << 0) ///< add a From_ line From 4eb3f8c010f9b2381f54418d9e29a5794ee0c797 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Fri, 21 Apr 2023 14:08:00 +0200 Subject: [PATCH 2/2] neomutt: add contrib repositories and expose misc repos as passthru In the previous release, NeoMutt had its contrib folder in its main repository, this fixes people who depended on vim-keys and other stuff through the contrib repository now. --- .../mailreaders/neomutt/default.nix | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/neomutt/default.nix b/pkgs/applications/networking/mailreaders/neomutt/default.nix index 9a8dbb97bcd0..81ccd63d0f05 100644 --- a/pkgs/applications/networking/mailreaders/neomutt/default.nix +++ b/pkgs/applications/networking/mailreaders/neomutt/default.nix @@ -1,7 +1,8 @@ { lib, stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which , ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn, libxml2, notmuch, openssl -, lua, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib +, lua, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib, lndir , pkg-config, zstd, enableZstd ? true, enableMixmaster ? false, enableLua ? false +, withContrib ? true }: stdenv.mkDerivation rec { @@ -74,23 +75,36 @@ stdenv.mkDerivation rec { postInstall = '' wrapProgram "$out/bin/neomutt" --prefix PATH : "$out/libexec/neomutt" - ''; + '' + # https://github.com/neomutt/neomutt-contrib + # Contains vim-keys, keybindings presets and more. + + lib.optionalString withContrib "${lib.getExe lndir} ${passthru.contrib} $out/share/doc/neomutt"; doCheck = true; preCheck = '' - cp -r ${fetchFromGitHub { - owner = "neomutt"; - repo = "neomutt-test-files"; - rev = "1569b826a56c39fd09f7c6dd5fc1163ff5a356a2"; - sha256 = "sha256-MaH2zEH1Wq3C0lFxpEJ+b/A+k2aKY/sr1EtSPAuRPp8="; - }} $(pwd)/test-files + cp -r ${passthru.test-files} $(pwd)/test-files chmod -R +w test-files (cd test-files && ./setup.sh) export NEOMUTT_TEST_DIR=$(pwd)/test-files ''; + passthru = { + test-files = fetchFromGitHub { + owner = "neomutt"; + repo = "neomutt-test-files"; + rev = "1569b826a56c39fd09f7c6dd5fc1163ff5a356a2"; + sha256 = "sha256-MaH2zEH1Wq3C0lFxpEJ+b/A+k2aKY/sr1EtSPAuRPp8="; + }; + contrib = fetchFromGitHub { + owner = "neomutt"; + repo = "neomutt-contrib"; + rev = "8e97688693ca47ea1055f3d15055a4f4ecc5c832"; + sha256 = "sha256-tx5Y819rNDxOpjg3B/Y2lPcqJDArAxVwjbYarVmJ79k="; + }; + }; + checkTarget = "test"; postCheck = "unset NEOMUTT_TEST_DIR";