Message ID | 1394124890-29254-3-git-send-email-luca@lucaceresoli.net |
---|---|
State | Accepted |
Headers | show |
Hi, Luca Ceresoli <luca@lucaceresoli.net> wrote in news:1394124890-29254-3-git-send-email-luca@lucaceresoli.net: > --- 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" what about creating a new section "Mail applications"? > --- /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" Here I use a different approach using sed inside exim.mk: ( sed -e 's,^BIN_DIR.*$$,BIN_DIRECTORY=/usr/bin,' \ -e 's,^CONF.*$$,CONFIGURE_FILE=/etc/exim.conf,' \ -e 's,^# INCLUDE.*$$,INCLUDE=-I$(TARGET_DIR)/usr/include,' \ -e 's,^PCRE_CONFIG.*$$,# PCRE_CONFIG=no,' \ -e 's,^# PCRE_LIBS.*$$,PCRE_LIBS=-lpcre,' \ -e 's,^# HAVE_ICONV.*$$,HAVE_ICONV=yes,' \ -e 's,^# AUTH_CRAM_MD5=.*$$,AUTH_CRAM_MD5=yes,' \ -e 's,^# AUTH_DOVECOT=.*$$,AUTH_DOVECOT=yes,' \ -e 's,^# AUTH_PLAINTEXT=.*$$,AUTH_PLAINTEXT=yes,' \ -e 's,^# LOOKUP_PASSWD=.*$$,LOOKUP_PASSWD=yes,' \ -e 's,^# WITH_CONTENT_SCAN=.*$$,WITH_CONTENT_SCAN=yes,' \ -e 's,^# SUPPORT_TLS=.*$$,SUPPORT_TLS=yes,' \ -e 's,^# TLS_LIBS=.*$$,TLS_LIBS=-lssl -lcrypto,' \ -e 's,^# PID_FILE_PATH=.*$$,PID_FILE_PATH=/var/run/exim.pid,' \ -e 's,^COMPRESS_COMMAND=.*$$,COMPRESS_COMMAND=/bin/gzip,' \ -e 's,^ZCAT_COMMAND=.*$$,ZCAT_COMMAND=/bin/zcat,' \ -e 's,^EXIM_USER.*$$,EXIM_USER=ref:exim,' \ -e 's,^EXIM_MONITOR,#EXIM_MONITOR,' $(@D)/src/EDITME > $(@D)/Local/Makefile \ ); \ This should imho be extended to options in Config.in for different mail environments, similar to the Debian packages exim4-daemon-heavy & exim4- daemon-light. I have to add that buildroot does not create a rootfs here, it delivers binaries for my personal mailserver package which is used in another distro with its own init system, therefore I can not review your init script. Regards, Bernd
Hi Bernd, please do reply to all, not only to the mailing list. Some people (including me) check their personal e-mail more frequently than mailing lists. Bernd Kuhls wrote: > Hi, > > Luca Ceresoli <luca@lucaceresoli.net> wrote in > news:1394124890-29254-3-git-send-email-luca@lucaceresoli.net: > >> --- 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" > > what about creating a new section "Mail applications"? I don't think we have a large enough number of mail-related packages in Buildroot to justify such a section. But I may be wrong. > >> --- /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" > > Here I use a different approach using sed inside exim.mk: > > ( sed -e 's,^BIN_DIR.*$$,BIN_DIRECTORY=/usr/bin,' \ > -e 's,^CONF.*$$,CONFIGURE_FILE=/etc/exim.conf,' \ > -e 's,^# INCLUDE.*$$,INCLUDE=-I$(TARGET_DIR)/usr/include,' \ > -e 's,^PCRE_CONFIG.*$$,# PCRE_CONFIG=no,' \ > -e 's,^# PCRE_LIBS.*$$,PCRE_LIBS=-lpcre,' \ > -e 's,^# HAVE_ICONV.*$$,HAVE_ICONV=yes,' \ > -e 's,^# AUTH_CRAM_MD5=.*$$,AUTH_CRAM_MD5=yes,' \ > -e 's,^# AUTH_DOVECOT=.*$$,AUTH_DOVECOT=yes,' \ > -e 's,^# AUTH_PLAINTEXT=.*$$,AUTH_PLAINTEXT=yes,' \ > -e 's,^# LOOKUP_PASSWD=.*$$,LOOKUP_PASSWD=yes,' \ > -e 's,^# WITH_CONTENT_SCAN=.*$$,WITH_CONTENT_SCAN=yes,' \ > -e 's,^# SUPPORT_TLS=.*$$,SUPPORT_TLS=yes,' \ > -e 's,^# TLS_LIBS=.*$$,TLS_LIBS=-lssl -lcrypto,' \ > -e 's,^# PID_FILE_PATH=.*$$,PID_FILE_PATH=/var/run/exim.pid,' \ > -e 's,^COMPRESS_COMMAND=.*$$,COMPRESS_COMMAND=/bin/gzip,' \ > -e 's,^ZCAT_COMMAND=.*$$,ZCAT_COMMAND=/bin/zcat,' \ > -e 's,^EXIM_USER.*$$,EXIM_USER=ref:exim,' \ > -e 's,^EXIM_MONITOR,#EXIM_MONITOR,' $(@D)/src/EDITME > > $(@D)/Local/Makefile \ > ); \ At first sight it looks cleaner, but it should be made more robust IMHO. Suppose in a future release the exim developers decide to uncomment a variable that is now commented, or vice versa, or to use two spaces between "#" and the variable name. Then your sed filters would silently stop working. Also, the line: > -e 's,^CONF.*$$,CONFIGURE_FILE=/etc/exim.conf,' \ could catch future variables stasting with CONF. OTOH my approach is a bot rude, but you know what file you'll generate, which I find more reliable. > > This should imho be extended to options in Config.in for different mail > environments, similar to the Debian packages exim4-daemon-heavy & exim4- > daemon-light. Definitely. I see we use different values for some variables.
[posted and mailed] Hi, Luca Ceresoli <luca@lucaceresoli.net> wrote in news:5319DD64.9000701@lucaceresoli.net: > Bernd Kuhls wrote: >> Hi, >> >> Luca Ceresoli <luca@lucaceresoli.net> wrote in >> news:1394124890-29254-3-git-send-email-luca-ep08DiM7hqZH3+C6az13tg@publi >> c.gmane.org: >> >>> --- 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" >> >> what about creating a new section "Mail applications"? > > I don't think we have a large enough number of mail-related packages in > Buildroot to justify such a section. But I may be wrong. I am planning to add the following packages to buildroot in addition to exim: - fetchmail - dovecot - dovecot-pigeonhole Currently the following mail-related packages are included in buildroot, both in "Networking applications", and could be moved to the new section: - libesmtp - msmtp This makes 6 packages in total. I do not know how many packages are needed to justify a new section, therefore I am asking before sending patches ;) Regards, Bernd
Dear Luca Ceresoli, On Thu, 6 Mar 2014 17:54:50 +0100, Luca Ceresoli wrote: > --- You also for your SoB here. > 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 I've used $(INSTALL) -m0644 instead > + 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 I've added AR and RANLIB here, otherwise the exim build system uses the native versions. > +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 I've moved this to EXIM_INSTALL_INIT_SYSV. > + DESTDIR=${TARGET_DIR} INSTALL_ARG="-no_chown -no_symlink" build=br \ > + $(MAKE1) -C $(@D) install > + chmod u+s ${TARGET_DIR}/usr/sbin/exim I've replaced both {TARGET_DIR} by (TARGET_DIR) I've committed with those changes. However, upon startup, I get an exim failure, would be good to have a look: Starting exim... 1970-01-01 00:00:06 Exim configuration error in line 541 of /etc/exim/configure: router dnslookup: cannot find router driver "dnslookup" My defconfig is: BR2_arm=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2014.02-rc1.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_PACKAGE_EXIM=y Thomas
Hi Thomas, thanks for applying my patch and improving it. However now that we have a "Mail" category exim should be placed there. I'm sending a patch to move it. Thomas Petazzoni wrote: > Dear Luca Ceresoli, > > On Thu, 6 Mar 2014 17:54:50 +0100, Luca Ceresoli wrote: >> --- > > You also for your SoB here. > >> 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 > > I've used $(INSTALL) -m0644 instead > >> + 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 > > I've added AR and RANLIB here, otherwise the exim build system uses the > native versions. Did you actually experience a build error, or just fixed ased on visual inspection? That's weird, the code I submitted works here. But my build environment is different, this might justify a different behaviour. Of course I am not against this change, in the worst case it's useless. Just curious. > >> +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 > > I've moved this to EXIM_INSTALL_INIT_SYSV. > >> + DESTDIR=${TARGET_DIR} INSTALL_ARG="-no_chown -no_symlink" build=br \ >> + $(MAKE1) -C $(@D) install >> + chmod u+s ${TARGET_DIR}/usr/sbin/exim > > I've replaced both {TARGET_DIR} by (TARGET_DIR) > > I've committed with those changes. > > However, upon startup, I get an exim failure, would be good to have a > look: > > Starting exim... > 1970-01-01 00:00:06 Exim configuration error in line 541 of /etc/exim/configure: > router dnslookup: cannot find router driver "dnslookup" > > My defconfig is: > > BR2_arm=y > BR2_TOOLCHAIN_EXTERNAL=y > BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y > BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y > BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2014.02-rc1.tar.bz2" > BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13=y > # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set > BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" > BR2_PACKAGE_EXIM=y I'll have a look at this error.
Dear Luca Ceresoli, On Sun, 06 Apr 2014 00:11:36 +0200, Luca Ceresoli wrote: > thanks for applying my patch and improving it. You're welcome. > However now that we have a "Mail" category exim should be placed there. > I'm sending a patch to move it. Sure, no problem. > > I've added AR and RANLIB here, otherwise the exim build system uses the > > native versions. > > Did you actually experience a build error, or just fixed ased on visual > inspection? That's weird, the code I submitted works here. But my build > environment is different, this might justify a different behaviour. > > Of course I am not against this change, in the worst case it's useless. > Just curious. I did not experience any problem, I just saw while looking at the build log that it was correctly using the cross-gcc, but not cross-ar and cross-ranlib, so I fixed that up. > > My defconfig is: > > > > BR2_arm=y > > BR2_TOOLCHAIN_EXTERNAL=y > > BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y > > BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y > > BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2014.02-rc1.tar.bz2" > > BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13=y > > # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set > > BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" > > BR2_PACKAGE_EXIM=y > > I'll have a look at this error. Great, thanks. Thomas
Hi Thomas, Thomas Petazzoni wrote: > Dear Luca Ceresoli, > > On Sun, 06 Apr 2014 00:11:36 +0200, Luca Ceresoli wrote: > >> thanks for applying my patch and improving it. > > You're welcome. > >> However now that we have a "Mail" category exim should be placed there. >> I'm sending a patch to move it. > > Sure, no problem. > >>> I've added AR and RANLIB here, otherwise the exim build system uses the >>> native versions. >> >> Did you actually experience a build error, or just fixed ased on visual >> inspection? That's weird, the code I submitted works here. But my build >> environment is different, this might justify a different behaviour. >> >> Of course I am not against this change, in the worst case it's useless. >> Just curious. > > I did not experience any problem, I just saw while looking at the build > log that it was correctly using the cross-gcc, but not cross-ar and > cross-ranlib, so I fixed that up. > >>> My defconfig is: >>> >>> BR2_arm=y >>> BR2_TOOLCHAIN_EXTERNAL=y >>> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y >>> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y >>> BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2014.02-rc1.tar.bz2" >>> BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13=y >>> # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set >>> BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" >>> BR2_PACKAGE_EXIM=y >> >> I'll have a look at this error. This is because in my original patch dated 2011 exim was configured in a very stripped-down version, just enough to deliver mail locally to cyrus-imapd. At that time this was done coherently in the build configuration file (package/exim/Local-Makefile), which disables most optional features, and in the runtime configuration file (/etc/exim/configure on the target), which does not configure those features. In my resubmit last month I removed my runtime configuration file which was tailored for cyrus-imapd, since I was sending the exim patch alone. However I dd notchange the build config file. As it is, it disables features such as the dnslookup router, which is enabled by the stock runtime config file. I'm sending a patch that changes the configuration approach in a way more similar to Bernd Kuhls' approach: instead of blindly copying a minimal Buildroot-provided configuration file, change to copy the exim-provided one and tweak it as needed. This actually makes the configuration closed to standard exim.
Hi Bernd, Thomas, Luca Ceresoli wrote: ... >>>> My defconfig is: >>>> >>>> BR2_arm=y >>>> BR2_TOOLCHAIN_EXTERNAL=y >>>> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y >>>> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y >>>> BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2014.02-rc1.tar.bz2" >>>> >>>> BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13=y >>>> # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set >>>> BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" >>>> BR2_PACKAGE_EXIM=y >>> >>> I'll have a look at this error. > > This is because in my original patch dated 2011 exim was configured in > a very stripped-down version, just enough to deliver mail locally to > cyrus-imapd. > > At that time this was done coherently in the build configuration file > (package/exim/Local-Makefile), which disables most optional features, > and in the runtime configuration file (/etc/exim/configure on the > target), which does not configure those features. > > In my resubmit last month I removed my runtime configuration file which > was tailored for cyrus-imapd, since I was sending the exim patch alone. > However I dd notchange the build config file. As it is, it disables > features such as the dnslookup router, which is enabled by the stock > runtime config file. > > I'm sending a patch that changes the configuration approach in a way > more similar to Bernd Kuhls' approach: instead of blindly copying a > minimal Buildroot-provided configuration file, change to copy the > exim-provided one and tweak it as needed. This actually makes the > configuration closed to standard exim. For the records, here's the patch that fixes the issue: http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/81356
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 <luca@lucaceresoli.net> +--- + 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 <luca@lucaceresoli.net> +--- + 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-<version>, 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 <luca@lucaceresoli.net> +--- + 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))