summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMykyta Holubakha <hilobakho@gmail.com>2017-12-27 01:48:38 +0200
committerDavid Seifert <soap@gentoo.org>2017-12-27 16:57:11 +0100
commit402056b57722e365689a733479e00e3d5ebd432a (patch)
treee660dc8dcc2ad088671a081acf3040aa7395e006 /dev-libs
parentdev-python/pyblake2: add ~amd64-fbsd, ~x86-fbsd KEYWORDS. (diff)
downloadgentoo-402056b57722e365689a733479e00e3d5ebd432a.tar.gz
gentoo-402056b57722e365689a733479e00e3d5ebd432a.tar.bz2
gentoo-402056b57722e365689a733479e00e3d5ebd432a.zip
dev-libs/sway: json-c-0.13.0 fixes
Closes: https://bugs.gentoo.org/641684 Closes: https://github.com/gentoo/gentoo/pull/6646
Diffstat (limited to 'dev-libs')
-rw-r--r--dev-libs/sway/files/sway-0.15.0-json-c-fixes.patch370
-rw-r--r--dev-libs/sway/sway-0.15.0.ebuild2
-rw-r--r--dev-libs/sway/sway-9999.ebuild2
3 files changed, 374 insertions, 0 deletions
diff --git a/dev-libs/sway/files/sway-0.15.0-json-c-fixes.patch b/dev-libs/sway/files/sway-0.15.0-json-c-fixes.patch
new file mode 100644
index 000000000000..1e43eda62e81
--- /dev/null
+++ b/dev-libs/sway/files/sway-0.15.0-json-c-fixes.patch
@@ -0,0 +1,370 @@
+From c6e12368a531dd4bbb0778c9a1dd5d3fb935c197 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
+Date: Thu, 14 Dec 2017 01:30:54 +0100
+Subject: [PATCH 1/3] Lift restriction on json-c <= 0.12.1
+
+---
+ CMakeLists.txt | 2 +-
+ README.de.md | 2 +-
+ README.el.md | 2 +-
+ README.fr.md | 2 +-
+ README.it.md | 2 +-
+ README.ja.md | 2 +-
+ README.md | 2 +-
+ README.pt.md | 2 +-
+ README.ru.md | 2 +-
+ README.uk.md | 2 +-
+ 10 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index dc521570..bd12b191 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -59,7 +59,7 @@ if (LD_LIBRARY_PATH)
+ add_definitions(-D_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}")
+ endif()
+
+-find_package(JsonC 0.12.1 REQUIRED)
++find_package(JsonC REQUIRED)
+ find_package(PCRE REQUIRED)
+ find_package(WLC REQUIRED)
+ find_package(Wayland REQUIRED)
+diff --git a/README.de.md b/README.de.md
+index 701cc34f..293ffe70 100644
+--- a/README.de.md
++++ b/README.de.md
+@@ -60,7 +60,7 @@ Abhängigkeiten:
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.el.md b/README.el.md
+index df39364f..eba97b9c 100644
+--- a/README.el.md
++++ b/README.el.md
+@@ -53,7 +53,7 @@ To username μου στο Freenode είναι kon14 και θα με βρείτ
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.fr.md b/README.fr.md
+index 47b6c410..a4ff7cb9 100644
+--- a/README.fr.md
++++ b/README.fr.md
+@@ -55,7 +55,7 @@ Installez les dépendances :
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.it.md b/README.it.md
+index f5e0d8e2..ded441c3 100644
+--- a/README.it.md
++++ b/README.it.md
+@@ -56,7 +56,7 @@ Installa queste dipendenze:
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.ja.md b/README.ja.md
+index 2e8f9bfb..94b4ce9d 100644
+--- a/README.ja.md
++++ b/README.ja.md
+@@ -46,7 +46,7 @@ Swayは沢山のディストリビューションで提供されています。"
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.md b/README.md
+index 29e8a674..eeca9f88 100644
+--- a/README.md
++++ b/README.md
+@@ -61,7 +61,7 @@ Install dependencies:
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.pt.md b/README.pt.md
+index b5ca132f..e35849ec 100644
+--- a/README.pt.md
++++ b/README.pt.md
+@@ -62,7 +62,7 @@ Antes de iniciar a compilação, instale as dependências:
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.ru.md b/README.ru.md
+index 4035b0fc..1551caa0 100644
+--- a/README.ru.md
++++ b/README.ru.md
+@@ -55,7 +55,7 @@ Sway доступен во многих дистрибутивах и наход
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+diff --git a/README.uk.md b/README.uk.md
+index 2e107afc..c8520e4b 100644
+--- a/README.uk.md
++++ b/README.uk.md
+@@ -62,7 +62,7 @@ Sway доступний у багатьох дистрибутивах Linux (а
+ * libcap
+ * asciidoc
+ * pcre
+-* json-c <= 0.12.1
++* json-c
+ * pango
+ * cairo
+ * gdk-pixbuf2 *
+
+From 8272a9bae0d288b479c517dde3e831ea3889dc7f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
+Date: Thu, 14 Dec 2017 16:44:18 +0100
+Subject: [PATCH 2/3] ipc-server: Acquire ownership of referenced json_object
+ properly
+
+When adding a referenced json_object with an unknown lifetime to
+another json_object, it must be done with a wrapped call to
+json_object_get() to acquire the ownership of that json_object.
+---
+ sway/ipc-server.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/sway/ipc-server.c b/sway/ipc-server.c
+index b560b930..80f4e5d0 100644
+--- a/sway/ipc-server.c
++++ b/sway/ipc-server.c
+@@ -1126,7 +1126,8 @@ static void ipc_event_binding(json_object *sb_obj) {
+ sway_log(L_DEBUG, "Sending binding::run event");
+ json_object *obj = json_object_new_object();
+ json_object_object_add(obj, "change", json_object_new_string("run"));
+- json_object_object_add(obj, "binding", sb_obj);
++ // sb_obj gets owned by the temporary json_object, too.
++ json_object_object_add(obj, "binding", json_object_get(sb_obj));
+
+ const char *json_string = json_object_to_json_string(obj);
+ ipc_send_event(json_string, IPC_EVENT_BINDING);
+
+From 02da9c4e7cafb36083566e511cc7913d8922aaa6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
+Date: Thu, 14 Dec 2017 17:14:47 +0100
+Subject: [PATCH 3/3] Adaptions for API change in json-c v0.13
+
+---
+ include/sway_json_helper.h | 16 ++++++++++++++++
+ include/swaygrab/json.h | 2 +-
+ sway/ipc-server.c | 4 ++--
+ swaybar/status_line.c | 5 ++---
+ swaygrab/json.c | 9 ++++-----
+ swaylock/main.c | 4 ++--
+ swaymsg/main.c | 4 ++--
+ 7 files changed, 29 insertions(+), 15 deletions(-)
+ create mode 100644 include/sway_json_helper.h
+
+diff --git a/include/sway_json_helper.h b/include/sway_json_helper.h
+new file mode 100644
+index 00000000..66f9cff1
+--- /dev/null
++++ b/include/sway_json_helper.h
+@@ -0,0 +1,16 @@
++#ifndef _SWAY_JSON_HELPER_H
++#define _SWAY_JSON_HELPER_H
++
++#include <json-c/json.h>
++
++// Macros for checking a specific version.
++#define JSON_C_VERSION_013 (13 << 8)
++
++// json-c v0.13 uses size_t for array_list_length().
++#if defined(JSON_C_VERSION_NUM) && JSON_C_VERSION_NUM >= JSON_C_VERSION_013
++typedef size_t json_ar_len_t;
++#else
++typedef int json_ar_len_t;
++#endif
++
++#endif // _SWAY_JSON_HELPER_H
+diff --git a/include/swaygrab/json.h b/include/swaygrab/json.h
+index c1093ef1..c0bd8587 100644
+--- a/include/swaygrab/json.h
++++ b/include/swaygrab/json.h
+@@ -1,4 +1,4 @@
+-#include <json-c/json.h>
++#include "sway_json_helper.h"
+ #include "wlc/wlc.h"
+
+ void init_json_tree(int socketfd);
+diff --git a/sway/ipc-server.c b/sway/ipc-server.c
+index 80f4e5d0..e10445cf 100644
+--- a/sway/ipc-server.c
++++ b/sway/ipc-server.c
+@@ -15,7 +15,6 @@
+ #include <stdlib.h>
+ #include <sys/ioctl.h>
+ #include <fcntl.h>
+-#include <json-c/json.h>
+ #include <list.h>
+ #include <libinput.h>
+ #ifdef __linux__
+@@ -25,6 +24,7 @@ struct ucred {
+ gid_t gid;
+ };
+ #endif
++#include "sway_json_helper.h"
+ #include "sway/ipc-json.h"
+ #include "sway/ipc-server.h"
+ #include "sway/security.h"
+@@ -724,7 +724,7 @@ void ipc_client_handle_command(struct ipc_client *client) {
+ }
+
+ // parse requested event types
+- for (int i = 0; i < json_object_array_length(request); i++) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(request); i++) {
+ const char *event_type = json_object_get_string(json_object_array_get_idx(request, i));
+ if (strcmp(event_type, "workspace") == 0) {
+ client->subscribed_events |= event_mask(IPC_EVENT_WORKSPACE);
+diff --git a/swaybar/status_line.c b/swaybar/status_line.c
+index 87e90caf..e3cc0bf4 100644
+--- a/swaybar/status_line.c
++++ b/swaybar/status_line.c
+@@ -2,8 +2,8 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+-#include <json-c/json.h>
+
++#include "sway_json_helper.h"
+ #include "swaybar/config.h"
+ #include "swaybar/status_line.h"
+ #include "log.h"
+@@ -70,8 +70,7 @@ static void parse_json(struct bar *bar, const char *text) {
+
+ bar->status->block_line = create_list();
+
+- int i;
+- for (i = 0; i < json_object_array_length(results); ++i) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(results); ++i) {
+ json_object *full_text, *short_text, *color, *min_width, *align, *urgent;
+ json_object *name, *instance, *separator, *separator_block_width;
+ json_object *background, *border, *border_top, *border_bottom;
+diff --git a/swaygrab/json.c b/swaygrab/json.c
+index 286085c3..f0e8fa90 100644
+--- a/swaygrab/json.c
++++ b/swaygrab/json.c
+@@ -50,8 +50,7 @@ static json_object *get_focused_container_r(json_object *c) {
+ } else {
+ json_object *nodes, *node, *child;
+ json_object_object_get_ex(c, "nodes", &nodes);
+- int i;
+- for (i = 0; i < json_object_array_length(nodes); i++) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(nodes); i++) {
+ node = json_object_array_get_idx(nodes, i);
+
+ if ((child = get_focused_container_r(node))) {
+@@ -60,7 +59,7 @@ static json_object *get_focused_container_r(json_object *c) {
+ }
+
+ json_object_object_get_ex(c, "floating_nodes", &nodes);
+- for (i = 0; i < json_object_array_length(nodes); i++) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(nodes); i++) {
+ node = json_object_array_get_idx(nodes, i);
+
+ if ((child = get_focused_container_r(node))) {
+@@ -83,7 +82,7 @@ char *get_focused_output() {
+ if (!outputs) {
+ sway_abort("Unabled to get focused output. No nodes in tree.");
+ }
+- for (int i = 0; i < json_object_array_length(outputs); i++) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(outputs); i++) {
+ output = json_object_array_get_idx(outputs, i);
+
+ if (get_focused_container_r(output)) {
+@@ -131,7 +130,7 @@ json_object *get_output_container(const char *output) {
+ json_object *outputs, *json_output, *name;
+ json_object_object_get_ex(tree, "nodes", &outputs);
+
+- for (int i = 0; i < json_object_array_length(outputs); i++) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(outputs); i++) {
+ json_output = json_object_array_get_idx(outputs, i);
+ json_object_object_get_ex(json_output, "name", &name);
+
+diff --git a/swaylock/main.c b/swaylock/main.c
+index c2615951..7b7dd601 100644
+--- a/swaylock/main.c
++++ b/swaylock/main.c
+@@ -3,7 +3,6 @@
+ #include <xkbcommon/xkbcommon.h>
+ #include <xkbcommon/xkbcommon-names.h>
+ #include <security/pam_appl.h>
+-#include <json-c/json.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -13,6 +12,7 @@
+ #include <signal.h>
+ #include <stdbool.h>
+ #include <unistd.h>
++#include "sway_json_helper.h"
+ #include "client/window.h"
+ #include "client/registry.h"
+ #include "client/cairo.h"
+@@ -584,7 +584,7 @@ int main(int argc, char **argv) {
+
+ for (i = 0; i < registry->outputs->length; ++i) {
+ if (displays_paths[i * 2] != NULL) {
+- for (int j = 0;; ++j) {
++ for (json_ar_len_t j = 0;; ++j) {
+ if (j >= json_object_array_length(json_outputs)) {
+ sway_log(L_ERROR, "%s is not an extant output", displays_paths[i * 2]);
+ exit(EXIT_FAILURE);
+diff --git a/swaymsg/main.c b/swaymsg/main.c
+index 2f9cfb14..0ee7c76f 100644
+--- a/swaymsg/main.c
++++ b/swaymsg/main.c
+@@ -9,7 +9,7 @@
+ #include <sys/socket.h>
+ #include <ctype.h>
+ #include <unistd.h>
+-#include <json-c/json.h>
++#include "sway_json_helper.h"
+ #include "stringop.h"
+ #include "ipc-client.h"
+ #include "readline.h"
+@@ -149,7 +149,7 @@ static void pretty_print_version(json_object *v) {
+ static void pretty_print_clipboard(json_object *v) {
+ if (success(v, true)) {
+ if (json_object_is_type(v, json_type_array)) {
+- for (int i = 0; i < json_object_array_length(v); ++i) {
++ for (json_ar_len_t i = 0; i < json_object_array_length(v); ++i) {
+ json_object *o = json_object_array_get_idx(v, i);
+ printf("%s\n", json_object_get_string(o));
+ }
diff --git a/dev-libs/sway/sway-0.15.0.ebuild b/dev-libs/sway/sway-0.15.0.ebuild
index 2b14a8ebf6b1..4763bcbcc74a 100644
--- a/dev-libs/sway/sway-0.15.0.ebuild
+++ b/dev-libs/sway/sway-0.15.0.ebuild
@@ -34,6 +34,8 @@ DEPEND="${RDEPEND}
virtual/pkgconfig
app-text/asciidoc"
+PATCHES=( "${FILESDIR}/sway-0.15.0-json-c-fixes.patch" )
+
src_prepare() {
cmake-utils_src_prepare
diff --git a/dev-libs/sway/sway-9999.ebuild b/dev-libs/sway/sway-9999.ebuild
index 041564b463d5..f7250762bfe6 100644
--- a/dev-libs/sway/sway-9999.ebuild
+++ b/dev-libs/sway/sway-9999.ebuild
@@ -34,6 +34,8 @@ DEPEND="${RDEPEND}
virtual/pkgconfig
app-text/asciidoc"
+PATCHES=( "${FILESDIR}/sway-0.15.0-json-c-fixes.patch" )
+
src_prepare() {
cmake-utils_src_prepare