diff mbox series

[v2,1/1] package/rtty: fix build with mbedtls but without zlib

Message ID 20200830214042.1340329-1-fontaine.fabrice@gmail.com
State Accepted
Headers show
Series [v2,1/1] package/rtty: fix build with mbedtls but without zlib | expand

Commit Message

Fabrice Fontaine Aug. 30, 2020, 9:40 p.m. UTC
zlib is not mandatory with mbedtls, only optional, however as mbedtls
does not provide a pkg-config file, we assume that if zlib is
available, we must link with it to avoid a build failure when linking
statically with a zlib-enabled mbedtls.

This change was pushed upstream with
https://github.com/zhaojh329/rtty/commit/7b8efe11dbafce97971dc130bf6cc1756f34ce07
and is in buildroot since the bump to version 7.1.4 with commit
0c80245ddbe78c8e443f98b9bbccac56331cdb26.
However, this change will raise a build failure if ZLIB_LIBRARIES is
used when zlib is not found. This patch is fixing this build failure.

However, it should be noted that the compression support in mbedtls is
only enabled if BR2_PACKAGE_MBEDTLS_COMPRESSION=y. So we can have a
situation where mbedtls is enabled, zlib is enabled, but mbedtls is not
using zlib and as a result, since version 7.1.4, rttyt will needlessly
link with zlib in such a situation.

The only sane way to fix this is to use pkg-config, but as mbedtls
apparently doesn't provide any .pc file, we leave it as it is.

Fixes:
 - http://autobuild.buildroot.org/results/a0ebffe58bbf14cab74b7d2111d4d88a9c725273

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
Changes v1 -> v2 (after review of Thomas Petazzoni):
 - Extend commit message

 ...xt-fix-build-with-mbedtls-but-withou.patch | 47 +++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100644 package/rtty/0001-src-CMakeLists.txt-fix-build-with-mbedtls-but-withou.patch

Comments

Peter Korsgaard Aug. 31, 2020, 1:20 p.m. UTC | #1
>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:

 > zlib is not mandatory with mbedtls, only optional, however as mbedtls
 > does not provide a pkg-config file, we assume that if zlib is
 > available, we must link with it to avoid a build failure when linking
 > statically with a zlib-enabled mbedtls.

 > This change was pushed upstream with
 > https://github.com/zhaojh329/rtty/commit/7b8efe11dbafce97971dc130bf6cc1756f34ce07
 > and is in buildroot since the bump to version 7.1.4 with commit
 > 0c80245ddbe78c8e443f98b9bbccac56331cdb26.
 > However, this change will raise a build failure if ZLIB_LIBRARIES is
 > used when zlib is not found. This patch is fixing this build failure.

 > However, it should be noted that the compression support in mbedtls is
 > only enabled if BR2_PACKAGE_MBEDTLS_COMPRESSION=y. So we can have a
 > situation where mbedtls is enabled, zlib is enabled, but mbedtls is not
 > using zlib and as a result, since version 7.1.4, rttyt will needlessly
 > link with zlib in such a situation.

 > The only sane way to fix this is to use pkg-config, but as mbedtls
 > apparently doesn't provide any .pc file, we leave it as it is.

 > Fixes:
 >  - http://autobuild.buildroot.org/results/a0ebffe58bbf14cab74b7d2111d4d88a9c725273

 > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
 > ---
 > Changes v1 -> v2 (after review of Thomas Petazzoni):
 >  - Extend commit message

Committed, thanks.
diff mbox series

Patch

diff --git a/package/rtty/0001-src-CMakeLists.txt-fix-build-with-mbedtls-but-withou.patch b/package/rtty/0001-src-CMakeLists.txt-fix-build-with-mbedtls-but-withou.patch
new file mode 100644
index 0000000000..b7275462af
--- /dev/null
+++ b/package/rtty/0001-src-CMakeLists.txt-fix-build-with-mbedtls-but-withou.patch
@@ -0,0 +1,47 @@ 
+From 0982308255dd3fd70e7b93aa88a8f3c5b9c1b845 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sun, 30 Aug 2020 21:15:06 +0200
+Subject: [PATCH] src/CMakeLists.txt: fix build with mbedtls but without zlib
+
+Building with mbedtls but without zlib will result in the following
+build failure:
+
+-- Found MbedTLS: /home/peko/autobuild/instance-0/output-1/per-package/rtty/host/powerpc64-buildroot-linux-gnu/sysroot/usr/lib/libmbedtls.so (found version "2.16.7")
+-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
+-- Select MbedTLS(PolarSSL) as the SSL backend
+CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
+Please set them or make sure they are set and tested correctly in the CMake files:
+ZLIB_LIBRARY
+    linked by target "rtty" in directory /home/peko/autobuild/instance-0/output-1/build/rtty-7.1.4/src
+
+-- Configuring incomplete, errors occurred!
+
+Fixes:
+ - http://autobuild.buildroot.org/results/a0ebffe58bbf14cab74b7d2111d4d88a9c725273
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Upstream status: https://github.com/zhaojh329/rtty/pull/77]
+---
+ src/CMakeLists.txt | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 10f6626..d09e848 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -77,7 +77,11 @@ else()
+     elseif(RTTY_USE_MBEDTLS)
+         set(SSL_NAME "MbedTLS(PolarSSL)")
+         set(SSL_INC ${MBEDTLS_INCLUDE_DIR})
+-        set(SSL_LIB ${MBEDTLS_LIBRARIES} ${ZLIB_LIBRARIES})
++        if(ZLIB_FOUND)
++            set(SSL_LIB ${MBEDTLS_LIBRARIES} ${ZLIB_LIBRARIES})
++        else()
++            set(SSL_LIB ${MBEDTLS_LIBRARIES}) 
++        endif()
+         set(RTTY_HAVE_MBEDTLS_CONFIG 1)
+     endif()
+ 
+-- 
+2.28.0
+