summaryrefslogtreecommitdiffstats
path: root/meta-oe
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe')
-rw-r--r--meta-oe/recipes-support/libgpiod/libgpiod-2.x/0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch530
-rw-r--r--meta-oe/recipes-support/libgpiod/libgpiod-2.x/gpio-manager.init76
-rw-r--r--meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest43
-rw-r--r--meta-oe/recipes-support/libgpiod/libgpiod_2.1.3.bb33
-rw-r--r--meta-oe/recipes-support/libgpiod/libgpiod_2.2.bb99
5 files changed, 206 insertions, 575 deletions
diff --git a/meta-oe/recipes-support/libgpiod/libgpiod-2.x/0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch b/meta-oe/recipes-support/libgpiod/libgpiod-2.x/0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch
deleted file mode 100644
index ac1eff510..000000000
--- a/meta-oe/recipes-support/libgpiod/libgpiod-2.x/0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch
+++ /dev/null
@@ -1,530 +0,0 @@
1From 0d3e1b3923a1fac80e9d75d8b5e33cd36f4fe659 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 31 May 2024 09:03:22 -0700
4Subject: [PATCH] bindings: cxx: Migrate C++ tests to use Catch2 v3
5
6Catch2 v3.x has API changes which needs to be addressed
7in the tests themselves, hence this changeset is to fix
8those.
9
10Upstream-Status: Submitted [https://lore.kernel.org/linux-gpio/20240531184223.3949069-1-raj.khem@gmail.com/T/#u]
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12Cc: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
13---
14 bindings/cxx/tests/Makefile.am | 2 +-
15 bindings/cxx/tests/gpiod-cxx-test-main.cpp | 3 +--
16 bindings/cxx/tests/helpers.hpp | 8 +++---
17 bindings/cxx/tests/tests-chip-info.cpp | 30 ++++++++++-----------
18 bindings/cxx/tests/tests-chip.cpp | 14 +++++-----
19 bindings/cxx/tests/tests-edge-event.cpp | 2 +-
20 bindings/cxx/tests/tests-info-event.cpp | 2 +-
21 bindings/cxx/tests/tests-line-config.cpp | 2 +-
22 bindings/cxx/tests/tests-line-info.cpp | 22 +++++++--------
23 bindings/cxx/tests/tests-line-request.cpp | 16 +++++------
24 bindings/cxx/tests/tests-line-settings.cpp | 2 +-
25 bindings/cxx/tests/tests-line.cpp | 2 +-
26 bindings/cxx/tests/tests-misc.cpp | 2 +-
27 bindings/cxx/tests/tests-request-config.cpp | 10 +++----
28 configure.ac | 4 +--
29 15 files changed, 60 insertions(+), 61 deletions(-)
30
31diff --git a/bindings/cxx/tests/Makefile.am b/bindings/cxx/tests/Makefile.am
32index fbf80a1..d9284da 100644
33--- a/bindings/cxx/tests/Makefile.am
34+++ b/bindings/cxx/tests/Makefile.am
35@@ -4,7 +4,7 @@
36 AM_CXXFLAGS = -I$(top_srcdir)/bindings/cxx/ -I$(top_srcdir)/include
37 AM_CXXFLAGS += -I$(top_srcdir)/tests/gpiosim/
38 AM_CXXFLAGS += -Wall -Wextra -g -std=gnu++17 $(CATCH2_CFLAGS)
39-AM_LDFLAGS = -pthread
40+AM_LDFLAGS = -pthread $(CATCH2_LIBS)
41 LDADD = $(top_builddir)/bindings/cxx/libgpiodcxx.la
42 LDADD += $(top_builddir)/tests/gpiosim/libgpiosim.la
43
44diff --git a/bindings/cxx/tests/gpiod-cxx-test-main.cpp b/bindings/cxx/tests/gpiod-cxx-test-main.cpp
45index 11bf8e5..ec48286 100644
46--- a/bindings/cxx/tests/gpiod-cxx-test-main.cpp
47+++ b/bindings/cxx/tests/gpiod-cxx-test-main.cpp
48@@ -1,5 +1,4 @@
49 // SPDX-License-Identifier: GPL-2.0-or-later
50 // SPDX-FileCopyrightText: 2017-2021 Bartosz Golaszewski <bartekgola@gmail.com>
51
52-#define CATCH_CONFIG_MAIN
53-#include <catch2/catch.hpp>
54+#include <catch2/catch_all.hpp>
55diff --git a/bindings/cxx/tests/helpers.hpp b/bindings/cxx/tests/helpers.hpp
56index 62d9827..62bbdf5 100644
57--- a/bindings/cxx/tests/helpers.hpp
58+++ b/bindings/cxx/tests/helpers.hpp
59@@ -4,13 +4,13 @@
60 #ifndef __GPIOD_CXX_TEST_HELPERS_HPP__
61 #define __GPIOD_CXX_TEST_HELPERS_HPP__
62
63-#include <catch2/catch.hpp>
64+#include <catch2/catch_all.hpp>
65 #include <regex>
66 #include <string>
67 #include <sstream>
68 #include <system_error>
69
70-class system_error_matcher : public Catch::MatcherBase<::std::system_error>
71+class system_error_matcher : public Catch::Matchers::MatcherBase<::std::system_error>
72 {
73 public:
74 explicit system_error_matcher(int expected_errno);
75@@ -21,7 +21,7 @@ private:
76 ::std::error_condition _m_cond;
77 };
78
79-class regex_matcher : public Catch::MatcherBase<::std::string>
80+class regex_matcher : public Catch::Matchers::MatcherBase<::std::string>
81 {
82 public:
83 explicit regex_matcher(const ::std::string& pattern);
84@@ -33,7 +33,7 @@ private:
85 ::std::string _m_repr;
86 };
87
88-template<class T> class stringify_matcher : public Catch::MatcherBase<T>
89+template<class T> class stringify_matcher : public Catch::Matchers::MatcherBase<T>
90 {
91 public:
92 explicit stringify_matcher(const ::std::string& expected) : _m_expected(expected)
93diff --git a/bindings/cxx/tests/tests-chip-info.cpp b/bindings/cxx/tests/tests-chip-info.cpp
94index 717c387..2c54f53 100644
95--- a/bindings/cxx/tests/tests-chip-info.cpp
96+++ b/bindings/cxx/tests/tests-chip-info.cpp
97@@ -1,7 +1,7 @@
98 // SPDX-License-Identifier: GPL-2.0-or-later
99 // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl>
100
101-#include <catch2/catch.hpp>
102+#include <catch2/catch_all.hpp>
103 #include <gpiod.hpp>
104 #include <sstream>
105
106@@ -24,12 +24,12 @@ TEST_CASE("chip_info properties can be read", "[chip-info][chip]")
107
108 SECTION("get chip name")
109 {
110- REQUIRE_THAT(info.name(), Catch::Equals(sim.name()));
111+ REQUIRE_THAT(info.name(), Catch::Matchers::Equals(sim.name()));
112 }
113
114 SECTION("get chip label")
115 {
116- REQUIRE_THAT(info.label(), Catch::Equals("foobar"));
117+ REQUIRE_THAT(info.label(), Catch::Matchers::Equals("foobar"));
118 }
119
120 SECTION("get num_lines")
121@@ -52,12 +52,12 @@ TEST_CASE("chip_info can be copied and moved", "[chip-info]")
122 {
123 auto copy(info);
124
125- REQUIRE_THAT(copy.name(), Catch::Equals(sim.name()));
126- REQUIRE_THAT(copy.label(), Catch::Equals("foobar"));
127+ REQUIRE_THAT(copy.name(), Catch::Matchers::Equals(sim.name()));
128+ REQUIRE_THAT(copy.label(), Catch::Matchers::Equals("foobar"));
129 REQUIRE(copy.num_lines() == 4);
130
131- REQUIRE_THAT(info.name(), Catch::Equals(sim.name()));
132- REQUIRE_THAT(info.label(), Catch::Equals("foobar"));
133+ REQUIRE_THAT(info.name(), Catch::Matchers::Equals(sim.name()));
134+ REQUIRE_THAT(info.label(), Catch::Matchers::Equals("foobar"));
135 REQUIRE(info.num_lines() == 4);
136 }
137
138@@ -67,12 +67,12 @@ TEST_CASE("chip_info can be copied and moved", "[chip-info]")
139
140 copy = info;
141
142- REQUIRE_THAT(copy.name(), Catch::Equals(sim.name()));
143- REQUIRE_THAT(copy.label(), Catch::Equals("foobar"));
144+ REQUIRE_THAT(copy.name(), Catch::Matchers::Equals(sim.name()));
145+ REQUIRE_THAT(copy.label(), Catch::Matchers::Equals("foobar"));
146 REQUIRE(copy.num_lines() == 4);
147
148- REQUIRE_THAT(info.name(), Catch::Equals(sim.name()));
149- REQUIRE_THAT(info.label(), Catch::Equals("foobar"));
150+ REQUIRE_THAT(info.name(), Catch::Matchers::Equals(sim.name()));
151+ REQUIRE_THAT(info.label(), Catch::Matchers::Equals("foobar"));
152 REQUIRE(info.num_lines() == 4);
153 }
154
155@@ -80,8 +80,8 @@ TEST_CASE("chip_info can be copied and moved", "[chip-info]")
156 {
157 auto moved(std::move(info));
158
159- REQUIRE_THAT(moved.name(), Catch::Equals(sim.name()));
160- REQUIRE_THAT(moved.label(), Catch::Equals("foobar"));
161+ REQUIRE_THAT(moved.name(), Catch::Matchers::Equals(sim.name()));
162+ REQUIRE_THAT(moved.label(), Catch::Matchers::Equals("foobar"));
163 REQUIRE(moved.num_lines() == 4);
164 }
165
166@@ -91,8 +91,8 @@ TEST_CASE("chip_info can be copied and moved", "[chip-info]")
167
168 moved = ::std::move(info);
169
170- REQUIRE_THAT(moved.name(), Catch::Equals(sim.name()));
171- REQUIRE_THAT(moved.label(), Catch::Equals("foobar"));
172+ REQUIRE_THAT(moved.name(), Catch::Matchers::Equals(sim.name()));
173+ REQUIRE_THAT(moved.label(), Catch::Matchers::Equals("foobar"));
174 REQUIRE(moved.num_lines() == 4);
175 }
176 }
177diff --git a/bindings/cxx/tests/tests-chip.cpp b/bindings/cxx/tests/tests-chip.cpp
178index c5ec19b..1ab7add 100644
179--- a/bindings/cxx/tests/tests-chip.cpp
180+++ b/bindings/cxx/tests/tests-chip.cpp
181@@ -1,7 +1,7 @@
182 // SPDX-License-Identifier: GPL-2.0-or-later
183 // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl>
184
185-#include <catch2/catch.hpp>
186+#include <catch2/catch_all.hpp>
187 #include <gpiod.hpp>
188 #include <sstream>
189 #include <system_error>
190@@ -48,9 +48,9 @@ TEST_CASE("chip constructor works", "[chip]")
191 .build();
192
193 ::gpiod::chip first(sim.dev_path());
194- REQUIRE_THAT(first.get_info().label(), Catch::Equals("foobar"));
195+ REQUIRE_THAT(first.get_info().label(), Catch::Matchers::Equals("foobar"));
196 ::gpiod::chip second(::std::move(first));
197- REQUIRE_THAT(second.get_info().label(), Catch::Equals("foobar"));
198+ REQUIRE_THAT(second.get_info().label(), Catch::Matchers::Equals("foobar"));
199 }
200 }
201
202@@ -70,9 +70,9 @@ TEST_CASE("chip operators work", "[chip]")
203
204 ::gpiod::chip moved_chip(moved_sim.dev_path());
205
206- REQUIRE_THAT(chip.get_info().label(), Catch::Equals("foobar"));
207+ REQUIRE_THAT(chip.get_info().label(), Catch::Matchers::Equals("foobar"));
208 chip = ::std::move(moved_chip);
209- REQUIRE_THAT(chip.get_info().label(), Catch::Equals("moved"));
210+ REQUIRE_THAT(chip.get_info().label(), Catch::Matchers::Equals("moved"));
211 }
212
213 SECTION("boolean operator")
214@@ -94,7 +94,7 @@ TEST_CASE("chip properties can be read", "[chip]")
215
216 SECTION("get device path")
217 {
218- REQUIRE_THAT(chip.path(), Catch::Equals(sim.dev_path()));
219+ REQUIRE_THAT(chip.path(), Catch::Matchers::Equals(sim.dev_path()));
220 }
221
222 SECTION("get file descriptor")
223@@ -169,7 +169,7 @@ TEST_CASE("stream insertion operator works for chip", "[chip]")
224 "\", label=\"foobar\", num_lines=4))";
225
226 buf << chip;
227- REQUIRE_THAT(buf.str(), Catch::Equals(expected.str()));
228+ REQUIRE_THAT(buf.str(), Catch::Matchers::Equals(expected.str()));
229 }
230
231 SECTION("closed chip")
232diff --git a/bindings/cxx/tests/tests-edge-event.cpp b/bindings/cxx/tests/tests-edge-event.cpp
233index 19a6ab3..db387be 100644
234--- a/bindings/cxx/tests/tests-edge-event.cpp
235+++ b/bindings/cxx/tests/tests-edge-event.cpp
236@@ -1,7 +1,7 @@
237 // SPDX-License-Identifier: GPL-2.0-or-later
238 // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>
239
240-#include <catch2/catch.hpp>
241+#include <catch2/catch_all.hpp>
242 #include <chrono>
243 #include <gpiod.hpp>
244 #include <sstream>
245diff --git a/bindings/cxx/tests/tests-info-event.cpp b/bindings/cxx/tests/tests-info-event.cpp
246index 21c0ef0..f7ae309 100644
247--- a/bindings/cxx/tests/tests-info-event.cpp
248+++ b/bindings/cxx/tests/tests-info-event.cpp
249@@ -1,7 +1,7 @@
250 // SPDX-License-Identifier: GPL-2.0-or-later
251 // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>
252
253-#include <catch2/catch.hpp>
254+#include <catch2/catch_all.hpp>
255 #include <chrono>
256 #include <filesystem>
257 #include <gpiod.hpp>
258diff --git a/bindings/cxx/tests/tests-line-config.cpp b/bindings/cxx/tests/tests-line-config.cpp
259index 5e439a1..2f510fb 100644
260--- a/bindings/cxx/tests/tests-line-config.cpp
261+++ b/bindings/cxx/tests/tests-line-config.cpp
262@@ -1,7 +1,7 @@
263 // SPDX-License-Identifier: GPL-2.0-or-later
264 // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>
265
266-#include <catch2/catch.hpp>
267+#include <catch2/catch_all.hpp>
268 #include <gpiod.hpp>
269
270 #include "gpiosim.hpp"
271diff --git a/bindings/cxx/tests/tests-line-info.cpp b/bindings/cxx/tests/tests-line-info.cpp
272index 21211f2..8589da3 100644
273--- a/bindings/cxx/tests/tests-line-info.cpp
274+++ b/bindings/cxx/tests/tests-line-info.cpp
275@@ -1,7 +1,7 @@
276 // SPDX-License-Identifier: GPL-2.0-or-later
277 // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>
278
279-#include <catch2/catch.hpp>
280+#include <catch2/catch_all.hpp>
281 #include <gpiod.hpp>
282 #include <string>
283
284@@ -35,9 +35,9 @@ TEST_CASE("get_line_info() works", "[chip][line-info]")
285 auto info = chip.get_line_info(0);
286
287 REQUIRE(info.offset() == 0);
288- REQUIRE_THAT(info.name(), Catch::Equals("foobar"));
289+ REQUIRE_THAT(info.name(), Catch::Matchers::Equals("foobar"));
290 REQUIRE(info.used());
291- REQUIRE_THAT(info.consumer(), Catch::Equals("hog"));
292+ REQUIRE_THAT(info.consumer(), Catch::Matchers::Equals("hog"));
293 REQUIRE(info.direction() == ::gpiod::line::direction::OUTPUT);
294 REQUIRE_FALSE(info.active_low());
295 REQUIRE(info.bias() == ::gpiod::line::bias::UNKNOWN);
296@@ -74,9 +74,9 @@ TEST_CASE("line properties can be retrieved", "[line-info]")
297 auto info6 = chip.get_line_info(6);
298
299 REQUIRE(info4.offset() == 4);
300- REQUIRE_THAT(info4.name(), Catch::Equals("baz"));
301+ REQUIRE_THAT(info4.name(), Catch::Matchers::Equals("baz"));
302 REQUIRE(info4.used());
303- REQUIRE_THAT(info4.consumer(), Catch::Equals("hog4"));
304+ REQUIRE_THAT(info4.consumer(), Catch::Matchers::Equals("hog4"));
305 REQUIRE(info4.direction() == direction::OUTPUT);
306 REQUIRE(info4.edge_detection() == edge::NONE);
307 REQUIRE_FALSE(info4.active_low());
308@@ -102,10 +102,10 @@ TEST_CASE("line_info can be copied and moved")
309 {
310 auto copy(info);
311 REQUIRE(copy.offset() == 2);
312- REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
313+ REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
314 /* info can still be used */
315 REQUIRE(info.offset() == 2);
316- REQUIRE_THAT(info.name(), Catch::Equals("foobar"));
317+ REQUIRE_THAT(info.name(), Catch::Matchers::Equals("foobar"));
318 }
319
320 SECTION("assignment operator works")
321@@ -113,17 +113,17 @@ TEST_CASE("line_info can be copied and moved")
322 auto copy = chip.get_line_info(0);
323 copy = info;
324 REQUIRE(copy.offset() == 2);
325- REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
326+ REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
327 /* info can still be used */
328 REQUIRE(info.offset() == 2);
329- REQUIRE_THAT(info.name(), Catch::Equals("foobar"));
330+ REQUIRE_THAT(info.name(), Catch::Matchers::Equals("foobar"));
331 }
332
333 SECTION("move constructor works")
334 {
335 auto copy(::std::move(info));
336 REQUIRE(copy.offset() == 2);
337- REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
338+ REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
339 }
340
341 SECTION("move assignment operator works")
342@@ -131,7 +131,7 @@ TEST_CASE("line_info can be copied and moved")
343 auto copy = chip.get_line_info(0);
344 copy = ::std::move(info);
345 REQUIRE(copy.offset() == 2);
346- REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
347+ REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
348 }
349 }
350
351diff --git a/bindings/cxx/tests/tests-line-request.cpp b/bindings/cxx/tests/tests-line-request.cpp
352index 9632ae0..af8b979 100644
353--- a/bindings/cxx/tests/tests-line-request.cpp
354+++ b/bindings/cxx/tests/tests-line-request.cpp
355@@ -1,7 +1,7 @@
356 // SPDX-License-Identifier: GPL-2.0-or-later
357 // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>
358
359-#include <catch2/catch.hpp>
360+#include <catch2/catch_all.hpp>
361 #include <gpiod.hpp>
362 #include <sstream>
363 #include <stdexcept>
364@@ -20,7 +20,7 @@ using pull = ::gpiosim::chip::pull;
365
366 namespace {
367
368-class value_matcher : public Catch::MatcherBase<value>
369+class value_matcher : public Catch::Matchers::MatcherBase<value>
370 {
371 public:
372 value_matcher(pull pull, bool active_low = false)
373@@ -117,7 +117,7 @@ TEST_CASE("consumer string is set correctly", "[line-request]")
374 auto info = chip.get_line_info(2);
375
376 REQUIRE(info.used());
377- REQUIRE_THAT(info.consumer(), Catch::Equals("foobar"));
378+ REQUIRE_THAT(info.consumer(), Catch::Matchers::Equals("foobar"));
379 }
380
381 SECTION("empty consumer")
382@@ -130,7 +130,7 @@ TEST_CASE("consumer string is set correctly", "[line-request]")
383 auto info = chip.get_line_info(2);
384
385 REQUIRE(info.used());
386- REQUIRE_THAT(info.consumer(), Catch::Equals("?"));
387+ REQUIRE_THAT(info.consumer(), Catch::Matchers::Equals("?"));
388 }
389 }
390
391@@ -380,7 +380,7 @@ TEST_CASE("line_request can be moved", "[line-request]")
392 auto moved(::std::move(request));
393
394 REQUIRE(moved.fd() == fd);
395- REQUIRE_THAT(moved.offsets(), Catch::Equals(offs));
396+ REQUIRE_THAT(moved.offsets(), Catch::Matchers::Equals(offs));
397 }
398
399 SECTION("move assignment operator works")
400@@ -388,7 +388,7 @@ TEST_CASE("line_request can be moved", "[line-request]")
401 another = ::std::move(request);
402
403 REQUIRE(another.fd() == fd);
404- REQUIRE_THAT(another.offsets(), Catch::Equals(offs));
405+ REQUIRE_THAT(another.offsets(), Catch::Matchers::Equals(offs));
406 }
407 }
408
409@@ -484,7 +484,7 @@ TEST_CASE("line_request stream insertion operator works", "[line-request]")
410 {
411 buf << request;
412
413- REQUIRE_THAT(buf.str(), Catch::Equals(expected.str()));
414+ REQUIRE_THAT(buf.str(), Catch::Matchers::Equals(expected.str()));
415 }
416
417 SECTION("request released")
418@@ -493,7 +493,7 @@ TEST_CASE("line_request stream insertion operator works", "[line-request]")
419
420 buf << request;
421
422- REQUIRE_THAT(buf.str(), Catch::Equals("gpiod::line_request(released)"));
423+ REQUIRE_THAT(buf.str(), Catch::Matchers::Equals("gpiod::line_request(released)"));
424 }
425 }
426
427diff --git a/bindings/cxx/tests/tests-line-settings.cpp b/bindings/cxx/tests/tests-line-settings.cpp
428index dc821bb..2690331 100644
429--- a/bindings/cxx/tests/tests-line-settings.cpp
430+++ b/bindings/cxx/tests/tests-line-settings.cpp
431@@ -1,7 +1,7 @@
432 // SPDX-License-Identifier: GPL-2.0-or-later
433 // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>
434
435-#include <catch2/catch.hpp>
436+#include <catch2/catch_all.hpp>
437 #include <gpiod.hpp>
438
439 #include "helpers.hpp"
440diff --git a/bindings/cxx/tests/tests-line.cpp b/bindings/cxx/tests/tests-line.cpp
441index 319012a..abd0e08 100644
442--- a/bindings/cxx/tests/tests-line.cpp
443+++ b/bindings/cxx/tests/tests-line.cpp
444@@ -1,7 +1,7 @@
445 // SPDX-License-Identifier: GPL-2.0-or-later
446 // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl>
447
448-#include <catch2/catch.hpp>
449+#include <catch2/catch_all.hpp>
450 #include <gpiod.hpp>
451
452 #include "helpers.hpp"
453diff --git a/bindings/cxx/tests/tests-misc.cpp b/bindings/cxx/tests/tests-misc.cpp
454index f06dc39..33fc3fa 100644
455--- a/bindings/cxx/tests/tests-misc.cpp
456+++ b/bindings/cxx/tests/tests-misc.cpp
457@@ -1,7 +1,7 @@
458 // SPDX-License-Identifier: GPL-2.0-or-later
459 // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl>
460
461-#include <catch2/catch.hpp>
462+#include <catch2/catch_all.hpp>
463 #include <filesystem>
464 #include <gpiod.hpp>
465 #include <string>
466diff --git a/bindings/cxx/tests/tests-request-config.cpp b/bindings/cxx/tests/tests-request-config.cpp
467index 66eb748..d71e91b 100644
468--- a/bindings/cxx/tests/tests-request-config.cpp
469+++ b/bindings/cxx/tests/tests-request-config.cpp
470@@ -1,7 +1,7 @@
471 // SPDX-License-Identifier: GPL-2.0-or-later
472 // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl>
473
474-#include <catch2/catch.hpp>
475+#include <catch2/catch_all.hpp>
476 #include <cstddef>
477 #include <gpiod.hpp>
478 #include <string>
479@@ -33,7 +33,7 @@ TEST_CASE("request_config can be moved", "[request-config]")
480 SECTION("move constructor works")
481 {
482 auto moved(::std::move(cfg));
483- REQUIRE_THAT(moved.consumer(), Catch::Equals("foobar"));
484+ REQUIRE_THAT(moved.consumer(), Catch::Matchers::Equals("foobar"));
485 REQUIRE(moved.event_buffer_size() == 64);
486 }
487
488@@ -43,7 +43,7 @@ TEST_CASE("request_config can be moved", "[request-config]")
489
490 moved = ::std::move(cfg);
491
492- REQUIRE_THAT(moved.consumer(), Catch::Equals("foobar"));
493+ REQUIRE_THAT(moved.consumer(), Catch::Matchers::Equals("foobar"));
494 REQUIRE(moved.event_buffer_size() == 64);
495 }
496 }
497@@ -55,7 +55,7 @@ TEST_CASE("request_config mutators work", "[request-config]")
498 SECTION("set consumer")
499 {
500 cfg.set_consumer("foobar");
501- REQUIRE_THAT(cfg.consumer(), Catch::Equals("foobar"));
502+ REQUIRE_THAT(cfg.consumer(), Catch::Matchers::Equals("foobar"));
503 }
504
505 SECTION("set event_buffer_size")
506@@ -77,7 +77,7 @@ TEST_CASE("request_config stream insertion operator works", "[request-config]")
507
508 ::std::string expected("gpiod::request_config(consumer='foobar', event_buffer_size=32)");
509
510- REQUIRE_THAT(buf.str(), Catch::Equals(expected));
511+ REQUIRE_THAT(buf.str(), Catch::Matchers::Equals(expected));
512 }
513
514 } /* namespace */
515diff --git a/configure.ac b/configure.ac
516index a2370c5..216007e 100644
517--- a/configure.ac
518+++ b/configure.ac
519@@ -206,9 +206,9 @@ then
520
521 if test "x$with_tests" = xtrue
522 then
523- PKG_CHECK_MODULES([CATCH2], [catch2],, [
524+ PKG_CHECK_MODULES([CATCH2], [catch2-with-main],, [
525 AC_LANG_PUSH([C++])
526- AC_CHECK_HEADERS([catch2/catch.hpp], [], [HEADER_NOT_FOUND_CXX([catch2/catch.hpp])])
527+ AC_CHECK_HEADERS([catch2/catch_all.hpp], [], [HEADER_NOT_FOUND_CXX([catch2/catch_all.hpp])])
528 AC_LANG_POP([C++])
529 ])
530 fi
diff --git a/meta-oe/recipes-support/libgpiod/libgpiod-2.x/gpio-manager.init b/meta-oe/recipes-support/libgpiod/libgpiod-2.x/gpio-manager.init
new file mode 100644
index 000000000..e36755eea
--- /dev/null
+++ b/meta-oe/recipes-support/libgpiod/libgpiod-2.x/gpio-manager.init
@@ -0,0 +1,76 @@
1#! /bin/sh
2### BEGIN INIT INFO
3# Provides: gpio-manager
4# Required-Start: $remote_fs $syslog
5# Required-Stop: $remote_fs $syslog
6# Default-Start: 2 3 4 5
7# Default-Stop: 1
8# Short-Description: Centralized GPIO manager daemon
9### END INIT INFO
10#
11# -*- coding: utf-8 -*-
12# Debian init.d script for gpio-manager
13# Copyright (c) 2024 Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
14
15# set -e
16
17# Source function library.
18. /etc/init.d/functions
19
20DAEMON=/usr/bin/gpio-manager
21NAME=gpio-manager
22PIDFILE=/var/run/gpio-manager/pid
23DESC="GPIO manager daemon"
24
25test -x $DAEMON || exit 0
26test "$ENABLED" != "0" || exit 0
27
28do_start()
29{
30 mkdir -p "`dirname $PIDFILE`"
31 if [ -e $PIDFILE ]; then
32 PIDDIR=/proc/$(cat $PIDFILE)
33 if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
34 echo "$DESC already started; not starting."
35 else
36 echo "Removing stale PID file $PIDFILE."
37 rm -f $PIDFILE
38 fi
39 fi
40
41 echo -n "Starting $DESC: "
42 start-stop-daemon --user gpio-manager --background --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON
43 echo "$NAME."
44}
45
46do_stop()
47{
48 echo -n "Stopping $DESC: "
49 start-stop-daemon --stop --quiet --pidfile $PIDFILE
50 echo "$NAME."
51 rm -f $PIDFILE
52}
53
54case "$1" in
55 start)
56 do_start
57 ;;
58 stop)
59 do_stop
60 ;;
61 status)
62 status $DAEMON
63 exit $?
64 ;;
65 restart)
66 do_stop
67 sleep 1
68 do_start
69 ;;
70 *)
71 echo "Usage: /etc/init.d/$NAME {start|stop|status|restart}" >&2
72 exit 1
73 ;;
74esac
75
76exit 0
diff --git a/meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest b/meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest
index 29ec0d102..eae172116 100644
--- a/meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest
+++ b/meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest
@@ -1,24 +1,43 @@
1#!/bin/sh 1#!/bin/sh
2 2
3testbins="gpiod-test gpio-tools-test.bash gpiod-cxx-test"
4
5ptestdir=$(dirname "$(readlink -f "$0")") 3ptestdir=$(dirname "$(readlink -f "$0")")
6cd $ptestdir/tests 4cd $ptestdir/tests
7 5
6export GPIODBUS_TEST_DAEMON_PATH="$ptestdir/tests/gpio-manager"
7export PATH="$ptestdir/tests/:$PATH"
8
8# libgpiod v2 uses gpio-sim - a configfs-based testing module. We need to 9# libgpiod v2 uses gpio-sim - a configfs-based testing module. We need to
9# make sure configfs is mounted before running any tests. 10# make sure configfs is mounted before running any tests.
10modprobe configfs 11modprobe configfs
11mountpoint /sys/kernel/config > /dev/null || mount -t configfs configfs /sys/kernel/config 12mountpoint /sys/kernel/config > /dev/null || mount -t configfs configfs /sys/kernel/config
12 13
13for testbin in $testbins; do 14# Make sure the daemon is not running during tests.
14 if test -e ./$testbin; then 15systemctl stop gpio-manager 2> /dev/null > /dev/null
15 ./$testbin > ./$testbin.out 2>&1 16service gpio-manager stop 2> /dev/null > /dev/null
16 if [ $? -ne 0 ]; then 17
17 echo "FAIL: $testbin" 18run_one_test() {
18 else 19 testbin="$1"
19 echo "PASS: $testbin" 20
20 fi 21 ./$testbin > ./$testbin.out 2>&1
22 if [ $? -ne 0 ]; then
23 echo "FAIL: $testbin"
21 else 24 else
22 echo "SKIP: $testbin" 25 echo "PASS: $testbin"
23 fi 26 fi
24done 27}
28
29run_one_test gpiod-test
30run_one_test gpio-tools-test.bash
31run_one_test gpiod-cxx-test
32run_one_test gpiod-glib-test
33
34# Wait for the leftover uevents to be emitted before running DBus tests.
35udevadm settle
36run_one_test gpiodbus-test
37
38udevadm settle
39gpio-manager 2> /dev/null > /dev/null &
40GPIO_MANAGER_PID=$!
41run_one_test gpiocli-test.bash
42kill $GPIO_MANAGER_PID
43wait $GPIO_MANAGER_PID
diff --git a/meta-oe/recipes-support/libgpiod/libgpiod_2.1.3.bb b/meta-oe/recipes-support/libgpiod/libgpiod_2.1.3.bb
deleted file mode 100644
index 6130371e4..000000000
--- a/meta-oe/recipes-support/libgpiod/libgpiod_2.1.3.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1require libgpiod.inc
2
3LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
4LIC_FILES_CHKSUM = " \
5 file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
6 file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
7 file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
8"
9
10FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
11
12SRC_URI += "file://0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch"
13SRC_URI[sha256sum] = "2be4c0b03e995d236c0e476e14aeb475d7b431dd1439609b6d65c540f91eaf58"
14
15# Enable all project features for ptest
16PACKAGECONFIG[tests] = "--enable-tests --enable-tools --enable-bindings-cxx --enable-gpioset-interactive,--disable-tests,kmod util-linux glib-2.0 catch2 libedit"
17PACKAGECONFIG[gpioset-interactive] = "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
18
19PACKAGES =+ "${PN}-ptest-dev"
20FILES:${PN}-tools += "${bindir}/gpionotify"
21FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
22FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
23
24RDEPENDS:${PN}-ptest += " \
25 ${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2 bash', '', d)} \
26"
27RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim kernel-module-configfs"
28
29do_install_ptest:append() {
30 install -m 0755 ${B}/bindings/cxx/tests/.libs/gpiod-cxx-test ${D}${PTEST_PATH}/tests/
31 install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
32 install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
33}
diff --git a/meta-oe/recipes-support/libgpiod/libgpiod_2.2.bb b/meta-oe/recipes-support/libgpiod/libgpiod_2.2.bb
new file mode 100644
index 000000000..b55da72f7
--- /dev/null
+++ b/meta-oe/recipes-support/libgpiod/libgpiod_2.2.bb
@@ -0,0 +1,99 @@
1require libgpiod.inc
2
3inherit systemd update-rc.d useradd gobject-introspection
4
5LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
6LIC_FILES_CHKSUM = " \
7 file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
8 file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
9 file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
10"
11
12FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
13
14SRC_URI += "file://gpio-manager.init"
15
16SRC_URI[sha256sum] = "ee29735890eb1cc0e4b494001da5163d1a9c4735343201d22485db313601ca07"
17
18S = "${UNPACKDIR}/${PN}-2.2"
19
20# Enable all project features for ptest
21PACKAGECONFIG[tests] = " \
22 --enable-tests --enable-tools --enable-bindings-cxx --enable-bindings-glib --enable-gpioset-interactive --enable-dbus, \
23 --disable-tests, \
24 kmod util-linux glib-2.0 catch2 libedit glib-2.0-native libgudev, \
25 bash dbus glib-2.0-utils libgpiod-manager shunit2 \
26"
27PACKAGECONFIG[gpioset-interactive] = "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
28PACKAGECONFIG[glib] = "--enable-bindings-glib,--disable-bindings-glib,glib-2.0 glib-2.0-native"
29PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,glib-2.0 glib-2.0-native libgudev,dbus"
30
31PACKAGES =+ "${PN}-ptest-dev ${PN}-glib ${PN}-manager ${PN}-cli"
32FILES:${PN}-tools += "${bindir}/gpionotify"
33FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
34FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
35FILES:${PN}-glib += "${libdir}/libgpiod-glib.so.*"
36FILES:${PN}-manager += " \
37 ${bindir}/gpio-manager \
38 ${sysconfdir}/dbus-1/system.d/io.gpiod1.conf \
39 ${datadir}/dbus-1/interfaces/io.gpiod1.xml \
40 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/gpio-manager.service', '', d)} \
41 ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${sysconfdir}/init.d/gpio-manager', '', d)} \
42"
43FILES:${PN}-cli += "${bindir}/gpiocli"
44
45RDEPENDS:${PN}-manager += "dbus"
46RDEPENDS:${PN}-cli += "${PN}-manager"
47
48SYSTEMD_PACKAGES = "${PN}-manager"
49
50python __anonymous() {
51 distro_features = d.getVar("DISTRO_FEATURES").split()
52 packageconfig = d.getVar("PACKAGECONFIG").split()
53 pn = d.getVar("PN")
54
55 if "systemd" in distro_features and "dbus" in packageconfig:
56 d.appendVar("EXTRA_OECONF", " --enable-systemd")
57 # We need to set it conditionally or else the systemd class will look
58 # for the file that we don't install with systemd support disabled.
59 d.setVar("SYSTEMD_SERVICE:{}-manager".format(pn), "gpio-manager.service")
60 else:
61 d.appendVar("EXTRA_OECONF", " --disable-systemd")
62}
63
64UPDATERCPN = "${PN}-manager"
65INITSCRIPT_NAME = "gpio-manager"
66INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 20 0 1 6 ."
67
68USERADD_PACKAGES = "${PN}-manager"
69GROUPADD_PARAM:${PN}-manager = "--system gpio"
70USERADD_PARAM:${PN}-manager = "--system -M -s /bin/nologin -g gpio gpio-manager"
71
72RDEPENDS:${PN}-ptest += " \
73 ${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2 bash', '', d)} \
74"
75RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim kernel-module-configfs"
76INSANE_SKIP:${PN}-ptest += "buildpaths"
77
78do_compile:prepend() {
79 export GIR_EXTRA_LIBS_PATH="${B}/lib/.libs"
80}
81
82do_install:append() {
83 if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
84 install -d ${D}${sysconfdir}/init.d
85 install -m 0755 ${UNPACKDIR}/gpio-manager.init ${D}${sysconfdir}/init.d/gpio-manager
86 fi
87}
88
89do_install_ptest:append() {
90 install -m 0755 ${B}/bindings/cxx/tests/.libs/gpiod-cxx-test ${D}${PTEST_PATH}/tests/
91 install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
92 install -m 0644 ${S}/tests/scripts/gpiod-bash-test-helper.inc ${D}${PTEST_PATH}/tests/
93 install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
94 install -m 0755 ${B}/bindings/glib/tests/.libs/gpiod-glib-test ${D}${PTEST_PATH}/tests/
95 install -m 0755 ${B}/dbus/tests/.libs/gpiodbus-test ${D}${PTEST_PATH}/tests/
96 install -m 0755 ${S}/dbus/client/gpiocli-test.bash ${D}${PTEST_PATH}/tests/
97 install -m 0755 ${B}/dbus/manager/.libs/gpio-manager ${D}${PTEST_PATH}/tests/
98 install -m 0755 ${B}/dbus/client/.libs/gpiocli ${D}${PTEST_PATH}/tests/
99}