[Buildroot] [git commit branch/2018.08.x] libssh: fix build with musl libc

Peter Korsgaard peter at korsgaard.com
Wed Oct 24 11:12:34 UTC 2018


commit: https://git.buildroot.net/buildroot/commit/?id=dc27fae5c2a8941fd7a44de2a79474eeaaf77e36
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2018.08.x

libssh uses GNU extensions to the glob() API. Update the cmake test to
take that into account so that glob() is not used with musl libc.

Fixes:
http://autobuild.buildroot.net/results/0c2/0c2d17316fd6bd2bf1359e23a2a1273fa349cf2a/
http://autobuild.buildroot.net/results/936/936abac5362b33980fd1efe8b830409ee2f86f6b/
http://autobuild.buildroot.net/results/51b/51b1b136ab4209ee443c1b450a932341b2ff81b7/

Cc: Scott Fan <fancp2007 at gmail.com>
Signed-off-by: Baruch Siach <baruch at tkos.co.il>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
(cherry picked from commit 81e33bc77ce659cb0f42e801a449bfdfa6af491a)
Signed-off-by: Peter Korsgaard <peter at korsgaard.com>
---
 ...ake-check-for-GNU-compatible-glob-support.patch | 44 ++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/package/libssh/0001-cmake-check-for-GNU-compatible-glob-support.patch b/package/libssh/0001-cmake-check-for-GNU-compatible-glob-support.patch
new file mode 100644
index 0000000000..139879b86c
--- /dev/null
+++ b/package/libssh/0001-cmake-check-for-GNU-compatible-glob-support.patch
@@ -0,0 +1,44 @@
+From 3bb8b5e4517a720d178dbe5c53b4a444d718bcf1 Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch at tkos.co.il>
+Date: Fri, 14 Sep 2018 15:19:48 +0300
+Subject: [PATCH] cmake: check for GNU compatible glob support
+
+The GLOB_TILDE flag is a GNU extension. musl libc does not implement
+this extension, which leads to build failure:
+
+.../libssh-0.8.1/src/config.c: In function 'local_parse_glob':
+/home/buildroot/autobuild/run/instance-1/output/build/libssh-0.8.1/src/config.c:329:10: error: 'glob_t {aka struct <anonymous>}' has no member named 'gl_flags'; did you mean 'gl_offs'?
+         .gl_flags = 0,
+          ^~~~~~~~
+          gl_offs
+.../libssh-0.8.1/src/config.c:334:25: error: 'GLOB_TILDE' undeclared (first use in this function); did you mean '_IO_FILE'?
+     rt = glob(fileglob, GLOB_TILDE, NULL, &globbuf);
+                         ^~~~~~~~~~
+                         _IO_FILE
+
+Check for GLOB_TILDE directly to make sure the libc provides the
+required extension.
+
+Signed-off-by: Baruch Siach <baruch at tkos.co.il>
+---
+Upstream status: https://www.libssh.org/archive/libssh/2018-09/0000020.html
+
+ ConfigureChecks.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
+index f91bd038f5a3..dac61bcf678e 100644
+--- a/ConfigureChecks.cmake
++++ b/ConfigureChecks.cmake
+@@ -156,7 +156,7 @@ check_function_exists(explicit_bzero HAVE_EXPLICIT_BZERO)
+ check_function_exists(memset_s HAVE_MEMSET_S)
+ 
+ if (HAVE_GLOB_H)
+-  check_function_exists(glob HAVE_GLOB)
++  check_symbol_exists(GLOB_TILDE "glob.h" HAVE_GLOB)
+ endif (HAVE_GLOB_H)
+ 
+ if (NOT WIN32)
+-- 
+2.18.0
+


More information about the buildroot mailing list