diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-05-23 00:06:40 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-05-23 00:06:40 +0100 |
commit | b3b92de25c3fc5f6bddc5e513027140591a0b2a5 (patch) | |
tree | f2ce6d7e747abea3e8fa7d99e32ad5d98cf33988 /mail-filter/procmail | |
parent | 236e75597883501f8700d9ba1a5c8276f578a17f (diff) |
gentoo auto-resync : 23:05:2024 - 00:06:39
Diffstat (limited to 'mail-filter/procmail')
-rw-r--r-- | mail-filter/procmail/Manifest | 2 | ||||
-rw-r--r-- | mail-filter/procmail/files/procmail-3.24-modern-c.patch | 255 | ||||
-rw-r--r-- | mail-filter/procmail/procmail-3.24-r1.ebuild | 119 |
3 files changed, 376 insertions, 0 deletions
diff --git a/mail-filter/procmail/Manifest b/mail-filter/procmail/Manifest index 76dd9450c509..8ed860ac2bf7 100644 --- a/mail-filter/procmail/Manifest +++ b/mail-filter/procmail/Manifest @@ -1,6 +1,8 @@ AUX procmail-3.24-gentoo-prefix.patch 6059 BLAKE2B fc2e6a29a6e6308a9a4aed3df3618570cb78bb498f8b717a041f782b5547f762b6ca8f00262bb372eae92aa0c908fd1d0252f61003b415b45e7c476a3e304050 SHA512 550f168a6823554e178126d25702eb456ad01e9b35dae606a4ad728b1cbf57db2d0a0a60dca1067315f07520aa94c61980ac2682174f175ecbf03f2c7cbdca09 AUX procmail-3.24-lazy-bindings.patch 651 BLAKE2B 1178f07504806a9b6e667e17b73b7e57557053fc90ab9ead0a41665aa4731ca38e85bbabe17b48817353a2e22a99d93e9888f72abd0578e85b289c5adcd390ce SHA512 3edee322d69305c5fa38cada43283f1417fe09dc677b51d5564ea606663e8007c1d677e7b68e6f3628c774404003d522cd9fc11ffcedf5e05094a1a3baaed9d8 AUX procmail-3.24-maildir.patch 478 BLAKE2B df57c8b2b11a7bb9101c98493be01478d73e841a1047eb64e83478726bb5fb839af0c9af30b3c3c6e49eb33d1320a5b203a46b9eb5d66e3767d9b0e27706841b SHA512 6c35e975e9880505eb48e685268c58453954db32151af11e87c61cccce81a350bf29f215cfe0ab4ff01f13408833ba7da401605d33a5c5c88a1876c04c86e980 +AUX procmail-3.24-modern-c.patch 6281 BLAKE2B b4dff0a8c23f4b1ce1399bdf689b0c21e084e49c643c86089d1bd59b0c59461205cdc9d9acd76085f2c68f558f40802c7b7f02dd394249ff1935227215afa0f0 SHA512 4be3aa07f37b160bbdefeacf595f675cb92d927aaef4449f70a0f5ae110464a53c668a43da6d6f4aa8ea124a8ff4ef81b9012ceb55952979d4bcbfa9a17bd283 DIST procmail-3.24.gh.tar.gz 299704 BLAKE2B 3223e9551a48329da88545bc8b90a346dea1182ba5ec6221acbe7a76cf01485b7115194087104bd042eeec3660de9f6146c5b9d984763fee1e2174f1edd59c11 SHA512 ce3763205d7e34c8a096c411487de296ecfb190ba817ad07926d44811222e689faedb97a3d4e85989db70e5a2298b26fff70c9d0cb0324a447ddc8988d7fe8ea +EBUILD procmail-3.24-r1.ebuild 3274 BLAKE2B 0726f6780829ec2da24e9ff55ed873344bbbc09738d22997f4aac362e77f2acd234ef34bc62468fe35f5bd83e59e53230c98f52975d7161f83fce01850a9d294 SHA512 2b1e56f05b3da0aced90f8ad32a0a5fed3af3d0deea6f41c4a9c5b47835aaf8c83068c61ba8dd276611b231b7332d24a0a3f6dfc23886d8ea802e276795f2761 EBUILD procmail-3.24.ebuild 3224 BLAKE2B fac2c8bba219ff0881ac7197431566ca5a0b7e5c47873522f17966fa81f3062a9a4534940ab20931b7d281d68afa57e8d72a7fe2062b4d559ccd1e6f711474d7 SHA512 86bb3d53f932e68d7fe408191142f6727fb7fcb2bf94d77e347e05195869d686b252a8e6abf34d82ce6880a0513eff1cea024eaafc8919c665c5e2694481230e MISC metadata.xml 171 BLAKE2B 4d68baf0e7acc5ef563cb2feeb7bc0b2d4f0bdf03780b62d338361b1da05acdbf29c94a108fe200daccc9f60bed0aa1a1be81908f36b9258d8d19d16b5e2fe36 SHA512 ef6ad959681e435a0c4fdda56f12e41a8cf24063413bcf61544c095f31eb91c30b85b1f032f2416bfac7c97ebfbe9ce1abba96805540b1568843d0ab238117d5 diff --git a/mail-filter/procmail/files/procmail-3.24-modern-c.patch b/mail-filter/procmail/files/procmail-3.24-modern-c.patch new file mode 100644 index 000000000000..dba497304957 --- /dev/null +++ b/mail-filter/procmail/files/procmail-3.24-modern-c.patch @@ -0,0 +1,255 @@ +From 8cfd570fd14c8fb9983859767ab1851bfd064b64 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com> +Date: Wed, 31 Jan 2024 18:41:21 +0100 +Subject: [PATCH] Fixed build with gcc-14 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com> +--- + initmake | 4 +- + src/autoconf | 173 ++++++++++++++++++++++++++------------------------- + 2 files changed, 91 insertions(+), 86 deletions(-) + +diff --git a/initmake b/initmake +index b901add..703d651 100755 +--- a/initmake ++++ b/initmake +@@ -124,7 +124,7 @@ else + fi + + cat >_autotst.c <<HERE +-main() ++int main() + { return 0; + } + HERE +@@ -200,7 +200,7 @@ cat >_autotst.c <<HERE + #include <sys/types.h> + #include <stdio.h> + #include <sys/stat.h> +-main() ++int main() + { struct stat buf;return!&buf; + } + HERE +diff --git a/src/autoconf b/src/autoconf +index 7c46487..97c0bce 100755 +--- a/src/autoconf ++++ b/src/autoconf +@@ -363,6 +363,7 @@ cat >_autotst.c <<HERE + #include <unistd.h> /* getpid() getppid() */ + #endif + #include <stdio.h> ++#include <stdlib.h> + #include <time.h> + #include <fcntl.h> + #include <signal.h> /* SIGKILL */ +@@ -416,6 +417,16 @@ cat >_autotst.c <<HERE + int dolock,child[NR_of_forks],timeout,fdcollect; + char dirlocktest[]="_locktest"; + ++int killchildren() ++{ int i; ++ i=NR_of_forks; ++ do ++ if(child[--i]>0) ++ kill(child[i],SIGTERM),child[i]=0; ++ while(i); ++ return 0; ++} ++ + void stimeout() + { timeout=1;close(fdcollect);killchildren(); + } +@@ -437,7 +448,79 @@ unsigned sfork() + return pid; + } + +-int main(argc,argv)char*argv[]; ++static int oldfdlock; ++#ifdef F_SETLKW ++static struct flock flck; /* why can't it be a local variable? */ ++#endif ++#ifdef F_LOCK ++static off_t oldlockoffset; ++#endif ++ ++int fdlock(int fd) ++{ int i;unsigned gobble[GOBBLE>>2]; ++ for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ ++ oldfdlock=fd;fd=0; ++ if(MSK_fcntl&dolock) ++#ifdef F_SETLKW ++ { static unsigned extra; ++ flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock); ++ if(!extra--) ++ extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck); ++ flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck); ++ } ++#else ++ fd=1; ++#endif ++ if(MSK_lockf&dolock) ++#ifdef F_LOCK ++ oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0); ++#else ++ fd=1; ++#endif ++ if(MSK_flock&dolock) ++#ifdef LOCK_EX ++ fd|=flock(oldfdlock,LOCK_EX); ++#else ++ fd=1; ++#endif ++ return fd; ++} ++ ++int sfdlock(int fd) ++{ int i;unsigned gobble[GOBBLE>>2]; ++ for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ ++ return fdlock(fd); ++} ++ ++int fdunlock() ++{ int i;unsigned gobble[GOBBLE]; ++ for(i=GOBBLE;i;gobble[--i]=~(unsigned)0); /* some SunOS libs mess this up */ ++ if(MSK_flock&dolock) ++#ifdef LOCK_EX ++ i|=flock(oldfdlock,LOCK_UN); ++#else ++ i=1; ++#endif ++ if(MSK_lockf&dolock) ++#ifdef F_LOCK ++ { lseek(oldfdlock,oldlockoffset,SEEK_SET); ++ i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0); ++ } ++#else ++ i=1; ++#endif ++ if(MSK_fcntl&dolock) ++#ifdef F_SETLKW ++ flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck); ++#else ++ i=1; ++#endif ++ if(!i) ++ for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;); ++ return i; ++} ++ ++int main(argc,argv)int argc;char*argv[]; + { int goodlock,testlock,i,pip[2],pipw[2];time_t otimet;unsigned dtimet; + static char filename[]="_locktst.l0"; + close(0);goodlock=0;testlock=FIRST_lock;signal(SIGPIPE,SIG_DFL); +@@ -576,88 +659,6 @@ skip_tests: + puts("Kernel-locking tests completed.");fprintf(stderr,"\n"); + return EXIT_SUCCESS; + } +- +-int killchildren() +-{ int i; +- i=NR_of_forks; +- do +- if(child[--i]>0) +- kill(child[i],SIGTERM),child[i]=0; +- while(i); +- return 0; +-} +- +-int sfdlock(fd) +-{ int i;unsigned gobble[GOBBLE>>2]; +- for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ +- return fdlock(fd); +-} +- +-static oldfdlock; +-#ifdef F_SETLKW +-static struct flock flck; /* why can't it be a local variable? */ +-#endif +-#ifdef F_LOCK +-static off_t oldlockoffset; +-#endif +- +-int fdlock(fd) +-{ int i;unsigned gobble[GOBBLE>>2]; +- for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ +- oldfdlock=fd;fd=0; +- if(MSK_fcntl&dolock) +-#ifdef F_SETLKW +- { static unsigned extra; +- flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock); +- if(!extra--) +- extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck); +- flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck); +- } +-#else +- fd=1; +-#endif +- if(MSK_lockf&dolock) +-#ifdef F_LOCK +- oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0); +-#else +- fd=1; +-#endif +- if(MSK_flock&dolock) +-#ifdef LOCK_EX +- fd|=flock(oldfdlock,LOCK_EX); +-#else +- fd=1; +-#endif +- return fd; +-} +- +-int fdunlock() +-{ int i;unsigned gobble[GOBBLE]; +- for(i=GOBBLE;i;gobble[--i]=~(unsigned)0); /* some SunOS libs mess this up */ +- if(MSK_flock&dolock) +-#ifdef LOCK_EX +- i|=flock(oldfdlock,LOCK_UN); +-#else +- i=1; +-#endif +- if(MSK_lockf&dolock) +-#ifdef F_LOCK +- { lseek(oldfdlock,oldlockoffset,SEEK_SET); +- i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0); +- } +-#else +- i=1; +-#endif +- if(MSK_fcntl&dolock) +-#ifdef F_SETLKW +- flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck); +-#else +- i=1; +-#endif +- if(!i) +- for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;); +- return i; +-} + HERE + + if $MAKE _autotst >_autotst.rrr 2>&1 +@@ -1033,6 +1034,10 @@ cat >_autotst.c <<HERE + #ifndef NO_COMSAT + #include "network.h" + #endif ++#include <string.h> ++#include <unistd.h> ++int setrgid(); ++int setresgid(); + int main(){char a[2]; + endpwent();endgrent();memmove(a,"0",1);bcopy("0",a,1);strcspn(a,"0"); + strtol("0",(char**)0,10);strchr("0",'0');strpbrk(a,"0");rename(a,"0"); +@@ -1059,7 +1064,7 @@ echo 'Testing for memmove, strchr, strpbrk, strcspn, strtol, strstr,' + echo ' rename, setrgid, setegid, pow, opendir, mkdir, waitpid, fsync,' + echo ' ftruncate, strtod, strncasecmp, strerror, strlcat,' + echo ' memset, bzero, and _exit' +-if $MAKE _autotst.$O >$DEVNULL 2>&1 ++if $MAKE _autotst.$O >_autotst.rrr 2>&1 + then + : + else diff --git a/mail-filter/procmail/procmail-3.24-r1.ebuild b/mail-filter/procmail/procmail-3.24-r1.ebuild new file mode 100644 index 000000000000..07ee45bb8869 --- /dev/null +++ b/mail-filter/procmail/procmail-3.24-r1.ebuild @@ -0,0 +1,119 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs prefix + +DESCRIPTION="Mail delivery agent/filter" +HOMEPAGE="https://www.procmail.org/" +SRC_URI="https://github.com/BuGlessRB/procmail/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz" + +LICENSE="|| ( Artistic GPL-2 )" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="mbox selinux" + +DEPEND=" + acct-group/mail + virtual/mta +" +RDEPEND=" + ${DEPEND} + selinux? ( sec-policy/selinux-procmail ) +" + +src_prepare() { + # disable flock, using both fcntl and flock style locking + # doesn't work with NFS with 2.6.17+ kernels, bug #156493 + + sed -e "s|/\*#define NO_flock_LOCK|#define NO_flock_LOCK|" \ + -i config.h || die "sed failed" + + eapply "${FILESDIR}/${P}-modern-c.patch" + + if ! use mbox ; then + echo "# Use maildir-style mailbox in user's home directory" > "${S}"/procmailrc || die + echo 'DEFAULT=$HOME/.maildir/' >> "${S}"/procmailrc || die + cd "${S}" || die + eapply "${FILESDIR}/${P}-maildir.patch" + else + echo '# Use mbox-style mailbox in /var/spool/mail' > "${S}"/procmailrc || die + echo 'DEFAULT=${EPREFIX}/var/spool/mail/$LOGNAME' >> "${S}"/procmailrc || die + fi + + # Do not use lazy bindings on lockfile and procmail + if [[ ${CHOST} != *-darwin* ]]; then + eapply "${FILESDIR}/${P}-lazy-bindings.patch" + fi + + # Prefixify config.h + eapply "${FILESDIR}/${P}-gentoo-prefix.patch" + eprefixify config.h Makefile src/autoconf src/recommend.c + + default +} + +src_compile() { + # bug #875251, bug #896052 + append-flags -std=gnu89 + # bug #859517 + filter-lto + + # -finline-functions (implied by -O3) leaves strstr() in an infinite loop. + # To work around this, we append -fno-inline-functions to CFLAGS + # Since GCC 4.7 we also need -fno-ipa-cp-clone (bug #466552) + # If it's clang, ignore -fno-ipa-cp-clone, as clang doesn't support this + append-flags -fno-inline-functions + tc-is-clang || append-flags -fno-ipa-cp-clone + + sed -e "s|CFLAGS0 = -O|CFLAGS0 = ${CFLAGS}|" \ + -e "s|LDFLAGS0= -s|LDFLAGS0 = ${LDFLAGS}|" \ + -e "s|LOCKINGTEST=__defaults__|#LOCKINGTEST=__defaults__|" \ + -e "s|#LOCKINGTEST=/tmp|LOCKINGTEST=/tmp|" \ + -i Makefile || die "sed failed" + + emake CC="$(tc-getCC)" +} + +src_install() { + cd "${S}"/new || die + insinto /usr/bin + insopts -m 6755 + doins procmail + + doins lockfile + fowners root:mail /usr/bin/lockfile + fperms 2755 /usr/bin/lockfile + + dobin formail mailstat + insopts -m 0644 + + doman *.1 *.5 + + cd "${S}" || die + dodoc FAQ FEATURES HISTORY INSTALL KNOWN_BUGS README + + insinto /etc + doins procmailrc + + docinto examples + dodoc examples/* +} + +pkg_postinst() { + if ! use mbox ; then + elog "Starting with mail-filter/procmail-3.22-r9 you'll need to ensure" + elog "that you configure a mail storage location using DEFAULT in" + elog "/etc/procmailrc, for example:" + elog "\tDEFAULT=\$HOME/.maildir/" + fi + if has sfperms ${FEATURES}; then + ewarn "FEATURES=sfperms removes the read-bit for others from" + ewarn " /usr/bin/procmail" + ewarn " /usr/bin/lockfile" + ewarn "If you use procmail from an MTA like Exim, you need to" + ewarn "re-add the read-bit or avoid the MTA checking the binary" + ewarn "exists." + fi +} |