From patchwork Sat Jun 2 16:13:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Petazzoni X-Patchwork-Id: 162429 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id C1768B700E for ; Sun, 3 Jun 2012 02:14:48 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 7AAB131F36; Sat, 2 Jun 2012 16:14:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NxAayE1pDwds; Sat, 2 Jun 2012 16:14:33 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id B86633175E; Sat, 2 Jun 2012 16:14:22 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id BCD9A8F753 for ; Sat, 2 Jun 2012 16:14:19 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id B295E9057E for ; Sat, 2 Jun 2012 16:14:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nG27yS8E5rqT for ; Sat, 2 Jun 2012 16:14:18 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail.free-electrons.com (mail.free-electrons.com [88.190.12.23]) by whitealder.osuosl.org (Postfix) with ESMTP id 305AC8F6CD for ; Sat, 2 Jun 2012 16:14:18 +0000 (UTC) Received: by mail.free-electrons.com (Postfix, from userid 106) id 68A7E231; Sat, 2 Jun 2012 18:13:19 +0200 (CEST) Received: from localhost (unknown [78.250.250.16]) by mail.free-electrons.com (Postfix) with ESMTPSA id 4BF1F195 for ; Sat, 2 Jun 2012 18:13:08 +0200 (CEST) From: Thomas Petazzoni To: buildroot@busybox.net Date: Sat, 2 Jun 2012 18:13:53 +0200 Message-Id: X-Mailer: git-send-email 1.7.9.5 In-Reply-To: References: In-Reply-To: References: Subject: [Buildroot] [PATCH 03/10] libxmlrpc: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Thomas Petazzoni --- package/Config.in | 1 + package/libxmlrpc/Config.in | 10 +++++ .../libxmlrpc/libxmlrpc-fix-gennmtab-build.patch | 25 +++++++++++ .../libxmlrpc-fix-non-cplusplus-build.patch | 27 ++++++++++++ .../libxmlrpc/libxmlrpc-fix-non-wchar-build.patch | 24 +++++++++++ .../libxmlrpc-remove-curl-types-h-include.patch | 43 +++++++++++++++++++ .../libxmlrpc-use-correct-curl-config.patch | 22 ++++++++++ package/libxmlrpc/libxmlrpc.mk | 44 ++++++++++++++++++++ 8 files changed, 196 insertions(+) create mode 100644 package/libxmlrpc/Config.in create mode 100644 package/libxmlrpc/libxmlrpc-fix-gennmtab-build.patch create mode 100644 package/libxmlrpc/libxmlrpc-fix-non-cplusplus-build.patch create mode 100644 package/libxmlrpc/libxmlrpc-fix-non-wchar-build.patch create mode 100644 package/libxmlrpc/libxmlrpc-remove-curl-types-h-include.patch create mode 100644 package/libxmlrpc/libxmlrpc-use-correct-curl-config.patch create mode 100644 package/libxmlrpc/libxmlrpc.mk diff --git a/package/Config.in b/package/Config.in index 61f3fec..044b59b 100644 --- a/package/Config.in +++ b/package/Config.in @@ -468,6 +468,7 @@ source "package/json-c/Config.in" source "package/libroxml/Config.in" source "package/libxml-parser-perl/Config.in" source "package/libxml2/Config.in" +source "package/libxmlrpc/Config.in" source "package/libxslt/Config.in" source "package/libyaml/Config.in" source "package/mxml/Config.in" diff --git a/package/libxmlrpc/Config.in b/package/libxmlrpc/Config.in new file mode 100644 index 0000000..26e4a52 --- /dev/null +++ b/package/libxmlrpc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBXMLRPC + bool "libxmlrpc" + select BR2_PACKAGE_LIBCURL + help + XML-RPC is a quick-and-easy way to make procedure calls over + the Internet. It converts the procedure call into an XML + document, sends it to a remote server using HTTP, and gets + back the response as XML. + + http://xmlrpc-c.sourceforge.net/ diff --git a/package/libxmlrpc/libxmlrpc-fix-gennmtab-build.patch b/package/libxmlrpc/libxmlrpc-fix-gennmtab-build.patch new file mode 100644 index 0000000..8cdd932 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc-fix-gennmtab-build.patch @@ -0,0 +1,25 @@ +Fix build of host tool + +genmtab is a tool that needs to be built for the host as it is used +during the compilation process of libxmlrpc. Its Makefile needs a bit +of tuning to use the conventional CC_FOR_BUILD, CFLAGS_FOR_BUILD and +LDFLAGS_FOR_BUILD variables. + +Signed-off-by: Thomas Petazzoni + +Index: b/lib/expat/gennmtab/Makefile +=================================================================== +--- a/lib/expat/gennmtab/Makefile ++++ b/lib/expat/gennmtab/Makefile +@@ -40,9 +40,9 @@ + dep: dep-common + + gennmtab.o:%.o:%.c +- $(BUILDTOOL_CC) -c $< -o $@ $(CFLAGS_ALL) $(INCLUDES) ++ $(CC_FOR_BUILD) -c $< -o $@ $(CFLAGS_FOR_BUILD) $(INCLUDES) + + gennmtab:%:%.o +- $(BUILDTOOL_CCLD) -o $@ $(LDFLAGS) $^ ++ $(CC_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $^ + + include depend.mk diff --git a/package/libxmlrpc/libxmlrpc-fix-non-cplusplus-build.patch b/package/libxmlrpc/libxmlrpc-fix-non-cplusplus-build.patch new file mode 100644 index 0000000..ed47ff7 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc-fix-non-cplusplus-build.patch @@ -0,0 +1,27 @@ +Handle builds without C++ + +libxmlrpc nicely handles the fact of being built without C++ support, +except for one location, fixed by this patch. + +Signed-off-by: Thomas Petazzoni + +Index: b/lib/util/Makefile +=================================================================== +--- a/lib/util/Makefile ++++ b/lib/util/Makefile +@@ -36,11 +36,14 @@ + LIBOBJS = \ + casprintf.o \ + cmdline_parser.o \ +- cmdline_parser_cpp.o \ + getoptx.o \ + string_parser.o \ + stripcaseeq.o \ + ++ifeq ($(ENABLE_CPLUSPLUS),yes) ++LIBOBJS += cmdline_parser_cpp.o ++endif ++ + .PHONY: all + all: $(LIBOBJS) + diff --git a/package/libxmlrpc/libxmlrpc-fix-non-wchar-build.patch b/package/libxmlrpc/libxmlrpc-fix-non-wchar-build.patch new file mode 100644 index 0000000..7df1fc8 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc-fix-non-wchar-build.patch @@ -0,0 +1,24 @@ +Disable wide-char specific code + +The vast majority of the libxmlrpc code nicely handles the absence of +wide char support, except at one location, which is fixed by this +patch. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/xmlrpc_decompose.c +=================================================================== +--- a/src/xmlrpc_decompose.c ++++ b/src/xmlrpc_decompose.c +@@ -221,7 +221,11 @@ + xmlrpc_strfree(*decompRootP->store.Tstring.valueP); + break; + case 'w': ++#if HAVE_UNICODE_WCHAR + free((void*)*decompRootP->store.TwideString.valueP); ++#else ++ XMLRPC_ASSERT(false); ++#endif + break; + case '6': + free((void*)*decompRootP->store.TbitString.valueP); diff --git a/package/libxmlrpc/libxmlrpc-remove-curl-types-h-include.patch b/package/libxmlrpc/libxmlrpc-remove-curl-types-h-include.patch new file mode 100644 index 0000000..3688bd3 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc-remove-curl-types-h-include.patch @@ -0,0 +1,43 @@ +Do not include + +In recent versions of Curl, no longer exists, and + should be used instead. + +Signed-off-by: Thomas Petazzoni + +Index: b/lib/curl_transport/curlmulti.c +=================================================================== +--- a/lib/curl_transport/curlmulti.c ++++ b/lib/curl_transport/curlmulti.c +@@ -19,7 +19,6 @@ + #endif + + #include +-#include + #include + #include + +Index: b/lib/curl_transport/curltransaction.c +=================================================================== +--- a/lib/curl_transport/curltransaction.c ++++ b/lib/curl_transport/curltransaction.c +@@ -17,7 +17,6 @@ + #include "version.h" + + #include +-#include + #include + + #include "curlversion.h" +Index: b/lib/curl_transport/xmlrpc_curl_transport.c +=================================================================== +--- a/lib/curl_transport/xmlrpc_curl_transport.c ++++ b/lib/curl_transport/xmlrpc_curl_transport.c +@@ -85,7 +85,6 @@ + #include "xmlrpc-c/time_int.h" + + #include +-#include + #include + #include + diff --git a/package/libxmlrpc/libxmlrpc-use-correct-curl-config.patch b/package/libxmlrpc/libxmlrpc-use-correct-curl-config.patch new file mode 100644 index 0000000..55b72a1 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc-use-correct-curl-config.patch @@ -0,0 +1,22 @@ +Use correct curl-config program + +Instead of calling again curl-config in src/Makefile (which ends up +calling the wrong curl-config: the one in the PATH instead of the one +pointed at by the environment variables at configure time), let's use +the CURL_LDADD variable which was computed at configure time. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -56,7 +56,7 @@ + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curltransaction + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curlmulti + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/lock_pthread +- TRANSPORT_LIBDEP += $(shell curl-config --libs) ++ TRANSPORT_LIBDEP += $(CURL_LDADD) + endif + ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes) + TRANSPORT_MODS += $(BLDDIR)/lib/libwww_transport/xmlrpc_libwww_transport diff --git a/package/libxmlrpc/libxmlrpc.mk b/package/libxmlrpc/libxmlrpc.mk new file mode 100644 index 0000000..8c9fe49 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc.mk @@ -0,0 +1,44 @@ +############################################################# +# +# libxmlrpc +# +############################################################# +LIBXMLRPC_VERSION = 1.18.05 +LIBXMLRPC_SOURCE = xmlrpc-c-$(LIBXMLRPC_VERSION).tgz +LIBXMLRPC_SITE = "http://xmlrpc-c.svn.sourceforge.net/viewvc/xmlrpc-c/advanced/?view=tar&pathrev=1716" +LIBXMLRPC_INSTALL_STAGING = YES +LIBXMLRPC_DEPENDENCIES = libcurl +LIBXMLRPC_MAKE = $(MAKE1) + +LIBXMLRPC_CONF_OPT = \ + $(if $(BR2_USE_WCHAR),,ac_cv_header_wchar_h=no) \ + $(if $(BR2_INSTALL_LIBSTDCPP),,--disable-cplusplus) \ + have_curl_config=$(STAGING_DIR)/usr/bin/curl-config \ + CURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config + +# Our package uses autoconf, but not automake, so we need to pass +# those variables at compile time as well. +LIBXMLRPC_MAKE_ENV = \ + CC_FOR_BUILD="$(HOSTCC)" \ + LD_FOR_BUILD="$(HOSTLD)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" + +define LIBXMLRPC_REMOVE_DEVFILE + $(RM) $(TARGET_DIR)/usr/bin/xmlrpc-c-config +endef + +ifeq ($(BR2_HAVE_DEVFILES),) +LIBXMLRPC_POST_INSTALL_TARGET_HOOKS += LIBXMLRPC_REMOVE_DEVFILE +endif + +$(eval $(call AUTOTARGETS)) + +# Override the download step since we don't have the normal +# site/source split (where site is the URL of the directory and source +# is the name of the tarball file). +$(LIBXMLRPC_DIR)/.stamp_downloaded: + $(Q)$(call MESSAGE,"Downloading") + $(call DOWNLOAD,$(LIBXMLRPC_SITE),$(LIBXMLRPC_SOURCE)) + $(Q)mkdir -p $(@D) + $(Q)touch $@