From patchwork Thu Mar 6 16:54:50 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Ceresoli X-Patchwork-Id: 327517 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id CFE562C0327 for ; Fri, 7 Mar 2014 03:56:41 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 10DA23169A; Thu, 6 Mar 2014 16:56:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eHFz8+Dghd33; Thu, 6 Mar 2014 16:56:39 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id E4B3731DFF; Thu, 6 Mar 2014 16:56:38 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 4BFA21BF9D5 for ; Thu, 6 Mar 2014 16:56:38 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 44E5688DBB for ; Thu, 6 Mar 2014 16:56:38 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cc0szBvHLfNI for ; Thu, 6 Mar 2014 16:56:37 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from srv-hp10.netsons.net (unknown [94.141.22.72]) by hemlock.osuosl.org (Postfix) with ESMTPS id DBB2B8875E for ; Thu, 6 Mar 2014 16:56:36 +0000 (UTC) Received: from host138-62-static.18-80-b.business.telecomitalia.it ([80.18.62.138]:47980 helo=wallace.comelit.it) by srv-hp10.netsons.net with esmtpa (Exim 4.82) (envelope-from ) id 1WLbap-003der-0r; Thu, 06 Mar 2014 17:56:34 +0100 From: Luca Ceresoli To: buildroot@uclibc.org Date: Thu, 6 Mar 2014 17:54:50 +0100 Message-Id: <1394124890-29254-3-git-send-email-luca@lucaceresoli.net> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1394124890-29254-1-git-send-email-luca@lucaceresoli.net> References: <1394124890-29254-1-git-send-email-luca@lucaceresoli.net> X-OutGoing-Spam-Status: No, score=-2.9 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - srv-hp10.netsons.net X-AntiAbuse: Original Domain - uclibc.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lucaceresoli.net X-Get-Message-Sender-Via: srv-hp10.netsons.net: authenticated_id: luca@lucaceresoli.net X-Source: X-Source-Args: X-Source-Dir: Cc: Luca Ceresoli , berndkuhls@hotmail.com Subject: [Buildroot] [PATCH 2/2] exim: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net --- package/Config.in | 1 + package/exim/Config.in | 9 +++++ package/exim/Local-Makefile | 15 ++++++++ package/exim/S86exim | 26 ++++++++++++++ .../exim/exim-Build-buildconfig-for-the-host.patch | 23 ++++++++++++ ...n-t-make-backup-copies-of-installed-files.patch | 40 +++++++++++++++++++++ ...ip-version-check-and-symlink-installation.patch | 40 +++++++++++++++++++++ package/exim/exim.mk | 41 ++++++++++++++++++++++ 8 files changed, 195 insertions(+) create mode 100644 package/exim/Config.in create mode 100644 package/exim/Local-Makefile create mode 100644 package/exim/S86exim create mode 100644 package/exim/exim-Build-buildconfig-for-the-host.patch create mode 100644 package/exim/exim-Don-t-make-backup-copies-of-installed-files.patch create mode 100644 package/exim/exim-Skip-version-check-and-symlink-installation.patch create mode 100644 package/exim/exim.mk diff --git a/package/Config.in b/package/Config.in index fca61d6..9650bc5 100644 --- a/package/Config.in +++ b/package/Config.in @@ -834,6 +834,7 @@ source "package/dnsmasq/Config.in" source "package/dropbear/Config.in" source "package/ebtables/Config.in" source "package/ethtool/Config.in" +source "package/exim/Config.in" source "package/foomatic-filters/Config.in" source "package/fping/Config.in" source "package/gesftpserver/Config.in" diff --git a/package/exim/Config.in b/package/exim/Config.in new file mode 100644 index 0000000..70038a2 --- /dev/null +++ b/package/exim/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_EXIM + bool "exim" + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_BERKELEYDB + help + Exim is a message transfer agent (MTA) developed at the University of + Cambridge for use on Unix systems connected to the Internet. + + http://www.exim.org/ diff --git a/package/exim/Local-Makefile b/package/exim/Local-Makefile new file mode 100644 index 0000000..191f0e0 --- /dev/null +++ b/package/exim/Local-Makefile @@ -0,0 +1,15 @@ +BIN_DIRECTORY=/usr/sbin +CONFIGURE_FILE=/etc/exim/configure +EXIM_USER=ref:exim +EXIM_GROUP=mail +SPOOL_DIRECTORY=/var/spool/exim +ROUTER_ACCEPT=yes +TRANSPORT_LMTP=yes +LOOKUP_DBM=yes +LOOKUP_LSEARCH=yes +PCRE_LIBS=-lpcre +FIXED_NEVER_USERS=root +HEADERS_CHARSET="ISO-8859-1" +HAVE_ICONV=no +SYSLOG_LOG_PID=yes +TMPDIR="/tmp" diff --git a/package/exim/S86exim b/package/exim/S86exim new file mode 100644 index 0000000..8c01b29 --- /dev/null +++ b/package/exim/S86exim @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Start/stop exim +# + +PIDFILE=/var/lock/exim/exim-daemon.pid + +case "$1" in + start) + echo "Starting exim..." + start-stop-daemon -S -x exim -- -bd + ;; + stop) + echo -n "Stopping exim..." + start-stop-daemon -K -o -p $PIDFILE + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/exim/exim-Build-buildconfig-for-the-host.patch b/package/exim/exim-Build-buildconfig-for-the-host.patch new file mode 100644 index 0000000..a926fbd --- /dev/null +++ b/package/exim/exim-Build-buildconfig-for-the-host.patch @@ -0,0 +1,23 @@ +buildconfig is meant to be executed on the host, so it has to be compiled +using $(HOSTCC), not $(CC). + +Signed-off-by: Luca Ceresoli +--- + OS/Makefile-Base | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/OS/Makefile-Base b/OS/Makefile-Base +index 29a6ad3..420ba60 100644 +--- a/OS/Makefile-Base ++++ b/OS/Makefile-Base +@@ -114,8 +114,8 @@ allexim: config.h $(EXIM_MONITOR) exicyclog exinext exiwhat \ + + # Targets for special-purpose configuration header builders + buildconfig: buildconfig.c +- @echo "$(CC) buildconfig.c" +- $(FE)$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS) ++ @echo "$(HOSTCC) buildconfig.c" ++ $(FE)$(HOSTCC) $(HOSTCFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS) + + + # Target for the exicyclog utility script diff --git a/package/exim/exim-Don-t-make-backup-copies-of-installed-files.patch b/package/exim/exim-Don-t-make-backup-copies-of-installed-files.patch new file mode 100644 index 0000000..0cdaa74 --- /dev/null +++ b/package/exim/exim-Don-t-make-backup-copies-of-installed-files.patch @@ -0,0 +1,40 @@ +If exim had already been installed, the install script makes backup +copies of the pre-existing executables with a ".0" suffix. + +This leads to useless duplicated files on the target, so disable this +piece of code. + +Signed-off-by: Luca Ceresoli +--- + scripts/exim_install | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/scripts/exim_install b/scripts/exim_install +index 616ab3c..e68e7d5 100755 +--- a/scripts/exim_install ++++ b/scripts/exim_install +@@ -344,15 +344,15 @@ while [ $# -gt 0 ]; do + + else + if ../scripts/newer ${name} ${BIN_DIRECTORY}/${name}; then +- if [ -f ${BIN_DIRECTORY}/${name} ]; then +- echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O +- ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O +- if [ $? -ne 0 ]; then +- echo $com "" +- echo $com "*** Exim installation ${ver}failed ***" +- exit 1 +- fi +- fi ++# if [ -f ${BIN_DIRECTORY}/${name} ]; then ++# echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O ++# ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O ++# if [ $? -ne 0 ]; then ++# echo $com "" ++# echo $com "*** Exim installation ${ver}failed ***" ++# exit 1 ++# fi ++# fi + echo ${CP} ${name} ${BIN_DIRECTORY} + ${real} ${CP} ${name} ${BIN_DIRECTORY} + if [ $? -ne 0 ]; then diff --git a/package/exim/exim-Skip-version-check-and-symlink-installation.patch b/package/exim/exim-Skip-version-check-and-symlink-installation.patch new file mode 100644 index 0000000..94d21ae --- /dev/null +++ b/package/exim/exim-Skip-version-check-and-symlink-installation.patch @@ -0,0 +1,40 @@ +The exim install script installs a binary named exim-, plus a symlink +to it named exim. +In order to achieve this "feature" (of dubious usefulness) it runs the +executable (on the host) and then filters its output to grab the version number. +This clearly cannot work if the executable is cross-compiled, so get rid of all +of it and just install an executable file called exim. + +Inspired by: +http://patch-tracker.debian.org/patch/series/view/exim4/4.76-2/35_install.dpatch + +Signed-off-by: Luca Ceresoli +--- + scripts/exim_install | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/scripts/exim_install b/scripts/exim_install +index e68e7d5..487a4e1 100755 +--- a/scripts/exim_install ++++ b/scripts/exim_install +@@ -59,6 +59,8 @@ while [ $# -gt 0 ] ; do + shift + done + ++do_symlink=no ++ + # Get the values of BIN_DIRECTORY, CONFIGURE_FILE, INFO_DIRECTORY, NO_SYMLINK, + # SYSTEM_ALIASES_FILE, and EXE from the global Makefile (in the build + # directory). EXE is empty except in the Cygwin environment. In each case, keep +@@ -218,8 +220,9 @@ while [ $# -gt 0 ]; do + # The exim binary is handled specially + + if [ $name = exim${EXE} ]; then +- version=exim-`./exim -bV -C /dev/null | \ +- awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE} ++ version=exim ++# version=exim-`./exim -bV -C /dev/null | \ ++# awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE} + + if [ "${version}" = "exim-${EXE}" ]; then + echo $com "" diff --git a/package/exim/exim.mk b/package/exim/exim.mk new file mode 100644 index 0000000..011d0a4 --- /dev/null +++ b/package/exim/exim.mk @@ -0,0 +1,41 @@ +############################################################# +# +# exim +# +############################################################# + +EXIM_VERSION = 4.82 +EXIM_SOURCE = exim-$(EXIM_VERSION).tar.bz2 +EXIM_SITE = ftp://ftp.exim.org/pub/exim/exim4 +EXIM_LICENSE = GPLv2+ +EXIM_LICENSE_FILES = LICENCE +EXIM_DEPENDENCIES = pcre berkeleydb + +# These echos seem to be the sanest way to feed CC and CFLAGS to exim +define EXIM_CONFIGURE_CMDS + install -D package/exim/Local-Makefile $(@D)/Local/Makefile + echo "CC=$(TARGET_CC)" >>$(@D)/Local/Makefile + echo "CFLAGS=$(TARGET_CFLAGS)" >>$(@D)/Local/Makefile + echo "HOSTCC=$(HOSTCC)" >>$(@D)/Local/Makefile + echo "HOSTCFLAGS=$(HOSTCFLAGS)" >>$(@D)/Local/Makefile +endef + +# "The -j (parallel) flag must not be used with make" +# (http://www.exim.org/exim-html-current/doc/html/spec_html/ch04.html) +define EXIM_BUILD_CMDS + build=br $(MAKE1) -C $(@D) +endef + +define EXIM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 package/exim/S86exim \ + $(TARGET_DIR)/etc/init.d/S86exim + DESTDIR=${TARGET_DIR} INSTALL_ARG="-no_chown -no_symlink" build=br \ + $(MAKE1) -C $(@D) install + chmod u+s ${TARGET_DIR}/usr/sbin/exim +endef + +define EXIM_USERS +exim 88 mail 8 * - - - exim +endef + +$(eval $(generic-package))