Gentoo Archives: gentoo-commits

From: Thomas Deutschmann <whissi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: app-metrics/collectd/files/, app-metrics/collectd/
Date: Wed, 05 Aug 2020 15:36:01
Message-Id: 1596641735.8bcb791ad645e34183dc17e3c05aca6f28689128.whissi@gentoo
1 commit: 8bcb791ad645e34183dc17e3c05aca6f28689128
2 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
3 AuthorDate: Wed Aug 5 15:34:15 2020 +0000
4 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
5 CommitDate: Wed Aug 5 15:35:35 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8bcb791a
7
8 app-metrics/collectd: fix building with >=libsigrok-0.4
9
10 Closes: https://bugs.gentoo.org/730514
11 Package-Manager: Portage-3.0.1, Repoman-2.3.23
12 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
13
14 ...-5.11.0-r2.ebuild => collectd-5.11.0-r3.ebuild} | 4 +-
15 .../files/collectd-5.11.0-libsigrok-0.4+.patch | 157 +++++++++++++++++++++
16 2 files changed, 160 insertions(+), 1 deletion(-)
17
18 diff --git a/app-metrics/collectd/collectd-5.11.0-r2.ebuild b/app-metrics/collectd/collectd-5.11.0-r3.ebuild
19 similarity index 99%
20 rename from app-metrics/collectd/collectd-5.11.0-r2.ebuild
21 rename to app-metrics/collectd/collectd-5.11.0-r3.ebuild
22 index d8acd70eb21..e3d3fc157a4 100644
23 --- a/app-metrics/collectd/collectd-5.11.0-r2.ebuild
24 +++ b/app-metrics/collectd/collectd-5.11.0-r3.ebuild
25 @@ -129,7 +129,7 @@ COMMON_DEPEND="
26 collectd_plugins_rrdcached? ( net-analyzer/rrdtool:= )
27 collectd_plugins_rrdtool? ( net-analyzer/rrdtool:= )
28 collectd_plugins_sensors? ( sys-apps/lm-sensors:= )
29 - collectd_plugins_sigrok? ( <sci-libs/libsigrok-0.4:= dev-libs/glib:2 )
30 + collectd_plugins_sigrok? ( >=sci-libs/libsigrok-0.4:= dev-libs/glib:2 )
31 collectd_plugins_slurm? ( sys-cluster/slurm )
32 collectd_plugins_smart? ( dev-libs/libatasmart:0= )
33 collectd_plugins_snmp? ( net-analyzer/net-snmp )
34 @@ -170,6 +170,8 @@ REQUIRED_USE="
35 collectd_plugins_smart? ( udev )
36 contrib? ( perl )"
37
38 +PATCHES=( "${FILESDIR}"/${PN}-5.11.0-libsigrok-0.4+.patch )
39 +
40 # @FUNCTION: collectd_plugin_kernel_linux
41 # @DESCRIPTION:
42 # USAGE: <plugin name> <kernel_options> <severity>
43
44 diff --git a/app-metrics/collectd/files/collectd-5.11.0-libsigrok-0.4+.patch b/app-metrics/collectd/files/collectd-5.11.0-libsigrok-0.4+.patch
45 new file mode 100644
46 index 00000000000..981864e81c3
47 --- /dev/null
48 +++ b/app-metrics/collectd/files/collectd-5.11.0-libsigrok-0.4+.patch
49 @@ -0,0 +1,157 @@
50 +Backport of https://github.com/u1f35c/collectd/commit/9e36cd85a2bbd6daa55f1f392f60f9c95573ae2c
51 +aka https://github.com/collectd/collectd/issues/1574
52 +
53 +--- a/configure.ac
54 ++++ b/configure.ac
55 +@@ -5367,7 +5367,7 @@ AC_SUBST([BUILD_WITH_LIBSENSORS_LIBS])
56 + # libsigrok {{{
57 + AC_SUBST([LIBSIGROK_CFLAGS])
58 + AC_SUBST([LIBSIGROK_LIBS])
59 +-PKG_CHECK_MODULES([LIBSIGROK], [libsigrok < 0.4],
60 ++PKG_CHECK_MODULES([LIBSIGROK], [libsigrok >= 0.4],
61 + [with_libsigrok="yes"],
62 + [with_libsigrok="no (pkg-config could not find libsigrok)"]
63 + )
64 +--- a/src/sigrok.c
65 ++++ b/src/sigrok.c
66 +@@ -127,22 +127,22 @@ static int sigrok_config(oconfig_item_t *ci) {
67 + return 0;
68 + }
69 +
70 +-static const char *sigrok_value_type(const struct sr_datafeed_analog *analog) {
71 ++static const char *sigrok_value_type(const struct sr_analog_meaning *meaning) {
72 + const char *s;
73 +
74 +- if (analog->mq == SR_MQ_VOLTAGE)
75 ++ if (meaning->mq == SR_MQ_VOLTAGE)
76 + s = "voltage";
77 +- else if (analog->mq == SR_MQ_CURRENT)
78 ++ else if (meaning->mq == SR_MQ_CURRENT)
79 + s = "current";
80 +- else if (analog->mq == SR_MQ_FREQUENCY)
81 ++ else if (meaning->mq == SR_MQ_FREQUENCY)
82 + s = "frequency";
83 +- else if (analog->mq == SR_MQ_POWER)
84 ++ else if (meaning->mq == SR_MQ_POWER)
85 + s = "power";
86 +- else if (analog->mq == SR_MQ_TEMPERATURE)
87 ++ else if (meaning->mq == SR_MQ_TEMPERATURE)
88 + s = "temperature";
89 +- else if (analog->mq == SR_MQ_RELATIVE_HUMIDITY)
90 ++ else if (meaning->mq == SR_MQ_RELATIVE_HUMIDITY)
91 + s = "humidity";
92 +- else if (analog->mq == SR_MQ_SOUND_PRESSURE_LEVEL)
93 ++ else if (meaning->mq == SR_MQ_SOUND_PRESSURE_LEVEL)
94 + s = "spl";
95 + else
96 + s = "gauge";
97 +@@ -172,7 +172,7 @@ static void sigrok_feed_callback(const struct sr_dev_inst *sdi,
98 + ERROR("sigrok plugin: Received data from driver \"%s\" but "
99 + "can't find a configuration / device matching "
100 + "it.",
101 +- sdi->driver->name);
102 ++ sr_dev_inst_driver_get(sdi)->name);
103 + return;
104 + }
105 +
106 +@@ -191,11 +191,11 @@ static void sigrok_feed_callback(const struct sr_dev_inst *sdi,
107 +
108 + /* Ignore all but the first sample on the first probe. */
109 + analog = packet->payload;
110 +- vl.values = &(value_t){.gauge = analog->data[0]};
111 ++ vl.values = &(value_t){.gauge = ((float *) analog->data)[0]};
112 + vl.values_len = 1;
113 + sstrncpy(vl.plugin, "sigrok", sizeof(vl.plugin));
114 + sstrncpy(vl.plugin_instance, cfdev->name, sizeof(vl.plugin_instance));
115 +- sstrncpy(vl.type, sigrok_value_type(analog), sizeof(vl.type));
116 ++ sstrncpy(vl.type, sigrok_value_type(&analog->meaning[0]), sizeof(vl.type));
117 +
118 + plugin_dispatch_values(&vl);
119 + cfdev->last_dispatch = cdtime();
120 +@@ -207,6 +207,7 @@ static void sigrok_free_drvopts(struct sr_config *src) {
121 + }
122 +
123 + static int sigrok_init_driver(struct config_device *cfdev,
124 ++ struct sr_session *session,
125 + struct sr_dev_driver *drv) {
126 + struct sr_config *src;
127 + GSList *devlist, *drvopts;
128 +@@ -248,21 +249,22 @@ static int sigrok_init_driver(struct config_device *cfdev,
129 + cfdev->sdi = devlist->data;
130 + g_slist_free(devlist);
131 + ssnprintf(hwident, sizeof(hwident), "%s %s %s",
132 +- cfdev->sdi->vendor ? cfdev->sdi->vendor : "",
133 +- cfdev->sdi->model ? cfdev->sdi->model : "",
134 +- cfdev->sdi->version ? cfdev->sdi->version : "");
135 ++ sr_dev_inst_vendor_get(cfdev->sdi),
136 ++ sr_dev_inst_model_get(cfdev->sdi),
137 ++ sr_dev_inst_version_get(cfdev->sdi));
138 + INFO("sigrok plugin: Device \"%s\" is a %s", cfdev->name, hwident);
139 +
140 + if (sr_dev_open(cfdev->sdi) != SR_OK)
141 + return -1;
142 +
143 +- if (sr_session_dev_add(cfdev->sdi) != SR_OK)
144 ++ if (sr_session_dev_add(session, cfdev->sdi) != SR_OK)
145 + return -1;
146 +
147 + return 1;
148 + }
149 +
150 + static void *sigrok_read_thread(void *arg __attribute__((unused))) {
151 ++ struct sr_session *session;
152 + struct sr_dev_driver *drv, **drvlist;
153 + GSList *l;
154 + struct config_device *cfdev;
155 +@@ -277,11 +279,11 @@ static void *sigrok_read_thread(void *arg __attribute__((unused))) {
156 + return NULL;
157 + }
158 +
159 +- if (!sr_session_new())
160 ++ if (!sr_session_new(sr_ctx, &session))
161 + return NULL;
162 +
163 + num_devices = 0;
164 +- drvlist = sr_driver_list();
165 ++ drvlist = sr_driver_list(sr_ctx);
166 + for (l = config_devices; l; l = l->next) {
167 + cfdev = l->data;
168 + drv = NULL;
169 +@@ -296,7 +298,7 @@ static void *sigrok_read_thread(void *arg __attribute__((unused))) {
170 + return NULL;
171 + }
172 +
173 +- if ((ret = sigrok_init_driver(cfdev, drv)) < 0)
174 ++ if ((ret = sigrok_init_driver(cfdev, session, drv)) < 0)
175 + /* Error was already logged. */
176 + return NULL;
177 +
178 +@@ -305,21 +307,22 @@ static void *sigrok_read_thread(void *arg __attribute__((unused))) {
179 +
180 + if (num_devices > 0) {
181 + /* Do this only when we're sure there's hardware to talk to. */
182 +- if (sr_session_datafeed_callback_add(sigrok_feed_callback, NULL) != SR_OK)
183 ++ if (sr_session_datafeed_callback_add(session, sigrok_feed_callback,
184 ++ NULL) != SR_OK)
185 + return NULL;
186 +
187 + /* Start acquisition on all devices. */
188 +- if (sr_session_start() != SR_OK)
189 ++ if (sr_session_start(session) != SR_OK)
190 + return NULL;
191 +
192 + /* Main loop, runs forever. */
193 +- sr_session_run();
194 ++ sr_session_run(session);
195 +
196 +- sr_session_stop();
197 +- sr_session_dev_remove_all();
198 ++ sr_session_stop(session);
199 ++ sr_session_dev_remove_all(session);
200 + }
201 +
202 +- sr_session_destroy();
203 ++ sr_session_destroy(session);
204 +
205 + sr_exit(sr_ctx);
206 +