diff --git a/net-mail/mailutils/Manifest b/net-mail/mailutils/Manifest new file mode 100644 index 0000000..2e5b6c6 --- /dev/null +++ b/net-mail/mailutils/Manifest @@ -0,0 +1,11 @@ +AUX comsatd.initd 569 BLAKE2B 1b4ad287b67ef6d95fbc626296e79a857264754159967c54105e9d9f4493e95d3494cfce6082f289358021e02bbaac580a1b4d78ca8b2cc713af57197e532431 SHA512 9c36ddf70bf4f0e3c56f55651a740014078e3a1a79569a62ccd74e1ec7167eac6ecb69d56c15913d815c472fe943d17a1e781a669208d37c97671afea2208f8f +AUX imap4d.initd 566 BLAKE2B 2d030e47f63b4133eed4b47c9069c54de290f907d9429eb99675380569e1e0efdbb1172664ba1ee0f2924ac7284981fbe350d1543a6d0790722456523d997535 SHA512 51d6cf4285c6823d97e52c7eb408a80aa66376f329685acdc21e096c2099a044b2fd18e7b9e5ed89406a3cd1f16b7aa7b0243f8ea46aa7824da48b566ec00324 +AUX mail 82 BLAKE2B 6d9cc293deff8f99cea0ce8842dd34e658844ca9a1f4e530d3c95f8154ed337ab6ccc2b6263af9cfa8078913a7b70beb5874c999174d5648c1faeace8f68e146 SHA512 80080a3118ed66cfde44ad3663e4b07bcd5fe756b86a213ea4e1ab86e27f8485dcf02af3ee6b7f6f12105a267b9619376668e0cb6e60743ffb7664d2dbea9144 +AUX mailutils-3.21-sieve-parser-error-leak.patch 1066 BLAKE2B f7f585390ab429e60c993023ad16f828f36bff5353f529903716356346380c96d64ddc8e29110ab35125fc71c7a9a4b47103c2353f0baae21c2979d167909711 SHA512 dd1cf212caa24e367967c4bd5ca2d7edc8ddf1bd7b68b01540e63cbc4907cdc93363f5ce76f36b0963423921fe6eb738a27609fff04688c6b9f7783aeb10b92f +AUX mailutils-3.5-add-include.patch 275 BLAKE2B 2502fb3226bc63ae98d018392fa1107b4079ea51cd8e57b4e97522d21e696bd6048fad2de885f88644d23f434a6e407f42ba8fcbcfe5b1e65884f37718e34328 SHA512 0972cde536a1a82fe243c9b048fc15f4863586a2344b54c9b4f6f8a5935762c7272c0af2698239af7de9da62b1c2928bc7f621e01f447423fdd8288cedee88b6 +AUX mailutils-fix-test-failure.patch 3804 BLAKE2B 22b1b379e142db53615cd1d7d93d1653933cae4b6db1b8f7ee6ac80b105f4db75c754f8c77a4a4c73db0c1551efacbc5e3108ed6714ab5179542dc3247cb8c3b SHA512 3a88d25ff341dfc425476abda1632fdfa88e8d3602899427c69aa04ee31239035ed29781fca915bceb37bd2c315caeb9b15a1133a16fd71f817ef4ee180db5f7 +AUX mailutils.rc 258 BLAKE2B 3dc68190e11c8bf5016b0fe8b22c61f79ba7de96a1f230f7d0743ba23fa903cb9f99fac94a7363c7d80b7bbaf76e2d4de848e7ac726642fb23c56caf43a46568 SHA512 691bcc81fd355d8f2776e72006c149996273579e099f24970ff0c5dd6bdf65cd64e31597f8b3d8e0a900a91c3325b8d2a1a96682a9b3ff53acd41218fe8721fe +AUX pop3d.initd 563 BLAKE2B fd09d7a7499c888eddfb812644102f979c2423e9b1a9f0077655b6ae4c1eb4214f685ef7843e74a808e52ee988cc3fbefa278754db824256a4972c83fc0ada31 SHA512 7847c29a03f21df82d36c077ccb38329457a332cccdfba24bee3b1c9a8170fc71c07ee674408f069693953dd1bf44b8b8f782dcc35d6b16e62f70b2b32ce018f +DIST mailutils-3.21.tar.xz 3381076 BLAKE2B 395da966e7a290a53665a79f7984185cd73583c599d3b7d05a6b4ec1113fcaab5e526a3323cef36e75fa0eb0f26efdfb4f5874d1dbd633ee9a0a025a9e219140 SHA512 b006a0713d188d003c935b583ffa26284e79c05b808dbe4122aa0049cf0a6af9324ca8518f863aab507a9ac3b041b2cd1b88d9c10f9e6d6a000b8d83b2e22759 +EBUILD mailutils-3.21.ebuild 4090 BLAKE2B 3db331a6a782eea49d383537db34d5af46f4f6c4e94bc1efd24b0b10604e9e83bd8ef5fd8323c2bedcb05d0574d70fdb74e7cffccbe5f7ae7a116eb7b6a9a97d SHA512 a4e0ebd736e1e4ad9efbf9c403b27c2b8887c845a135ea549b5913751b58977dc1e2ba033d2b371f4baf16b141ed1d68cb07ed8bbe2f9b07939804d33f0ffbdd +MISC metadata.xml 696 BLAKE2B bb3b5a94573794ee2eb692533f32cba1dcf432166d9b2997cf60104d88e80f5eac7bb836479e4392700b06efe07c071930308183fb235c42be2cf1fdb8810ac0 SHA512 bb093e2aff71bb09a8f20fc64926f8a8d8c036ad3b3cd3ca61389975d623251841e8d93489f457a56a898db81cf71ecdc071190b9bc1990728b3fa0c9b4cfda1 diff --git a/net-mail/mailutils/files/comsatd.initd b/net-mail/mailutils/files/comsatd.initd new file mode 100644 index 0000000..83da288 --- /dev/null +++ b/net-mail/mailutils/files/comsatd.initd @@ -0,0 +1,24 @@ +#!/sbin/openrc-run + +#--------------------------------------------------------------------------- +# This script starts/stops the GNU Mailutils Comsatd +#--------------------------------------------------------------------------- + +daemon="GNU Mailutils Comsatd" +exec="/usr/sbin/comsatd" + +depend() { + use net +} + +start() { + ebegin "Starting $daemon" + start-stop-daemon --start --quiet --exec ${exec} -- -d 1>&2 + eend $? "Error starting $daemon" +} + +stop() { + ebegin "Stopping $daemon" + start-stop-daemon --stop --quiet --exec ${exec} 1>&2 + eend $? "Error stopping $daemon" +} diff --git a/net-mail/mailutils/files/imap4d.initd b/net-mail/mailutils/files/imap4d.initd new file mode 100644 index 0000000..39617b9 --- /dev/null +++ b/net-mail/mailutils/files/imap4d.initd @@ -0,0 +1,24 @@ +#!/sbin/openrc-run + +#--------------------------------------------------------------------------- +# This script starts/stops the GNU Mailutils Imap4d +#--------------------------------------------------------------------------- + +daemon="GNU Mailutils Imap4d" +exec="/usr/sbin/imap4d" + +depend() { + use net +} + +start() { + ebegin "Starting $daemon" + start-stop-daemon --start --quiet --exec ${exec} -- -d 1>&2 + eend $? "Error starting $daemon" +} + +stop() { + ebegin "Stopping $daemon" + start-stop-daemon --stop --quiet --exec ${exec} 1>&2 + eend $? "Error stopping $daemon" +} diff --git a/net-mail/mailutils/files/mail b/net-mail/mailutils/files/mail new file mode 100644 index 0000000..413ca85 --- /dev/null +++ b/net-mail/mailutils/files/mail @@ -0,0 +1,5 @@ +# Sample mail config file +# See info mail for more options + +# no debug +debug { }; diff --git a/net-mail/mailutils/files/mailutils-3.21-sieve-parser-error-leak.patch b/net-mail/mailutils/files/mailutils-3.21-sieve-parser-error-leak.patch new file mode 100644 index 0000000..392d229 --- /dev/null +++ b/net-mail/mailutils/files/mailutils-3.21-sieve-parser-error-leak.patch @@ -0,0 +1,27 @@ +diff '--color=auto' -uNr mailutils-3.21.orig/libmu_sieve/sieve-gram.y mailutils-3.21/libmu_sieve/sieve-gram.y +--- mailutils-3.21.orig/libmu_sieve/sieve-gram.y 2026-07-19 12:44:14.665009953 +0200 ++++ mailutils-3.21/libmu_sieve/sieve-gram.y 2026-07-19 12:45:52.637464772 +0200 +@@ -34,6 +34,7 @@ + + static void node_list_add (struct mu_sieve_node_list *list, + struct mu_sieve_node *node); ++static void tree_free (struct mu_sieve_node **tree); + + %} + +@@ -74,6 +75,15 @@ static void node_list_add (struct mu_sieve_node_list *list, + %type else_part + %type list testlist elsif_branch maybe_elsif + ++/* Reclaim partially built syntax trees and identifiers if error recovery ++ discards their semantic values. Values stored in the machine string and ++ argument pools remain owned by the machine and are released when it is ++ destroyed. */ ++%destructor { free ($$); } IDENT ++%destructor { free ($$.ident); } ++%destructor { tree_free (&$$); } ++%destructor { tree_free (&$$.head); } ++ + %% + + input : /* empty */ diff --git a/net-mail/mailutils/files/mailutils-3.5-add-include.patch b/net-mail/mailutils/files/mailutils-3.5-add-include.patch new file mode 100644 index 0000000..307840b --- /dev/null +++ b/net-mail/mailutils/files/mailutils-3.5-add-include.patch @@ -0,0 +1,10 @@ +--- a/frm/frm.h 2018-02-10 09:06:00.000000000 +0300 ++++ b/frm/frm.h 2019-02-07 09:40:57.541489264 +0300 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #ifdef HAVE_TERMIOS_H + # include diff --git a/net-mail/mailutils/files/mailutils-fix-test-failure.patch b/net-mail/mailutils/files/mailutils-fix-test-failure.patch new file mode 100644 index 0000000..767c3b7 --- /dev/null +++ b/net-mail/mailutils/files/mailutils-fix-test-failure.patch @@ -0,0 +1,172 @@ +--- a/libmailutils/wordsplit/wordsplit.at 2025-12-18 20:44:10.041576656 +0100 ++++ b/libmailutils/wordsplit/wordsplit.at 2025-12-18 20:45:50.538476607 +0100 +@@ -1207,10 +1207,10 @@ + + AT_BANNER([Substring removal]) + TESTWSP([strip shortest prefix],[wsp-strip wsp-spref], +-[-DA=talis:ac:tanta -DB=talis:ac -DC=talis], +-[${A#*:} +-${B#*:} +-${C#*:}], ++[-D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis], ++[${_A#*:} ++${_B#*:} ++${_C#*:}], + [NF: 1 + 0: ac:tanta + TOTAL: 1 +@@ -1223,10 +1223,10 @@ + ]) + + TESTWSP([strip longest prefix],[wsp-strip wsp-lpref], +-[-DA=talis:ac:tanta -DB=talis:ac -DC=talis], +-[${A##*:} +-${B##*:} +-${C##*:}], ++[-D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis], ++[${_A##*:} ++${_B##*:} ++${_C##*:}], + [NF: 1 + 0: tanta + TOTAL: 1 +@@ -1239,10 +1239,10 @@ + ]) + + TESTWSP([strip shortest suffix],[wsp-strip wsp-ssuf], +-[-DA=talis:ac:tanta -DB=talis:ac -DC=talis], +-[${A%:*} +-${B%:*} +-${C%:*}], ++[-D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis], ++[${_A%:*} ++${_B%:*} ++${_C%:*}], + [NF: 1 + 0: talis:ac + TOTAL: 1 +@@ -1255,10 +1255,10 @@ + ]) + + TESTWSP([strip longest suffix],[wsp-strip wsp-lsuf], +-[-DA=talis:ac:tanta -DB=talis:ac -DC=talis], +-[${A%%:*} +-${B%%:*} +-${C%%:*}], ++[-D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis], ++[${_A%%:*} ++${_B%%:*} ++${_C%%:*}], + [NF: 1 + 0: talis + TOTAL: 1 +--- a/libmailutils/tests/testsuite 2025-12-18 20:44:22.052684969 +0100 ++++ b/libmailutils/tests/testsuite 2025-12-18 20:48:14.911648132 +0100 +@@ -17432,18 +17432,18 @@ + + { set +x + printf "%s\n" "$at_srcdir/wordsplit.at:1209: +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-\${A#*:} +-\${B#*:} +-\${C#*:} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++\${_A#*:} ++\${_B#*:} ++\${_C#*:} + EOT + " + at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:1209" + ( $at_check_trace; +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-${A#*:} +-${B#*:} +-${C#*:} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++${_A#*:} ++${_B#*:} ++${_C#*:} + EOT + + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- +@@ -17481,18 +17481,18 @@ + + { set +x + printf "%s\n" "$at_srcdir/wordsplit.at:1225: +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-\${A##*:} +-\${B##*:} +-\${C##*:} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++\${_A##*:} ++\${_B##*:} ++\${_C##*:} + EOT + " + at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:1225" + ( $at_check_trace; +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-${A##*:} +-${B##*:} +-${C##*:} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++${_A##*:} ++${_B##*:} ++${_C##*:} + EOT + + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- +@@ -17530,18 +17530,18 @@ + + { set +x + printf "%s\n" "$at_srcdir/wordsplit.at:1241: +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-\${A%:*} +-\${B%:*} +-\${C%:*} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++\${_A%:*} ++\${_B%:*} ++\${_C%:*} + EOT + " + at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:1241" + ( $at_check_trace; +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-${A%:*} +-${B%:*} +-${C%:*} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++${_A%:*} ++${_B%:*} ++${_C%:*} + EOT + + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- +@@ -17579,18 +17579,18 @@ + + { set +x + printf "%s\n" "$at_srcdir/wordsplit.at:1257: +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-\${A%%:*} +-\${B%%:*} +-\${C%%:*} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++\${_A%%:*} ++\${_B%%:*} ++\${_C%%:*} + EOT + " + at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:1257" + ( $at_check_trace; +- wsp -DA=talis:ac:tanta -DB=talis:ac -DC=talis <<'EOT' +-${A%%:*} +-${B%%:*} +-${C%%:*} ++ wsp -D_A=talis:ac:tanta -D_B=talis:ac -D_C=talis <<'EOT' ++${_A%%:*} ++${_B%%:*} ++${_C%%:*} + EOT + + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- diff --git a/net-mail/mailutils/files/mailutils.rc b/net-mail/mailutils/files/mailutils.rc new file mode 100644 index 0000000..07a5519 --- /dev/null +++ b/net-mail/mailutils/files/mailutils.rc @@ -0,0 +1,11 @@ +# Sample mailutils config file. Read by all mailutils programs. +# See info mailutils for details. + +# Gentoo default is maildir +mailbox { + mailbox-type maildir; + mailbox-pattern .maildir; +}; + +# Place individual config files here +include /etc/mailutils.d/; diff --git a/net-mail/mailutils/files/pop3d.initd b/net-mail/mailutils/files/pop3d.initd new file mode 100644 index 0000000..dcbe9cc --- /dev/null +++ b/net-mail/mailutils/files/pop3d.initd @@ -0,0 +1,24 @@ +#!/sbin/openrc-run + +#--------------------------------------------------------------------------- +# This script starts/stops the GNU Mailutils Pop3d +#--------------------------------------------------------------------------- + +daemon="GNU Mailutils Pop3d" +exec="/usr/sbin/pop3d" + +depend() { + use net +} + +start() { + ebegin "Starting $daemon" + start-stop-daemon --start --quiet --exec ${exec} -- -d 1>&2 + eend $? "Error starting $daemon" +} + +stop() { + ebegin "Stopping $daemon" + start-stop-daemon --stop --quiet --exec ${exec} 1>&2 + eend $? "Error stopping $daemon" +} diff --git a/net-mail/mailutils/mailutils-3.21.ebuild b/net-mail/mailutils/mailutils-3.21.ebuild new file mode 100644 index 0000000..ee6c7f4 --- /dev/null +++ b/net-mail/mailutils/mailutils-3.21.ebuild @@ -0,0 +1,164 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +GUILE_COMPAT=( 2-2 3-0 ) +PYTHON_COMPAT=( python3_{12..14} ) + +inherit autotools elisp-common flag-o-matic guile-single python-single-r1 toolchain-funcs + +DESCRIPTION="A useful collection of mail servers, clients, and filters" +HOMEPAGE="https://mailutils.org/" +SRC_URI="mirror://gnu/mailutils/${P}.tar.xz" + +LICENSE="GPL-3+ LGPL-3+" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos" +IUSE="berkdb bidi +clients emacs gdbm sasl guile kerberos kyotocabinet \ + ldap mysql nls pam postgres python servers split-usr ssl static-libs test +threads tcpd \ + tokyocabinet" +RESTRICT="!test? ( test )" + +RDEPEND=" + !mail-filter/libsieve + !mail-client/mailx + sys-libs/ncurses:= + sys-libs/readline:= + dev-libs/libltdl:0 + virtual/libcrypt:= + virtual/mta + berkdb? ( sys-libs/db:= ) + bidi? ( dev-libs/fribidi ) + emacs? ( >=app-editors/emacs-23.1:* ) + gdbm? ( sys-libs/gdbm:= ) + guile? ( ${GUILE_DEPS} ) + kerberos? ( virtual/krb5 ) + kyotocabinet? ( dev-db/kyotocabinet ) + ldap? ( net-nds/openldap:= ) + mysql? ( dev-db/mysql-connector-c:= ) + nls? ( sys-devel/gettext ) + pam? ( sys-libs/pam:= ) + postgres? ( dev-db/postgresql:= ) + python? ( ${PYTHON_DEPS} ) + sasl? ( >=net-misc/gsasl-2.0.0 ) + servers? ( virtual/libiconv dev-libs/libunistring:= ) + ssl? ( net-libs/gnutls:= ) + tcpd? ( sys-apps/tcp-wrappers ) + tokyocabinet? ( dev-db/tokyocabinet ) + " + +DEPEND="${RDEPEND}" + +BDEPEND=" + virtual/pkgconfig + test? ( dev-util/dejagnu ) +" + +REQUIRED_USE=" + guile? ( ${GUILE_REQUIRED_USE} ) + python? ( ${PYTHON_REQUIRED_USE} ) + servers? ( tcpd ldap )" + +DOCS=( ABOUT-NLS AUTHORS COPYING COPYING.LESSER ChangeLog INSTALL NEWS README THANKS TODO ) +PATCHES=( + "${FILESDIR}"/${PN}-3.5-add-include.patch + "${FILESDIR}"/${PN}-fix-test-failure.patch + "${FILESDIR}"/${PN}-3.21-sieve-parser-error-leak.patch +) + +pkg_setup() { + use guile && guile-single_pkg_setup + use python && python-single-r1_pkg_setup +} + +src_prepare() { + default + if use guile; then + guile_bump_sources + sed -i -e "s|guile|${GUILE}|" libmu_scm/tests/testsuite || die + fi + if use mysql; then + sed -i -e /^INCLUDES/"s:$:$(mysql_config --include):" \ + sql/Makefile.am || die + fi + eautoreconf +} + +src_configure() { + # bug #943873 + append-cflags -std=gnu17 + + if use guile; then + export GUILE_SNARF="${GUILESNARF}" + export GUILE_TOOLS="${GUILE/guile/guile-tools}" + fi + + # maildir is the Gentoo default + econf \ + MU_DEFAULT_SCHEME=maildir \ + CURSES_LIBS="$($(tc-getPKG_CONFIG) --libs ncurses)" \ + $(use_with berkdb berkeley-db) \ + $(use_with bidi fribidi) \ + $(use_with gdbm) \ + $(use_with sasl gsasl) \ + $(use_with guile) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with mysql) \ + $(use_enable nls) \ + $(use_enable pam) \ + $(use_with postgres) \ + $(use_enable python) \ + $(use_with ssl gnutls) \ + $(use_enable static-libs static) \ + $(use_enable threads pthread) \ + $(use_with tokyocabinet) \ + $(use_with kyotocabinet) \ + $(use_with tcpd tcp-wrappers) \ + $(use_enable servers build-servers) \ + $(use_with servers unistring ) \ + $(use_enable clients build-clients) \ + EMACS=$(usex emacs emacs no) \ + --with-lispdir="${EPREFIX}${SITELISP}/${PN}" \ + --with-mail-spool=/var/spool/mail \ + --with-readline \ + --enable-ipv6 \ + --enable-sendmail \ + --disable-debug +} + +src_install() { + default + + insinto /etc + # bug 613112 + newins "${FILESDIR}/mailutils.rc" mailutils.conf + keepdir /etc/mailutils.d/ + insinto /etc/mailutils.d + doins "${FILESDIR}/mail" + + use guile && guile_unstrip_ccache + + if use python; then + python_optimize + if use static-libs; then + rm -r "${D}$(python_get_sitedir)/mailutils"/*.{a,la} || die + fi + fi + + if use servers; then + newinitd "${FILESDIR}"/imap4d.initd imap4d + newinitd "${FILESDIR}"/pop3d.initd pop3d + newinitd "${FILESDIR}"/comsatd.initd comsatd + fi + + # compatibility link + if use clients && use split-usr; then + dosym ../usr/bin/mail /bin/mail + fi + + if ! use static-libs; then + find "${D}" -name "*.la" -delete || die + fi +} diff --git a/net-mail/mailutils/metadata.xml b/net-mail/mailutils/metadata.xml new file mode 100644 index 0000000..0587d67 --- /dev/null +++ b/net-mail/mailutils/metadata.xml @@ -0,0 +1,17 @@ + + + + + eras@gentoo.org + Eray Aslan + + + Enable Tokyo Cabinet database support + Enable Kyoto Cabinet database support + Build client programs - frm maidag mail sieve messages readmsg dotlock movemail mimeview mh + Build server programs - imap4d pop3d comsatd + + + mailutils + +