mail-mta/exim-4.93.0.4: fix compilation with certain USE-combinations
authorFabian Groffen <grobian@gentoo.org>
Sat, 9 May 2020 09:57:23 +0000 (11:57 +0200)
committerFabian Groffen <grobian@gentoo.org>
Sat, 9 May 2020 09:57:38 +0000 (11:57 +0200)
- fix localscan compilation
- fix nis compilation
- refine DB includes to lookup only
- fix radius compilation

Closes: https://bugs.gentoo.org/720364
Closes: https://bugs.gentoo.org/720362
Package-Manager: Portage-2.3.89, Repoman-2.3.20
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
mail-mta/exim/exim-4.93.0.4.ebuild
mail-mta/exim/files/exim-4.93-localscan_dlopen.patch
mail-mta/exim/files/exim-4.93-radius.patch [new file with mode: 0644]

index a7ac64a9ffb4d2e1d153bb4b0357e4c6a3e98780..6e7870394653abc9a161f324d1cf1e45118b27a1 100644 (file)
@@ -114,6 +114,7 @@ src_prepare() {
        eapply -p0 "${FILESDIR}"/exim-4.76-crosscompile.patch # 266591
        eapply     "${FILESDIR}"/exim-4.69-r1.27021.patch
        eapply     "${FILESDIR}"/exim-4.93-localscan_dlopen.patch
+       eapply -p2 "${FILESDIR}"/exim-4.93-radius.patch # 720364
 
        if use maildir ; then
                eapply "${FILESDIR}"/exim-4.20-maildir.patch
@@ -219,11 +220,11 @@ src_configure() {
        local DB_VERS="5.3 5.1 4.8 4.7 4.6 4.5 4.4 4.3 4.2 3.2"
        cat >> Makefile <<- EOC
                USE_DB=yes
-               CFLAGS+=-I$(db_includedir ${DB_VERS})
-               DBMLIB=-l$(db_libname ${DB_VERS})
                LOOKUP_CDB=yes
                LOOKUP_PASSWD=yes
                LOOKUP_DSEARCH=yes
+               LOOKUP_INCLUDE += -I$(db_includedir ${DB_VERS})
+               DBMLIB = -l$(db_libname ${DB_VERS})
        EOC
 
        if ! use dnsdb; then
@@ -255,7 +256,8 @@ src_configure() {
                EOC
                if use elibc_glibc ; then
                        cat >> Makefile <<- EOC
-                               CFLAGS += -I"${EPREFIX}"/usr/include/tirpc
+                               LOOKUP_INCLUDE += -I"${EPREFIX}"/usr/include/tirpc
+                               LOOKUP_LIBS += -lnsl
                        EOC
                fi
        fi
index d2a5e63128aa3ca85626fa41c3e8d97382d7d80d..0d016dbeb26d893738828aad5031d387935818c4 100644 (file)
@@ -72,7 +72,7 @@ Only in exim-4.92/src: globals.h.orig
 diff -ur exim-4.92.orig/src/local_scan.c exim-4.92/src/local_scan.c
 --- exim-4.92.orig/src/local_scan.c    2019-01-30 14:59:52.000000000 +0100
 +++ exim-4.92/src/local_scan.c 2019-02-16 18:29:56.832732592 +0100
-@@ -5,61 +5,131 @@
+@@ -5,61 +5,133 @@
  /* Copyright (c) University of Cambridge 1995 - 2009 */
  /* See the file NOTICE for conditions of use and distribution. */
  
@@ -126,9 +126,11 @@ diff -ur exim-4.92.orig/src/local_scan.c exim-4.92/src/local_scan.c
 -                   is used in the rejection message.
 -*/
 +#ifdef DLOPEN_LOCAL_SCAN
++#include <stdlib.h>
 +#include <dlfcn.h>
 +static int (*local_scan_fn)(int fd, uschar **return_text) = NULL;
 +static int load_local_scan_library(void);
++extern uschar *local_scan_path;        /* Path to local_scan() library */
 +#endif
  
  int
diff --git a/mail-mta/exim/files/exim-4.93-radius.patch b/mail-mta/exim/files/exim-4.93-radius.patch
new file mode 100644 (file)
index 0000000..55c52be
--- /dev/null
@@ -0,0 +1,66 @@
+From 70b28b113e21d21a528876c3abe88ccb5f7cc77d Mon Sep 17 00:00:00 2001
+From: Fabian Groffen <grobian@gentoo.org>
+Date: Sat, 9 May 2020 11:35:12 +0200
+Subject: [PATCH] call_radius: fix compilation due to incorrect usage of
+ string_sprintf
+
+Since f3ebb786e451da973560f1c9d8cdb151d25108b5, string_sprintf cannot be
+used without arguments any more, so use US directly.
+
+While at it, also make newline usage consistent to not return a newline
+in errptr, when it is debug-printed, a newline is added.
+
+https://bugs.gentoo.org/720364
+
+Signed-off-by: Fabian Groffen <grobian@gentoo.org>
+---
+ src/src/auths/call_radius.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/src/auths/call_radius.c b/src/src/auths/call_radius.c
+index c3637436d..253fd75cd 100644
+--- a/src/src/auths/call_radius.c
++++ b/src/src/auths/call_radius.c
+@@ -115,16 +115,16 @@ if (rc_read_config(RADIUS_CONFIG_FILE) != 0)
+   *errptr = string_sprintf("RADIUS: can't open %s", RADIUS_CONFIG_FILE);
+ else if (rc_read_dictionary(rc_conf_str("dictionary")) != 0)
+-  *errptr = string_sprintf("RADIUS: can't read dictionary");
++  *errptr = US("RADIUS: can't read dictionary");
+ else if (rc_avpair_add(&send, PW_USER_NAME, user, 0) == NULL)
+-  *errptr = string_sprintf("RADIUS: add user name failed\n");
++  *errptr = US("RADIUS: add user name failed");
+ else if (rc_avpair_add(&send, PW_USER_PASSWORD, CS radius_args, 0) == NULL)
+-  *errptr = string_sprintf("RADIUS: add password failed\n");
++  *errptr = US("RADIUS: add password failed");
+ else if (rc_avpair_add(&send, PW_SERVICE_TYPE, &service, 0) == NULL)
+-  *errptr = string_sprintf("RADIUS: add service type failed\n");
++  *errptr = US("RADIUS: add service type failed");
+ #else  /* RADIUS_LIB_RADIUSCLIENT unset => RADIUS_LIB_RADIUSCLIENT2 */
+@@ -132,17 +132,17 @@ if ((h = rc_read_config(RADIUS_CONFIG_FILE)) == NULL)
+   *errptr = string_sprintf("RADIUS: can't open %s", RADIUS_CONFIG_FILE);
+ else if (rc_read_dictionary(h, rc_conf_str(h, "dictionary")) != 0)
+-  *errptr = string_sprintf("RADIUS: can't read dictionary");
++  *errptr = US("RADIUS: can't read dictionary");
+ else if (rc_avpair_add(h, &send, PW_USER_NAME, user, Ustrlen(user), 0) == NULL)
+-  *errptr = string_sprintf("RADIUS: add user name failed\n");
++  *errptr = US("RADIUS: add user name failed");
+ else if (rc_avpair_add(h, &send, PW_USER_PASSWORD, CS radius_args,
+     Ustrlen(radius_args), 0) == NULL)
+-  *errptr = string_sprintf("RADIUS: add password failed\n");
++  *errptr = US("RADIUS: add password failed");
+ else if (rc_avpair_add(h, &send, PW_SERVICE_TYPE, &service, 0, 0) == NULL)
+-  *errptr = string_sprintf("RADIUS: add service type failed\n");
++  *errptr = US("RADIUS: add service type failed");
+ #endif  /* RADIUS_LIB_RADIUSCLIENT */