package/exim: Add optional OpenSSL support
PATCH v3 1/1 package/exim: Add optional OpenSSL support
Also add TARGET_MAKE_ENV to EXIM_BUILD_CMDS to enable access to our pkg-config.
---
v3: Add comment about TARGET_MAKE_ENV (Baruch)
v2: Use pkg-config to detect openssl (Yann)
package/exim/exim.mk | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
package/exim/exim.mk +11 -2
@@ -9,7 +9,7 @@ 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 +EXIM_DEPENDENCIES = pcre berkeleydb host-pkgconf # Modify a variable value. It must already exist in the file, either # commented or not.
@@ -62,6 +62,14 @@ define EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV endef endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +EXIM_DEPENDENCIES += openssl +define EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL + $(call exim-config-change,SUPPORT_TLS,yes) + $(call exim-config-change,USE_OPENSSL_PC,openssl) +endef +endif + # this specific toolchain lacks libnsl ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_2014_12),y) define EXIM_REMOVE_LIBNSL_FROM_MAKEFILE
@@ -89,6 +97,7 @@ define EXIM_CONFIGURE_CMDS $(EXIM_USE_DEFAULT_CONFIG_FILE) $(EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT) $(EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV) + $(EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL) $(EXIM_CONFIGURE_TOOLCHAIN) endef endif # CUSTOM_CONFIG
@@ -101,7 +110,7 @@ endif # "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) $(EXIM_STATIC_FLAGS) + $(TARGET_MAKE_ENV) build=br $(MAKE1) -C $(@D) $(EXIM_STATIC_FLAGS) endef # Need to replicate the LFLAGS in install, as exim still wants to build
Signature · 1 line
1.7.10.4
PATCH v3 1/1 package/exim: Add optional OpenSSL support
Bernd, All,
On 2015-04-12 13:25 +0200, Bernd Kuhls spake thusly:
Quoted 3 lines
Also add
TARGET_MAKE_ENVtoEXIM_BUILD_CMDSto enable access to our pkg-config.Signed-off-by Bernd Kuhls <[email protected]>
Note that I was not able to test for static builds, because exim is already broken in that case; this defconfig does not build:
BR2_arm=y
BR2_cortex_a7=y
BR2_STATIC_LIBS=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_EXIM=yand fails with this error message:
/home/ymorin/dev/buildroot/O/host/opt/ext-toolchain/bin/../lib/gcc /arm-linux-musleabi/4.8.3/../../../../arm-linux-musleabi/bin/ld:
cannot find -lnsl
That's because musl does not provide libnsl. But exim does not disable libnsl.
A further fix would be to remove use of libnsl when the C library is not glibc.
This is obviously not related to your patch, however.
Regards,
Yann E. MORIN.
Quoted 59 lines
---
v3: Add comment aboutTARGET_MAKE_ENV(Baruch)
v2: Use pkg-config to detect openssl (Yann)package/exim/exim.mk | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)package/exim/exim.mk +11
-2@@ -9,7 +9,7 @@ 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 +EXIM_DEPENDENCIES = pcre berkeleydb host-pkgconf # Modify a variable value. It must already exist in the file, either # commented or not.@@ -62,6 +62,14 @@ define EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV endef endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +EXIM_DEPENDENCIES += openssl +define EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL + $(call exim-config-change,SUPPORT_TLS,yes) + $(call exim-config-change,USE_OPENSSL_PC,openssl) +endef +endif + # this specific toolchain lacks libnsl ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_2014_12),y) define EXIM_REMOVE_LIBNSL_FROM_MAKEFILE@@ -89,6 +97,7 @@ define EXIM_CONFIGURE_CMDS $(EXIM_USE_DEFAULT_CONFIG_FILE) $(EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT) $(EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV) + $(EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL) $(EXIM_CONFIGURE_TOOLCHAIN) endef endif # CUSTOM_CONFIG@@ -101,7 +110,7 @@ endif # "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) $(EXIM_STATIC_FLAGS) + $(TARGET_MAKE_ENV) build=br $(MAKE1) -C $(@D) $(EXIM_STATIC_FLAGS) endef # Need to replicate the LFLAGS in install, as exim still wants to buildSignature · 6 lines
1.7.10.4 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v3 1/1 package/exim: Add optional OpenSSL support
Bernd, All,
On 2015-04-12 15:23 +0200, Yann E. MORIN spake thusly:
[--SNIP--]
Quoted 2 lines
Note that I was not able to test for static builds, because exim is already broken in that case; this defconfig does not build:
[--SNIP--]
Quoted 5 lines
That's because musl does not provide libnsl. But exim does not disable libnsl.
A further fix would be to remove use of libnsl when the C library is not glibc.
Woops, wrong, uClibc also has libnsl...
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v3 1/1 package/exim: Add optional OpenSSL support
"Yann E. MORIN" <[email protected]> wrote in news:20150412134418.GA21018 at free.fr:
Quoted 4 lines
Quoted 2 lines
A further fix would be to remove use of libnsl when the C library is not glibc.
Woops, wrong, uClibc also has libnsl...
Hi,
but it is only a stub library without any function:
http://git.uclibc.org/uClibc/tree/docs/Glibc_vs_uClibc_Differences.txt
"uClibc provides a stub libnsl, but has no actual support for Network Information Service (NIS)."
Right now I am testing something like this:
-# this specific toolchain lacks libnsl
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_2014_12),y)
+# only (e)glibc provides libnsl, remove -lnsl for all other toolchains +# http://bugs.exim.org/show_bug.cgi?id=1564
+ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)
which fixes your compile bug, just to find another one...
smtp_in.c: In function ?smtp_start_session?:
smtp_in.c:1976:36: error: invalid application of ?sizeof? to incomplete type ?struct options?
EXIM_SOCKLEN_T optlen = sizeof(struct ip_options) + MAX_IPOPTLEN;
^
smtp_in.c:2023:42: error: dereferencing pointer to incomplete type
uschar *optstart = (uschar *)(ipopt->__data);
^
smtp_in.c:2053:54: error: dereferencing pointer to incomplete type
inet_ntoa(*((struct in_addr *)(&(ipopt->faddr))))))which I am trying to solve right now.
Regards, Bernd
PATCH v3 1/1 package/exim: Add optional OpenSSL support
Bernd, All,
On 2015-04-12 15:47 +0200, Bernd Kuhls spake thusly:
Quoted 30 lines
"Yann E. MORIN" <[email protected]> wrote in news:20150412134418.GA21018 at free.fr:
Quoted 4 lines
Quoted 2 lines
A further fix would be to remove use of libnsl when the C library is not glibc.
Woops, wrong, uClibc also has libnsl...
Hi,
but it is only a stub library without any function:
http://git.uclibc.org/uClibc/tree/docs/Glibc_vs_uClibc_Differences.txt
"uClibc provides a stub libnsl, but has no actual support for Network Information Service (NIS)."
Right now I am testing something like this:
(quoted diff) +3
-2-# this specific toolchain lacks libnsl -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_2014_12),y) +# only (e)glibc provides libnsl, remove -lnsl for all other toolchains +# http://bugs.exim.org/show_bug.cgi?id=1564 +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)which fixes your compile bug, just to find another one...
smtp_in.c: In function ?smtp_start_session?:
smtp_in.c:1976:36: error: invalid application of ?sizeof? to incomplete type ?struct options?
Quoted 7 lines
EXIM_SOCKLEN_T optlen = sizeof(struct ip_options) + MAX_IPOPTLEN;
^
smtp_in.c:2023:42: error: dereferencing pointer to incomplete type
uschar *optstart = (uschar *)(ipopt->__data);
^
smtp_in.c:2053:54: error: dereferencing pointer to incomplete type
inet_ntoa(*((struct in_addr *)(&(ipopt->faddr))))))Yup, got the same while investigating, too.
Quoted 1 line
which I am trying to solve right now.
Well, would it not be much simpler to just ditch support for static builds in exim? I.e. mark it as depends on !static .
Surely, static is for those few fronge architecures, and I doubt running a mail server on those is a common use-case...
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v3 1/1 package/exim: Add optional OpenSSL support
"Yann E. MORIN" <[email protected]> wrote in news:20150412135643.GB21018 at free.fr:
Quoted 7 lines
Quoted 4 lines
smtp_in.c: In function ?smtp_start_session?:
smtp_in.c:1976:36: error: invalid application of ?sizeof? to incomplete type ?struct options?EXIM_SOCKLEN_T optlen = sizeof(struct ip_options) + MAX_IPOPTLEN;Well, would it not be much simpler to just ditch support for static builds in exim? I.e. mark it as depends on !static .
Hi,
this compile bug is unrelated to static/shared linking, here is a fix
proposal: http://patchwork.ozlabs.org/patch/460496/
For the nsl problem: http://patchwork.ozlabs.org/patch/460495/
Regards, Bernd
Thomas Petazzoni
AppliedPATCH v3 1/1 package/exim: Add optional OpenSSL support
In reply to Bernd KuhlsDear Bernd Kuhls,
Quoted 6 lines · Bernd Kuhls
Also add
TARGET_MAKE_ENVtoEXIM_BUILD_CMDSto enable access to our pkg-config.Signed-off-by Bernd Kuhls <[email protected]>---
v3: Add comment aboutTARGET_MAKE_ENV(Baruch)
v2: Use pkg-config to detect openssl (Yann)
Applied, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com