Mon Jan 12 18:59:24 2009 UTC ()
Update exim to 4.69nb4
- Add support for getifaddrs() and enable on NetBSD - submitted back to
  exim bugzilla as http://bugs.exim.org/show_bug.cgi?id=802
- Increase size of addrbuf[512] used in old style ioctl() version of
  os_common_find_running_interfaces()
Fixes issue on NetBSD 5.0


(abs)
diff -r1.93 -r1.94 pkgsrc/mail/exim/Makefile
diff -r1.39 -r1.40 pkgsrc/mail/exim/distinfo
diff -r0 -r1.12 pkgsrc/mail/exim/patches/patch-ac
diff -r0 -r1.11 pkgsrc/mail/exim/patches/patch-ad

cvs diff -r1.93 -r1.94 pkgsrc/mail/exim/Makefile (switch to unified diff)

--- pkgsrc/mail/exim/Makefile 2008/11/10 17:21:36 1.93
+++ pkgsrc/mail/exim/Makefile 2009/01/12 18:59:24 1.94
@@ -1,115 +1,115 @@ @@ -1,115 +1,115 @@
1# $NetBSD: Makefile,v 1.93 2008/11/10 17:21:36 wiz Exp $ 1# $NetBSD: Makefile,v 1.94 2009/01/12 18:59:24 abs Exp $
2 2
3DISTNAME= exim-4.69 3DISTNAME= exim-4.69
4PKGREVISION= 3 4PKGREVISION= 4
5CATEGORIES= mail net 5CATEGORIES= mail net
6MASTER_SITES= ftp://ftp.exim.org/pub/exim/exim4/ \ 6MASTER_SITES= ftp://ftp.exim.org/pub/exim/exim4/ \
7 ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim4/ \ 7 ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim4/ \
8 ftp://ftp.esat.net/pub/networking/mail/mta/exim/exim4/ 8 ftp://ftp.esat.net/pub/networking/mail/mta/exim/exim4/
9EXTRACT_SUFX= .tar.bz2 9EXTRACT_SUFX= .tar.bz2
10 10
11MAINTAINER= abs@NetBSD.org 11MAINTAINER= abs@NetBSD.org
12HOMEPAGE= http://www.exim.org/ 12HOMEPAGE= http://www.exim.org/
13COMMENT= The Exim mail transfer agent, a replacement for sendmail 13COMMENT= The Exim mail transfer agent, a replacement for sendmail
14 14
15CONFLICTS+= exim-exiscan-[0-9]* 15CONFLICTS+= exim-exiscan-[0-9]*
16 16
17USE_TOOLS+= perl:run 17USE_TOOLS+= perl:run
18INSTALLATION_DIRS+= ${PKGMANDIR}/man8 18INSTALLATION_DIRS+= ${PKGMANDIR}/man8
19BUILD_DEFS+= VARBASE 19BUILD_DEFS+= VARBASE
20 20
21MAKE_ENV+= SSLBASE=${SSLBASE:Q} 21MAKE_ENV+= SSLBASE=${SSLBASE:Q}
22MAKE_ENV+= INST_CHOWN=${CHOWN:Q} 22MAKE_ENV+= INST_CHOWN=${CHOWN:Q}
23MAKE_FLAGS+= FULLECHO='' 23MAKE_FLAGS+= FULLECHO=''
24MAKE_JOBS_SAFE= no 24MAKE_JOBS_SAFE= no
25 25
26.include "../../mk/bsd.prefs.mk" 26.include "../../mk/bsd.prefs.mk"
27 27
28BUILD_DEFS+= EXIM_DB EXIM_MAX_INCLUDE_SIZE 28BUILD_DEFS+= EXIM_DB EXIM_MAX_INCLUDE_SIZE
29 29
30PKG_GROUPS= ${EXIM_GROUP} 30PKG_GROUPS= ${EXIM_GROUP}
31PKG_USERS= ${EXIM_USER}:${EXIM_GROUP} 31PKG_USERS= ${EXIM_USER}:${EXIM_GROUP}
32 32
33PKG_GROUPS_VARS+= EXIM_GROUP 33PKG_GROUPS_VARS+= EXIM_GROUP
34PKG_USERS_VARS+= EXIM_USER 34PKG_USERS_VARS+= EXIM_USER
35 35
36PKG_GECOS.${EXIM_USER}= Exim mail server user 36PKG_GECOS.${EXIM_USER}= Exim mail server user
37PKG_HOME.${EXIM_USER}= ${VARBASE}/mail 37PKG_HOME.${EXIM_USER}= ${VARBASE}/mail
38PKG_SHELL.${EXIM_USER}= ${NOLOGIN} 38PKG_SHELL.${EXIM_USER}= ${NOLOGIN}
39 39
40PKG_SYSCONFSUBDIR?= exim 40PKG_SYSCONFSUBDIR?= exim
41EXAMPLESDIR= ${PREFIX}/share/examples/exim 41EXAMPLESDIR= ${PREFIX}/share/examples/exim
42CONF_FILES= ${EXAMPLESDIR}/aliases ${PKG_SYSCONFDIR}/aliases 42CONF_FILES= ${EXAMPLESDIR}/aliases ${PKG_SYSCONFDIR}/aliases
43CONF_FILES+= ${EXAMPLESDIR}/configure ${PKG_SYSCONFDIR}/configure 43CONF_FILES+= ${EXAMPLESDIR}/configure ${PKG_SYSCONFDIR}/configure
44MESSAGE_SUBST+= EXAMPLESDIR="${EXAMPLESDIR}" 44MESSAGE_SUBST+= EXAMPLESDIR="${EXAMPLESDIR}"
45PLIST_SUBST+= DISTNAME=${DISTNAME} 45PLIST_SUBST+= DISTNAME=${DISTNAME}
46 46
47RCD_SCRIPTS= exim 47RCD_SCRIPTS= exim
48 48
49OWN_DIRS_PERMS= ${VARBASE}/log/exim ${EXIM_USER} ${EXIM_GROUP} 0750 49OWN_DIRS_PERMS= ${VARBASE}/log/exim ${EXIM_USER} ${EXIM_GROUP} 0750
50OWN_DIRS_PERMS+= ${VARBASE}/spool/exim ${EXIM_USER} ${EXIM_GROUP} 0750 50OWN_DIRS_PERMS+= ${VARBASE}/spool/exim ${EXIM_USER} ${EXIM_GROUP} 0750
51 51
52# XXX: The following will be handled by buildlink3 at some point. 52# XXX: The following will be handled by buildlink3 at some point.
53CFLAGS+= ${_STRIPFLAG_CC} 53CFLAGS+= ${_STRIPFLAG_CC}
54 54
55# pay attention to CPPFLAGS as well 55# pay attention to CPPFLAGS as well
56CFLAGS+= ${CPPFLAGS} 56CFLAGS+= ${CPPFLAGS}
57 57
58.include "options.mk" 58.include "options.mk"
59 59
60# BDB_TYPE gets set to "db1" if USE_DB185=="yes" 60# BDB_TYPE gets set to "db1" if USE_DB185=="yes"
61USE_DB185?= no 61USE_DB185?= no
62BDB_ACCEPTED?= db1 db2 db3 db4 62BDB_ACCEPTED?= db1 db2 db3 db4
63 63
64post-extract: 64post-extract:
65 mkdir ${WRKSRC}/Local 65 mkdir ${WRKSRC}/Local
66 cp ${WRKSRC}/src/EDITME ${WRKSRC}/Local/Makefile.pkgsrc 66 cp ${WRKSRC}/src/EDITME ${WRKSRC}/Local/Makefile.pkgsrc
67 cp ${WRKSRC}/exim_monitor/EDITME ${WRKSRC}/Local/eximon.conf.pkgsrc 67 cp ${WRKSRC}/exim_monitor/EDITME ${WRKSRC}/Local/eximon.conf.pkgsrc
68 cp ${FILESDIR}/Makefile-DragonFly ${FILESDIR}/os.h-DragonFly \ 68 cp ${FILESDIR}/Makefile-DragonFly ${FILESDIR}/os.h-DragonFly \
69 ${WRKSRC}/OS/ 69 ${WRKSRC}/OS/
70 70
71pre-configure: 71pre-configure:
72 sed -e 's:@PREFIX@:${PREFIX}:' \ 72 sed -e 's:@PREFIX@:${PREFIX}:' \
73 -e 's:@PKG_SYSCONFDIR@:${PKG_SYSCONFDIR}:' \ 73 -e 's:@PKG_SYSCONFDIR@:${PKG_SYSCONFDIR}:' \
74 -e 's:@EXIM_USER@:${EXIM_USER}:' \ 74 -e 's:@EXIM_USER@:${EXIM_USER}:' \
75 -e 's:@EXIM_GROUP@:${EXIM_GROUP}:' \ 75 -e 's:@EXIM_GROUP@:${EXIM_GROUP}:' \
76 -e 's:@EXIM_USE_DB_CONFIG@:${EXIM_USE_DB_CONFIG}:' \ 76 -e 's:@EXIM_USE_DB_CONFIG@:${EXIM_USE_DB_CONFIG}:' \
77 -e 's:@EXIM_DBMLIB@:${EXIM_DBMLIB}:' \ 77 -e 's:@EXIM_DBMLIB@:${EXIM_DBMLIB}:' \
78 -e 's:@EXIM_INCLUDE@:${EXIM_INCLUDE}:' \ 78 -e 's:@EXIM_INCLUDE@:${EXIM_INCLUDE}:' \
79 -e 's:@LOOKUP_LIBS@:${LOOKUP_LIBS}:' \ 79 -e 's:@LOOKUP_LIBS@:${LOOKUP_LIBS}:' \
80 -e 's:@CHOWN@:${CHOWN}:' \ 80 -e 's:@CHOWN@:${CHOWN}:' \
81 -e 's:@CHGRP@:${CHGRP}:' \ 81 -e 's:@CHGRP@:${CHGRP}:' \
82 -e 's:@MV@:${MV}:' \ 82 -e 's:@MV@:${MV}:' \
83 -e 's:@RM@:${RM}:' \ 83 -e 's:@RM@:${RM}:' \
84 -e 's:@PERL5@:${PERL5}:' \ 84 -e 's:@PERL5@:${PERL5}:' \
85 -e 's:@VARBASE@:${VARBASE}:' \ 85 -e 's:@VARBASE@:${VARBASE}:' \
86 < ${WRKSRC}/Local/Makefile.pkgsrc \ 86 < ${WRKSRC}/Local/Makefile.pkgsrc \
87 > ${WRKSRC}/Local/Makefile 87 > ${WRKSRC}/Local/Makefile
88.for opt in ${LOCAL_MAKEFILE_OPTIONS} 88.for opt in ${LOCAL_MAKEFILE_OPTIONS}
89 ${ECHO} ${opt} >> ${WRKSRC}/Local/Makefile 89 ${ECHO} ${opt} >> ${WRKSRC}/Local/Makefile
90.endfor 90.endfor
91.if !empty(EXIM_MAX_INCLUDE_SIZE) 91.if !empty(EXIM_MAX_INCLUDE_SIZE)
92 ${ECHO} MAX_INCLUDE_SIZE=${EXIM_MAX_INCLUDE_SIZE} >> ${WRKSRC}/Local/Makefile 92 ${ECHO} MAX_INCLUDE_SIZE=${EXIM_MAX_INCLUDE_SIZE} >> ${WRKSRC}/Local/Makefile
93.endif 93.endif
94 sed -e 's:@PREFIX@:${PREFIX}:' \ 94 sed -e 's:@PREFIX@:${PREFIX}:' \
95 -e 's:@PKG_SYSCONFDIR@:${PKG_SYSCONFDIR}:' \ 95 -e 's:@PKG_SYSCONFDIR@:${PKG_SYSCONFDIR}:' \
96 < ${WRKSRC}/Local/eximon.conf.pkgsrc \ 96 < ${WRKSRC}/Local/eximon.conf.pkgsrc \
97 > ${WRKSRC}/Local/eximon.conf 97 > ${WRKSRC}/Local/eximon.conf
98# CFLAGS is already set by pkgsrc 98# CFLAGS is already set by pkgsrc
99 for f in ${WRKSRC}/OS/Makefile-*; do \ 99 for f in ${WRKSRC}/OS/Makefile-*; do \
100 sed -e 's/^CFLAGS=.*//' $$f > $$f.subst; \ 100 sed -e 's/^CFLAGS=.*//' $$f > $$f.subst; \
101 mv -f $$f.subst $$f; \ 101 mv -f $$f.subst $$f; \
102 done 102 done
103 103
104post-build: 104post-build:
105 sed -e 's:@PREFIX@:${PREFIX}:' \ 105 sed -e 's:@PREFIX@:${PREFIX}:' \
106 ${FILESDIR}/mailer.conf.exim \ 106 ${FILESDIR}/mailer.conf.exim \
107 > ${WRKDIR}/mailer.conf 107 > ${WRKDIR}/mailer.conf
108 108
109post-install: 109post-install:
110 ${INSTALL_DATA_DIR} ${EXAMPLESDIR} 110 ${INSTALL_DATA_DIR} ${EXAMPLESDIR}
111 ${INSTALL_DATA} ${WRKDIR}/mailer.conf ${EXAMPLESDIR} 111 ${INSTALL_DATA} ${WRKDIR}/mailer.conf ${EXAMPLESDIR}
112 ${INSTALL_DATA} ${WRKSRC}/doc/exim.8 ${PREFIX}/${PKGMANDIR}/man8/exim.8 112 ${INSTALL_DATA} ${WRKSRC}/doc/exim.8 ${PREFIX}/${PKGMANDIR}/man8/exim.8
113 113
114.include "../../converters/libiconv/buildlink3.mk" 114.include "../../converters/libiconv/buildlink3.mk"
115.include "../../mk/bsd.pkg.mk" 115.include "../../mk/bsd.pkg.mk"

cvs diff -r1.39 -r1.40 pkgsrc/mail/exim/distinfo (switch to unified diff)

--- pkgsrc/mail/exim/distinfo 2008/01/14 18:57:39 1.39
+++ pkgsrc/mail/exim/distinfo 2009/01/12 18:59:24 1.40
@@ -1,9 +1,11 @@ @@ -1,9 +1,11 @@
1$NetBSD: distinfo,v 1.39 2008/01/14 18:57:39 adam Exp $ 1$NetBSD: distinfo,v 1.40 2009/01/12 18:59:24 abs Exp $
2 2
3SHA1 (exim-4.69.tar.bz2) = 321e238b6e6b32498110511ce72a911538305a39 3SHA1 (exim-4.69.tar.bz2) = 321e238b6e6b32498110511ce72a911538305a39
4RMD160 (exim-4.69.tar.bz2) = ae97c807c63f858ba4a0ab402677225da9337d05 4RMD160 (exim-4.69.tar.bz2) = ae97c807c63f858ba4a0ab402677225da9337d05
5Size (exim-4.69.tar.bz2) = 1658939 bytes 5Size (exim-4.69.tar.bz2) = 1658939 bytes
6SHA1 (patch-aa) = 93dca43408fb837deb95d2b22502c64559780f7c 6SHA1 (patch-aa) = 93dca43408fb837deb95d2b22502c64559780f7c
7SHA1 (patch-ab) = 1c6e7882346974390c22e7b9e09a76c5ed670d1d 7SHA1 (patch-ab) = 1c6e7882346974390c22e7b9e09a76c5ed670d1d
 8SHA1 (patch-ac) = de96032a9cf5450101cc73d615d374ddf6817fee
 9SHA1 (patch-ad) = 804ab58f454f7e100c117f2cec9cf478375c1752
8SHA1 (patch-ae) = 6cb0f00d159de7c342a55b09fb87ab533c5670bf 10SHA1 (patch-ae) = 6cb0f00d159de7c342a55b09fb87ab533c5670bf
9SHA1 (patch-ag) = 8512795060ad913f4699c277867fd24e7a785519 11SHA1 (patch-ag) = 8512795060ad913f4699c277867fd24e7a785519

File Added: pkgsrc/mail/exim/patches/Attic/patch-ac
$NetBSD: patch-ac,v 1.12 2009/01/12 18:59:24 abs Exp $

--- src/os.c.orig	2007-01-08 10:50:18.000000000 +0000
+++ src/os.c
@@ -463,6 +463,75 @@ calls the common function; on Linux it c
 This function finds the addresses of all the running interfaces on the machine.
 A chain of blocks containing the textual form of the addresses is returned.
 
+getifaddrs() provides a sane consistent way to query this on modern OSs,
+otherwise fall back to a maze of twisty ioctl() calls
+
+Arguments:    none
+Returns:      a chain of ip_address_items, each pointing to a textual
+              version of an IP address, with the port field set to zero
+*/
+
+
+#ifndef NO_FIND_INTERFACES
+
+#ifdef HAVE_GETIFADDRS
+
+#include <ifaddrs.h>
+
+ip_address_item *
+os_common_find_running_interfaces(void)
+{
+struct ifaddrs *ifalist = NULL;
+ip_address_item *yield = NULL;
+ip_address_item *last = NULL;
+ip_address_item  *next;
+
+if (getifaddrs(&ifalist) != 0)
+  log_write(0, LOG_PANIC_DIE, "Unable to call getifaddrs: %d %s",
+    errno, strerror(errno));
+
+struct ifaddrs *ifa;
+for (ifa = ifalist; ifa != NULL; ifa = ifa->ifa_next)
+  {
+  if (ifa->ifa_addr->sa_family != AF_INET
+#if HAVE_IPV6
+    && ifa->ifa_addr->sa_family != AF_INET6
+#endif /* HAVE_IPV6 */
+    )
+    continue;
+
+  if ( !(ifa->ifa_flags & IFF_UP) ) /* Only want 'UP' interfaces */
+    continue;
+
+  /* Create a data block for the address, fill in the data, and put it on the
+  chain. */
+
+  next = store_get(sizeof(ip_address_item));
+  next->next = NULL;
+  next->port = 0;
+  (void)host_ntoa(-1, ifa->ifa_addr, next->address, NULL);
+
+  if (yield == NULL)
+    yield = last = next;
+  else
+    {
+    last->next = next;
+    last = next;
+    }
+
+  DEBUG(D_interface) debug_printf("Actual local interface address is %s (%s)\n",
+    last->address, ifa->ifa_name);
+  }
+
+/* free the list of addresses, and return the chain of data blocks. */
+
+freeifaddrs (ifalist);
+return yield;
+}
+
+#else /* HAVE_GETIFADDRS */
+
+/*
 Problems:
 
   (1) Solaris 2 has the SIOGIFNUM call to get the number of interfaces, but
@@ -486,15 +555,8 @@ Problems:
   the former, calling the latter does no harm, but it causes grief on Linux and
   BSD systems in the case of IP aliasing, so a means of cutting it out is
   provided.
-
-Arguments:    none
-Returns:      a chain of ip_address_items, each pointing to a textual
-              version of an IP address, with the port field set to zero
 */
 
-
-#ifndef NO_FIND_INTERFACES
-
 /* If there is IPv6 support, and SIOCGLIFCONF is defined, define macros to
 use these new, longer versions of the old IPv4 interfaces. Otherwise, define
 the macros to use the historical versions. */
@@ -556,7 +618,7 @@ char *cp;
 char buf[MAX_INTERFACES*sizeof(struct V_ifreq)];
 struct sockaddr *addrp;
 size_t len = 0;
-char addrbuf[256];
+char addrbuf[512];
 
 /* We have to create a socket in order to do ioctls on it to find out
 what we want to know. */
@@ -701,6 +763,8 @@ for (cp = buf; cp < buf + ifc.V_ifc_len;
 return yield;
 }
 
+#endif /* HAVE_GETIFADDRS */
+
 #else  /* NO_FIND_INTERFACES */
 
 /* Some experimental or developing OS (e.g. GNU/Hurd) do not have the ioctls,

File Added: pkgsrc/mail/exim/patches/Attic/patch-ad
$NetBSD: patch-ad,v 1.11 2009/01/12 18:59:24 abs Exp $

--- OS/os.h-NetBSD.orig	2007-06-27 09:46:28.000000000 +0100
+++ OS/os.h-NetBSD
@@ -3,6 +3,7 @@
 /* Exim: OS-specific C header file for NetBSD */
 
 #define HAVE_BSD_GETLOADAVG
+#define HAVE_GETIFADDRS
 #define HAVE_MMAP
 #define HAVE_SYS_MOUNT_H
 #define SIOCGIFCONF_GIVES_ADDR