commit:     631b045c07527ab0ca4d4d585c56faa3855187fe
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat May  9 09:57:23 2020 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat May  9 09:57:38 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=631b045c

mail-mta/exim-4.93.0.4: fix compilation with certain USE-combinations

- 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 <AT> gentoo.org>

 mail-mta/exim/exim-4.93.0.4.ebuild                 |  8 ++-
 .../exim/files/exim-4.93-localscan_dlopen.patch    |  4 +-
 mail-mta/exim/files/exim-4.93-radius.patch         | 66 ++++++++++++++++++++++
 3 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/mail-mta/exim/exim-4.93.0.4.ebuild 
b/mail-mta/exim/exim-4.93.0.4.ebuild
index a7ac64a9ffb..6e787039465 100644
--- a/mail-mta/exim/exim-4.93.0.4.ebuild
+++ b/mail-mta/exim/exim-4.93.0.4.ebuild
@@ -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

diff --git a/mail-mta/exim/files/exim-4.93-localscan_dlopen.patch 
b/mail-mta/exim/files/exim-4.93-localscan_dlopen.patch
index d2a5e63128a..0d016dbeb26 100644
--- a/mail-mta/exim/files/exim-4.93-localscan_dlopen.patch
+++ b/mail-mta/exim/files/exim-4.93-localscan_dlopen.patch
@@ -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
index 00000000000..55c52bee561
--- /dev/null
+++ b/mail-mta/exim/files/exim-4.93-radius.patch
@@ -0,0 +1,66 @@
+From 70b28b113e21d21a528876c3abe88ccb5f7cc77d Mon Sep 17 00:00:00 2001
+From: Fabian Groffen <[email protected]>
+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 <[email protected]>
+---
+ 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 */
+ 

Reply via email to