packages/mail/exim/Makefile
Daniel Golle 5b1511daf1
exim: update to version 4.96
Exim version 4.96
-----------------

JH/01 Move the wait-for-next-tick (needed for unique message IDs) from
      after reception to before a subsequent reception.  This should
      mean slightly faster delivery, and also confirmation of reception
      to senders.

JH/02 Move from using the pcre library to pcre2.  The former is no longer
      being developed or supported (by the original developer).

JH/03 Constification work in the filters module required a major version
      bump for the local-scan API.  Specifically, the "headers_charset"
      global which is visible via the API is now const and may therefore
      not be modified by local-scan code.

JH/04 Fix ClamAV TCP use under FreeBSD. Previously the OS-specific shim for
      sendfile() didi not account for the way the ClamAV driver code called it.

JH/05 Bug 2819: speed up command-line messages being read in.  Previously a
      time check was being done for every character; replace that with one
      per buffer.

JH/06 Bug 2815: Fix ALPN sent by server under OpenSSL.  Previously the string
      sent was prefixed with a length byte.

JH/07 Change the SMTP feature name for pipelining connect to be compliant with
      RFC 5321.  Previously Dovecot (at least) would log errors during
      submission.

JH/08 Remove stripping of the binaries from the FreeBSD build.  This was added
      in 4.61 without a reason logged. Binaries will be bigger, which might
      matter on diskspace-constrained systems, but debug is easier.

JH/09 Fix macro-definition during "-be" expansion testing.  The move to
      write-protected store for macros had not accounted for these runtime
      additions; fix by removing this protection for "-be" mode.

JH/10 Convert all uses of select() to poll().  FreeBSD 12.2 was found to be
      handing out large-numbered file descriptors, violating the usual Unix
      assumption (and required by Posix) that the lowest possible number will be
      allocated by the kernel when a new one is needed.  In the daemon, and any
      child procesees, values higher than 1024 (being bigger than FD_SETSIZE)
      are not useable for FD_SET() [and hence select()] and overwrite the stack.
      Assorted crashes happen.

JH/11 Fix use of $sender_host_name in daemon process.  When used in certain
      main-section options or in a connect ACL, the value from the first ever
      connection was never replaced for subsequent connections.  Found by
      Wakko Warner.

JH/12 Bug 2838: Fix for i32lp64 hard-align platforms. Found for SPARC Linux,
      though only once PCRE2 was introduced: the memory accounting used under
      debug offset allocations by an int, giving a hard trap in early startup.
      Change to using a size_t.  Debug and fix by John Paul Adrian Glaubitz.

JH/13 Bug 2845: Fix handling of tls_require_ciphers for OpenSSL when a value
      with underbars is given.  The write-protection of configuration introduced
      in 4.95 trapped when normalisation was applied to an option not needing
      expansion action.

JH/14 Bug 1895: TLS: Deprecate RFC 5114 Diffie-Hellman parameters.

JH/15 Fix a resource leak in *BSD.  An off-by-one error resulted in the daemon
      failing to close the certificates directory, every hour or any time it
      was touched.

JH/16 Debugging initiated by an ACL control now continues through into routing
      and transport processes.  Previously debugging stopped any time Exim
      re-execs, or for processing a queued message.

JH/17 The "expand" debug selector now gives more detail, specifically on the
      result of expansion operators and items.

JH/18 Bug 2751: Fix include_directory in redirect routers.  Previously a
      bad comparison between the option value and the name of the file to
      be included was done, and a mismatch was wrongly identified.
      4.88 to 4.95 are affected.

JH/19 Support for Berkeley DB versions 1 and 2 is withdrawn.

JH/20 When built with NDBM for hints DB's check for nonexistence of a name
      supplied as the db file-pair basename.  Previously, if a directory
      path was given, for example via the autoreply "once" option, the DB
      file.pag and file.dir files would be created in that directory's
      parent.

JH/21 Remove the "allow_insecure_tainted_data" main config option and the
      "taint" log_selector.  These were previously deprecated.

JH/22 Fix static address-list lookups to properly return the matched item.
      Previously only the domain part was returned.

JH/23 Bug 2864: FreeBSD: fix transport hang after 4xx/5xx response. Previously
      the call into OpenSSL to send a TLS Close was being repeated; this
      resulted in the library waiting for the peer's Close.  If that was never
      sent we waited forever.  Fix by tracking send calls.

JH/24 The ${run} expansion item now expands its command string elements after
      splitting.  Previously it was before; the new ordering makes handling
      zero-length arguments simpler.  The old ordering can be obtained by
      appending a new option "preexpand", after a comma, to the "run".

JH/25 Taint-check exec arguments for transport-initiated external processes.
      Previously, tainted values could be used.  This affects "pipe", "lmtp" and
      "queryprogram" transport, transport-filter, and ETRN commands.
      The ${run} expansion is also affected: in "preexpand" mode no part of
      the command line may be tainted, in default mode the executable name
      may not be tainted.

JH/26 Fix CHUNKING on a continued-transport.  Previously the usabliility of
      the the facility was not passed across execs, and only the first message
      passed over a connection could use BDAT; any further ones using DATA.

JH/27 Support the PIPECONNECT facility in the smtp transport when the helo_data
      uses $sending_ip_address and an interface is specified.
      Previously any use of the local address in the EHLO name disabled
      PIPECONNECT, the common case being to use the rDNS of it.

JH/28 OpenSSL: fix transport-required OCSP stapling verification under session
      resumption. Previously verify failed because no certificate status is
      passed on the wire for the restarted session. Fix by using the recorded
      ocsp status of the stored session for the new connection.

JH/29 TLS resumption: the key for session lookup in the client now includes
      more info that a server could potentially use in configuring a TLS
      session, avoiding oferring mismatching sessions to such a server.
      Previously only the server IP was used.

JH/30 Fix string_copyn() for limit greater than actual string length.
      Previously the copied amount was the limit, which could result in a
      overlapping memcpy for newly allocated destination soon after a
      source string shorter than the limit.  Found/investigated  by KM.

JH/31 Bug 2886: GnuTLS: Do not free the cached creds on transport connection
      close; it may be needed for a subsequent connection.  This caused a
      SEGV on primary-MX defer.  Found/investigated by Gedalya & Andreas.

JH/32 Fix CHUNKING for a second message on a connection when the first was
      rejected.  Previously we did not reset the chunking-offered state, and
      erroneously rejected the BDAT command.  Investigation help from
      Jesse Hathaway.

JH/33 Fis ${srs_encode ...} to handle an empty sender address, now returning
      an empty address.  Previously the expansion returned an error.

HS/01 Bug 2855: Handle a v4mapped sender address given us by a frontending
      proxy.  Previously these were misparsed, leading to paniclog entries.

Also contains commit 51be321b27 "Fix PAM auth. Bug 2813" addressing
CVE-2022-37451.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit f2763b95af)
2022-10-13 20:26:18 +01:00

303 lines
12 KiB
Makefile

include $(TOPDIR)/rules.mk
PKG_NAME:=exim
PKG_VERSION:=4.96
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ftp.exim.org/pub/exim/exim4/
PKG_HASH:=299a56927b2eb3477daafd3c5bda02bc67e5c4e5898a7aeaf2740875278cf1a3
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSE NOTICE
PKG_CPE_ID:=cpe:/a:exim:exim
PKG_CONFIG_DEPENDS:=\
CONFIG_BUILD_NLS \
CONFIG_PACKAGE_exim \
CONFIG_PACKAGE_exim-gnutls \
CONFIG_EXIM_GNUTLS_DANE \
CONFIG_PACKAGE_exim-openssl \
CONFIG_PACKAGE_exim-ldap \
CONFIG_PACKAGE_exim-lookup-mysql \
CONFIG_PACKAGE_exim-lookup-pgsql \
CONFIG_PACKAGE_exim-lookup-redis \
CONFIG_PACKAGE_exim-lookup-sqlite
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/nls.mk
LOOKUPS:= \
cdb \
dbmdb \
dnsdb \
json%+PACKAGE_exim-lookup-json:jansson \
mysql%+PACKAGE_exim-lookup-mysql:libmariadb \
passwd \
pgsql%+PACKAGE_exim-lookup-pgsql:libpq \
redis%+PACKAGE_exim-lookup-redis:libhiredis \
sqlite%+PACKAGE_exim-lookup-sqlite:libsqlite3
define Package/exim/Default
SECTION:=mail
CATEGORY:=Mail
DEPENDS:=+libdb47 +libpcre2 $(ICONV_DEPENDS) +BUILD_NLS:libidn2 +BUILD_NLS:libidn
TITLE:=Exim message transfer agent
URL:=http://www.exim.org/
USERID:=exim=42:exim=42
endef
define Package/exim
$(call Package/exim/Default)
VARIANT:=nossl
CONFLICTS:=exim-openssl exim-gnutls exim-ldap
endef
define Package/exim-gnutls
$(call Package/exim/Default)
TITLE+=(with GnuTLS)
VARIANT:=gnutls
DEPENDS+=+PACKAGE_exim-gnutls:libgnutls +EXIM_GNUTLS_DANE:libgnutls-dane
PROVIDES:=exim
CONFLICTS:=exim-openssl exim-ldap
endef
define Package/exim-openssl
$(call Package/exim/Default)
TITLE+=(with OpenSSL)
VARIANT:=openssl
DEPENDS+=+PACKAGE_exim-openssl:libopenssl
PROVIDES:=exim
CONFLICTS:=exim-ldap
endef
define Package/exim-ldap
$(call Package/exim/Default)
TITLE+=(with OpenSSL and OpenLDAP)
VARIANT:=ldap
DEPENDS+=+PACKAGE_exim-ldap:libopenssl +PACKAGE_exim-ldap:libsasl2 +PACKAGE_exim-ldap:libopenldap
PROVIDES:=exim
endef
define Package/exim/Default/description
Exim is a message transfer agent (MTA) developed at the University of
Cambridge for use on Unix systems connected to the Internet.
endef
define Package/exim/description
$(call Package/exim/Default/description)
This package provides Exim without TLS support.
endef
define Package/exim-gnutls/description
$(call Package/exim/Default/description)
This package provides Exim built with GnuTLS.
endef
define Package/exim-gnutls/config
config EXIM_GNUTLS_DANE
bool "exim-gnutls DANE support"
depends on PACKAGE_exim-gnutls
default n
help
Build exim-gnutls against libgnutls-dane for DANE support.
libgnutls-dane depends on libunbound which depends on libopenssl.
endef
define Package/exim-openssl/description
$(call Package/exim/Default/description)
This package provides Exim built with OpenSSL.
endef
define Package/exim-ldap/description
$(call Package/exim/Default/description)
This package provides Exim built with OpenSSL, OpenLDAP and Cyrus SASL.
endef
define LookupGen
define Package/exim-lookup-$(subst _,-,$(firstword $(subst %, ,$(1))))
SECTION:=mail
CATEGORY:=Mail
TITLE:=Exim lookup module $(firstword $(subst %, ,$(1)))
URL:=http://www.exim.org/
DEPENDS:=exim $(wordlist 2,$(words $(subst %, ,$(1))),$(subst %, ,$(1)))
endef
endef
$(foreach file,$(LOOKUPS),$(eval $(call LookupGen,$(file))))
define Package/exim/conffiles
/etc/exim/exim.conf
endef
HOST_CFLAGS += -std=c99
TARGET_CFLAGS += $(FPIC) -DNO_IP_OPTIONS -D_FILE_OFFSET_BITS=64
MAKE_VARS += build=Linux-$$(ARCH)
MAKE_FLAGS += AR="$$(TARGET_AR) r"
HOST_MAKE_VARS += build=Linux-$$(ARCH)
define Build/Configure
$(CP) $(PKG_BUILD_DIR)/src/EDITME $(PKG_BUILD_DIR)/Local/Makefile
echo "PID_FILE_PATH=/var/run/exim.pid" >> $(PKG_BUILD_DIR)/Local/Makefile
echo "BIN_DIRECTORY=/usr/sbin" >> $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%CONFIGURE_FILE=/usr/exim/configure%CONFIGURE_FILE=/etc/exim/exim.conf%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# EXIM_GROUP=.*%EXIM_GROUP=42%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# EXIM_USER=.*%EXIM_USER=42%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# INCLUDE=.*%INCLUDE=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# HAVE_IPV6=YES%HAVE_IPV6=YES%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# WITH_CONTENT_SCAN=yes%WITH_CONTENT_SCAN=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# SUPPORT_MAILDIR=yes%SUPPORT_MAILDIR=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# SUPPORT_MAILSTORE=yes%SUPPORT_MAILSTORE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# SUPPORT_MBX=yes%SUPPORT_MBX=yes%' $(PKG_BUILD_DIR)/Local/Makefile
# enable lookup modules
$(SED) 's%# LOOKUP_DSEARCH=yes%LOOKUP_DSEARCH=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# TRANSPORT_LMTP=yes%TRANSPORT_LMTP=yes%' $(PKG_BUILD_DIR)/Local/Makefile
ifdef CONFIG_PACKAGE_exim-lookup-dbmdb
$(SED) 's%LOOKUP_DBM=yes%LOOKUP_DBM=2%' $(PKG_BUILD_DIR)/Local/Makefile
else
$(SED) 's%LOOKUP_DBM=yes%# LOOKUP_DBM=yes%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-dnsdb
$(SED) 's%LOOKUP_DNSDB=yes%LOOKUP_DNSDB=2%' $(PKG_BUILD_DIR)/Local/Makefile
else
$(SED) 's%LOOKUP_DNSDB=yes%# LOOKUP_DNSDB=yes%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-passwd
$(SED) 's%# LOOKUP_PASSWD=yes%LOOKUP_PASSWD=2%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-cdb
$(SED) 's%# LOOKUP_CDB=yes%LOOKUP_CDB=2%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-json
$(SED) 's%# LOOKUP_JSON=yes%LOOKUP_JSON=2\
\nLOOKUP_JSON_INCLUDE=-I$(STAGING_DIR)/usr/include\
\nLOOKUP_JSON_LIBS=-Wl,--no-as-needed -ljansson%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-pgsql
$(SED) 's%# LOOKUP_PGSQL=yes%LOOKUP_PGSQL=2\
\nLOOKUP_PGSQL_LIBS=-Wl,--no-as-needed -lpq%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-sqlite
$(SED) 's%# LOOKUP_SQLITE=yes%LOOKUP_SQLITE=2\
\nLOOKUP_SQLITE_LIBS=-Wl,--no-as-needed -lsqlite3%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-mysql
$(SED) 's%# LOOKUP_MYSQL=yes%LOOKUP_MYSQL=2\
\nLOOKUP_MYSQL_INCLUDE=-I$(STAGING_DIR)/usr/include/mysql\
\nLOOKUP_MYSQL_LIBS=-Wl,--no-as-needed -lmysqlclient%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifdef CONFIG_PACKAGE_exim-lookup-redis
$(SED) 's%# LOOKUP_REDIS=yes%LOOKUP_REDIS=2\
\nLOOKUP_REDIS_INCLUDE=-I$(STAGING_DIR)/usr/include/hiredis\
\nLOOKUP_REDIS_LIBS=-Wl,--no-as-needed -lhiredis%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifeq ($(CONFIG_BUILD_NLS),y)
$(SED) 's%# HAVE_ICONV=yes%HAVE_ICONV=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# CFLAGS=-O -I/usr/local/include%CFLAGS=$(TARGET_CFLAGS) $(ICONV_CPPFLAGS)%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# EXTRALIBS_EXIM=-L/usr/local/lib -liconv%EXTRALIBS_EXIM=-export-dynamic -rdynamic $(ICONV_LDFLAGS) -liconv -ldl%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# SUPPORT_I18N_2008=yes%SUPPORT_I18N_2008=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# LDFLAGS += -lidn -lidn2%LDFLAGS += -lidn -lidn2%' $(PKG_BUILD_DIR)/Local/Makefile
else
$(SED) 's%# HAVE_ICONV=yes%HAVE_ICONV=no%' $(PKG_BUILD_DIR)/Local/Makefile
endif
$(SED) 's%# AUTH_CRAM_MD5=yes%AUTH_CRAM_MD5=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_DOVECOT=yes%AUTH_DOVECOT=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_EXTERNAL=yes%AUTH_EXTERNAL=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_PLAINTEXT=yes%AUTH_PLAINTEXT=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_SPA=yes%AUTH_SPA=yes%' $(PKG_BUILD_DIR)/Local/Makefile
ifeq ($(BUILD_VARIANT),gnutls)
$(SED) 's%# USE_GNUTLS=yes%USE_GNUTLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# TLS_INCLUDE=-I/usr/local/.*%TLS_INCLUDE=-I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
ifeq ($(CONFIG_EXIM_GNUTLS_DANE),y)
$(SED) 's%# TLS_LIBS=-lgnutls -lgnutls-dane%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lgnutls -lgnutls-dane%' $(PKG_BUILD_DIR)/Local/Makefile
else
$(SED) 's%SUPPORT_DANE=yes%# SUPPORT_DANE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# TLS_LIBS=-lgnutls -lgnutls-dane%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lgnutls%' $(PKG_BUILD_DIR)/Local/Makefile
endif
$(SED) 's%# AUTH_TLS=yes%AUTH_TLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifneq ($(filter ldap openssl, $(BUILD_VARIANT)),)
$(SED) 's%# USE_OPENSSL=yes%USE_OPENSSL=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# TLS_INCLUDE=-I/usr/local/.*%TLS_INCLUDE=-I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# TLS_LIBS=-lssl -lcrypto%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lssl -lcrypto%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_TLS=yes%AUTH_TLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifeq ($(BUILD_VARIANT),ldap)
$(SED) 's%# LOOKUP_LDAP=yes%LOOKUP_LDAP=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# LDAP_LIB_TYPE=OPENLDAP2%LDAP_LIB_TYPE=OPENLDAP2%' $(PKG_BUILD_DIR)/Local/Makefile
echo "LOOKUP_LIBS+=-lldap -llber" >> $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_CYRUS_SASL=yes%AUTH_CYRUS_SASL=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# AUTH_LIBS=-lsasl2%AUTH_LIBS=-lsasl2%' $(PKG_BUILD_DIR)/Local/Makefile
endif
ifeq ($(BUILD_VARIANT),nossl)
$(SED) 's%# DISABLE_TLS=yes%DISABLE_TLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%SUPPORT_DANE=yes%# SUPPORT_DANE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
endif
$(SED) 's%# CFLAGS_DYNAMIC=-shared -rdynamic -fPIC%CFLAGS_DYNAMIC=-shared -rdynamic $(FPIC)%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/%LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%#DLOPEN_LOCAL_SCAN=yes%DLOPEN_LOCAL_SCAN=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(call Build/Compile/Default,makefile)
$(CP) $(PKG_BUILD_DIR)/OS/os.h-Linux $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
# overwrite types for cross-compile
# (is all the below true for glibc as well?)
echo '#include <inttypes.h>' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#define ip_options ip_opts' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#undef OFF_T_FMT' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#define OFF_T_FMT "%" PRId64' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#undef LONGLONG_T' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#define LONGLONG_T int64_t' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#ifndef NS_MAXMSG' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#define NS_MAXMSG 65535' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
echo '#endif' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
$(HOST_MAKE_VARS) $(MAKE) $(HOST_MAKE_FLAGS) $(HOST_MAKE_VARS) -C $(PKG_BUILD_DIR)/build-Linux-$(ARCH) macro_predef
endef
define Package/exim/conffiles
/etc/exim/
endef
Package/exim-gnutls/conffiles = $(Package/exim/conffiles)
Package/exim-openssl/conffiles = $(Package/exim/conffiles)
Package/exim-ldap/conffiles = $(Package/exim/conffiles)
define Package/exim/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/exim $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc/exim
$(INSTALL_DATA) $(PKG_BUILD_DIR)/src/configure.default $(1)/etc/exim/exim.conf
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/exim.init $(1)/etc/init.d/exim
$(INSTALL_DIR) $(1)/usr/lib/exim/lookups
endef
Package/exim-gnutls/install = $(Package/exim/install)
Package/exim-openssl/install = $(Package/exim/install)
Package/exim-ldap/install = $(Package/exim/install)
define LookupInstall
define Package/exim-lookup-$(subst _,-,$(firstword $(subst %, ,$(1))))/install
$(INSTALL_DIR) $$(1)/usr/lib/exim/lookups
$(INSTALL_BIN) \
$(PKG_BUILD_DIR)/build-Linux-$(ARCH)/lookups/$(firstword $(subst %, ,$(1))).so \
$$(1)/usr/lib/exim/lookups
endef
endef
$(foreach file,$(LOOKUPS),$(eval $(call LookupInstall,$(file))))
$(eval $(call BuildPackage,exim))
$(eval $(call BuildPackage,exim-gnutls))
$(eval $(call BuildPackage,exim-openssl))
$(eval $(call BuildPackage,exim-ldap))
$(foreach file,$(LOOKUPS),$(eval $(call BuildPackage,exim-lookup-$(subst _,-,$(firstword $(subst %, ,$(file)))))))