From 34943c12f42c75fb853975c3fd8c97cd9ae999536446254e45a87235c334f5bb Mon Sep 17 00:00:00 2001 From: Andreas Stieger Date: Mon, 22 Sep 2014 07:33:55 +0000 Subject: [PATCH 1/2] Accepting request 250586 from home:AndreasStieger:branches:Base:System fix build with json-c 0.12 OBS-URL: https://build.opensuse.org/request/show/250586 OBS-URL: https://build.opensuse.org/package/show/Base:System/rsyslog?expand=0&rev=202 --- rsyslog-8.4.0-json-c-0.12.patch | 34 +++++++++++++++++++++++++++++++++ rsyslog.changes | 6 ++++++ rsyslog.spec | 2 ++ 3 files changed, 42 insertions(+) create mode 100644 rsyslog-8.4.0-json-c-0.12.patch diff --git a/rsyslog-8.4.0-json-c-0.12.patch b/rsyslog-8.4.0-json-c-0.12.patch new file mode 100644 index 0000000..46f8692 --- /dev/null +++ b/rsyslog-8.4.0-json-c-0.12.patch @@ -0,0 +1,34 @@ +From: Rainer Gerhards +Date: Tue Aug 19 11:33:41 2014 +0200 +Subject: build failure on systems which don't have json_tokener_errors +Upstream: Committed +References: https://github.com/rsyslog/rsyslog/commit/6b47dd542d07ed557f02af9970d1004eb262e1c1 + + bugfix: build failure on systems which don't have json_tokener_errors + + Older versions of json-c need to use a different API (which don't exists + on newer versions, unfortunately...) + Thanks to Thomas D. for reporting this problem. + +Build error: +[ 77s] msg.c: In function 'MsgSetPropsViaJSON': +[ 77s] msg.c:4077:14: error: 'json_tokener_errors' undeclared (first use in this function) +[ 77s] errMsg = json_tokener_errors[err]; + +diff --git a/runtime/msg.c b/runtime/msg.c +index 66c3b7b..81b13f9 100644 +--- a/runtime/msg.c ++++ b/runtime/msg.c +@@ -4074,7 +4074,11 @@ MsgSetPropsViaJSON(msg_t *__restrict__ const pMsg, const uchar *__restrict__ con + + err = tokener->err; + if(err != json_tokener_continue) +- errMsg = json_tokener_errors[err]; ++# if HAVE_JSON_TOKENER_ERROR_DESC ++ errMsg = json_tokener_error_desc(err); ++# else ++ errMsg = json_tokener_errors[err]; ++# endif + else + errMsg = "Unterminated input"; + } else if(!json_object_is_type(json, json_type_object)) diff --git a/rsyslog.changes b/rsyslog.changes index cb90940..4283ea0 100644 --- a/rsyslog.changes +++ b/rsyslog.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Sep 22 07:22:55 UTC 2014 - andreas.stieger@gmx.de + +- fix build with json-c 0.12 with upstream patch + rsyslog-8.4.0-json-c-0.12.patch + ------------------------------------------------------------------- Wed Sep 17 09:40:40 UTC 2014 - wagner-thomas@gmx.at diff --git a/rsyslog.spec b/rsyslog.spec index 073ec1f..ba98ff1 100644 --- a/rsyslog.spec +++ b/rsyslog.spec @@ -186,6 +186,7 @@ Source15: rsyslog.firewall # PATCH-FIX-OPENSUSE rsyslog-unit.patch crrodriguez@opensuse.org Customize upstream systemd unit for openSUSE needs. Patch0: rsyslog-unit.patch Patch1: rsyslog-8.4.0_implicit_declaration.patch +Patch2: rsyslog-8.4.0-json-c-0.12.patch # this is a dirty hack since % dir does only work for the specified directory and nothing above # but I want to be able to switch this to /etc/apparmor.d once the profiles received more testing @@ -482,6 +483,7 @@ This module provides support for ZeroMQ. %setup -q -n %{name}-%{upstream_version} -a 14 %patch0 -p1 %patch1 -p1 +%patch2 -p1 # %if %{with systemd} for file in rsyslog-service-prepare; do From 931f9e5cc2fcdd0b2013c108317a2b292c2a863824084bed21b1a616da926123 Mon Sep 17 00:00:00 2001 From: Andreas Stieger Date: Mon, 22 Sep 2014 19:53:16 +0000 Subject: [PATCH 2/2] Accepting request 251464 from home:AndreasStieger:branches:Base:System - json-c provides a compatibility pkg-config for "json". Add rsyslog-8.4.0-json-c-0.12-configure.patch to check for the required function directly. OBS-URL: https://build.opensuse.org/request/show/251464 OBS-URL: https://build.opensuse.org/package/show/Base:System/rsyslog?expand=0&rev=203 --- rsyslog-8.4.0-json-c-0.12-configure.patch | 38 +++++++++++++++++++++++ rsyslog.changes | 5 ++- rsyslog.spec | 9 ++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 rsyslog-8.4.0-json-c-0.12-configure.patch diff --git a/rsyslog-8.4.0-json-c-0.12-configure.patch b/rsyslog-8.4.0-json-c-0.12-configure.patch new file mode 100644 index 0000000..bc00746 --- /dev/null +++ b/rsyslog-8.4.0-json-c-0.12-configure.patch @@ -0,0 +1,38 @@ +From: Andreas Stieger +Subject: [PATCH] fix build with json-c 0.12 if it provides a compatibility json.pc +Date: Mon, 22 Sep 2014 20:40:53 +0100 +Upstream: submitting +References: + +json-c on openSUSE provides a compatibility pkg-config for "json". +The autoconf check find it first, assuming it does not provide +the function json_tokener_error_desc. Check for availability of +function using AC_CHECK_FUNCS instead. + +--- + configure.ac | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: rsyslog-8.4.0/configure.ac +=================================================================== +--- rsyslog-8.4.0.orig/configure.ac 2014-08-18 10:41:34.000000000 +0100 ++++ rsyslog-8.4.0/configure.ac 2014-09-22 20:34:18.000000000 +0100 +@@ -32,14 +32,16 @@ PKG_PROG_PKG_CONFIG + PKG_CHECK_MODULES(LIBESTR, libestr >= 0.1.9) + PKG_CHECK_MODULES(LIBLOGGING_STDLOG, liblogging-stdlog >= 1.0.3) + PKG_CHECK_MODULES([JSON_C], [json],, [ +- PKG_CHECK_MODULES([JSON_C], [json-c], +- [AC_DEFINE([HAVE_JSON_TOKENER_ERROR_DESC], [1], [we have the newer JSON-C API])]) ++ PKG_CHECK_MODULES([JSON_C], [json-c],,) + ]) + + # if int64 is supported, use it + AC_CHECK_LIB(json-c, json_object_new_object,,) + AC_CHECK_FUNCS(json_object_new_int64,,) + ++# look for newer API ++AC_CHECK_FUNCS(json_tokener_error_desc,,) ++ + case "${host}" in + *-*-linux*) + AC_DEFINE([OS_LINUX], [1], [Indicator for a Linux OS]) diff --git a/rsyslog.changes b/rsyslog.changes index 4283ea0..b906a16 100644 --- a/rsyslog.changes +++ b/rsyslog.changes @@ -1,8 +1,11 @@ ------------------------------------------------------------------- -Mon Sep 22 07:22:55 UTC 2014 - andreas.stieger@gmx.de +Mon Sep 22 19:50:42 UTC 2014 - andreas.stieger@gmx.de - fix build with json-c 0.12 with upstream patch rsyslog-8.4.0-json-c-0.12.patch +- json-c provides a compatibility pkg-config for "json". Add + rsyslog-8.4.0-json-c-0.12-configure.patch to check for the + required function directly. ------------------------------------------------------------------- Wed Sep 17 09:40:40 UTC 2014 - wagner-thomas@gmx.at diff --git a/rsyslog.spec b/rsyslog.spec index ba98ff1..95fd597 100644 --- a/rsyslog.spec +++ b/rsyslog.spec @@ -90,6 +90,11 @@ BuildRequires: pkgconfig(libsystemd-journal) >= 197 Requires(pre): %insserv_prereq %fillup_prereq /etc/init.d/syslog BuildRequires: klogd %endif +# for Patch3 rsyslog-8.4.0-json-c-0.12-configure.patch +BuildRequires: autoconf >= 2.61 +BuildRequires: automake +BuildRequires: libtool +# BuildRequires: bison BuildRequires: flex BuildRequires: openssl-devel >= 0.9.7 @@ -187,6 +192,7 @@ Source15: rsyslog.firewall Patch0: rsyslog-unit.patch Patch1: rsyslog-8.4.0_implicit_declaration.patch Patch2: rsyslog-8.4.0-json-c-0.12.patch +Patch3: rsyslog-8.4.0-json-c-0.12-configure.patch # this is a dirty hack since % dir does only work for the specified directory and nothing above # but I want to be able to switch this to /etc/apparmor.d once the profiles received more testing @@ -484,6 +490,7 @@ This module provides support for ZeroMQ. %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 # %if %{with systemd} for file in rsyslog-service-prepare; do @@ -495,6 +502,8 @@ done %endif %build +# for Patch3 rsyslog-8.4.0-json-c-0.12-configure.patch +autoreconf -fiv export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -W -Wall -I../grammar -I../../grammar" # needs java # --enable-gui \