libubox: correct json-c handling
authorPeter Korsgaard <peter@korsgaard.com>
Tue, 25 Mar 2014 22:51:54 +0000 (23:51 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Tue, 25 Mar 2014 22:51:54 +0000 (23:51 +0100)
Fixes http://autobuild.buildroot.net/results/5a8/5a85e0e132f38a4a1a42c2b041f66003b64e748a/
(and a bunch of similar failures)

libubox has optional json-c handling, including the legacy version which
used libjson.so.  Unfortunately this support is buggy, so we end up with the
wrong compiler flags, and more importantly it gets confused if libjson is
enabled, as that also provides a (incompatible) libjson.so.

Fix it by disabling the legacy handling.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/libubox/libubox-01-drop-legacy-json-c.patch [new file with mode: 0644]
package/libubox/libubox.mk

diff --git a/package/libubox/libubox-01-drop-legacy-json-c.patch b/package/libubox/libubox-01-drop-legacy-json-c.patch
new file mode 100644 (file)
index 0000000..84bd99a
--- /dev/null
@@ -0,0 +1,34 @@
+[PATCH] libubox: drop legacy json-c support
+
+The cmake logic is wrong (E.G. PKG_CHECK_FOR_MODULES fails unless all
+modules are found), and the legacy libjson.so name is also used by the other
+libjson (http://sourceforge.net/projects/libjson/) which provides an
+incompatible API, so just drop it.
+
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ CMakeLists.txt |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: libubox-bbd846ec2d72b2629758b69dc122ac0b0f2c3e4b/CMakeLists.txt
+===================================================================
+--- libubox-bbd846ec2d72b2629758b69dc122ac0b0f2c3e4b.orig/CMakeLists.txt
++++ libubox-bbd846ec2d72b2629758b69dc122ac0b0f2c3e4b/CMakeLists.txt
+@@ -13,7 +13,7 @@
+ ENDIF()
+ INCLUDE(FindPkgConfig)
+-PKG_CHECK_MODULES(JSONC json-c json)
++PKG_CHECK_MODULES(JSONC json-c)
+ IF(JSONC_FOUND)
+   ADD_DEFINITIONS(-DJSONC)
+   INCLUDE_DIRECTORIES(${JSONC_INCLUDE_DIRS})
+@@ -42,7 +42,7 @@
+ ADD_SUBDIRECTORY(lua)
+-find_library(json NAMES json-c json)
++find_library(json NAMES json-c)
+ IF(EXISTS ${json})
+       ADD_LIBRARY(blobmsg_json SHARED blobmsg_json.c)
+       TARGET_LINK_LIBRARIES(blobmsg_json ubox ${json})
index 0743acca1e96c64c92f775bc1eaebe3043751ce1..28d5c636a7ddcb0d61d8c975fdbdf188b744a06c 100644 (file)
@@ -8,6 +8,7 @@ LIBUBOX_VERSION = bbd846ec2d72b2629758b69dc122ac0b0f2c3e4b
 LIBUBOX_SITE = git://nbd.name/luci2/libubox.git
 LIBUBOX_LICENSE = LGPLv2.1, GPLv2, BSD-3c, MIT
 LIBUBOX_INSTALL_STAGING = YES
+LIBUBOX_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_JSON_C),json-c)
 
 ifeq ($(BR2_PACKAGE_LUA),y)
        LIBUBOX_DEPENDENCIES += lua