it failed to build/fetch

https://valkyrie.yoctoproject.org/#/builders/81/builds/81/steps/14/logs/errors

On Tue, Oct 22, 2024 at 3:51 AM Bartosz Golaszewski <[email protected]> wrote:
>
> From: Bartosz Golaszewski <[email protected]>
>
> This is a big update for libgpiod bringing in the D-Bus daemon and its
> command-line client. This is why the patch is pretty hefty. The majority
> of the line count comes from the removed patch that is now upstream but
> the v2.2 recipe also now contains a lot of bits and pieces that make the
> D-Bus daemon work both with system as well as sysvinit.
>
> The project now packages the systemd service and udev rules that allow
> the manager to run under its own user in a well sandboxed environment
> but the sysvsinit script is carried in the recipe as I don't want to
> put support for legacy systems in libgpiod repo.
>
> The patch also updates the ptests for libgpiod to run three new
> test-suites: one for GLib bindings, one for the command-line D-Bus
> client and finally one testing some daemon corner-cases not supported by
> the client.
>
> Build tested with various config options with systemd and sysvinit (the
> latter with glibc and musl) on 32- and 64-bit architectures.
>
> The complete changelog since v2.1 (taken verbatim from the NEWS file) is
> below:
>
> libgpiod v2.2
> =============
>
> New features:
> - add GObject bindings with introspection
> - add a D-Bus interface to libgpiod together with a daemon implementing it and
>   a command-line client
> - split out the common shell test code for gpio-tools into a reusable test
>   harness for GPIO command-line tools
> - add minutes as a new supported time unit for tools and allow longer periods
>   for timeouts, line holding, etc.
> - add a script for generating sdist and wheels for python bindings
> - migrate C++ tests to using Catch2 v3
>
> Improvements:
> - relicense C++ bindings under LGPL-2.1-or-later in order to make the project
>   more attractive to users with GPL-3.0 restrictions
> - remove dependency on grep from tools' tests
> - make shell scripts pass shellcheck treewide
> - use ppoll() in tools to actually achieve the advertised microsecond
>   granularity of timeouts
> - documentation improvements
> - improve typing info in python bindings
> - improve __repr__() implementations in python bindings
> - make reconfiguring lines more flexible in python bindings by relaxing the
>   requirement to carry the ordering of the config entries from the request
> - support casting of line.Value to bool in python bindings
> - various new test-cases for improved coverage treewide
> - align the test cases with the current kernel requirement for specifying
>   direction explicitly when reconfiguring lines
>
> Bug fixes:
> - fix C++ bindings build using slibtool
> - accept the new style automatic GPIO chip labels from gpio-sim in bash tests
> - fix C++ tests with recent kernels which introduced stricter reconfigure
>   behavior
> - fix a use-after-free bug in python bindings
> - fix passing the event clock property to line requests in python bindings
> - fix a memory leak in tools
> - make sure the string buffers in line-info and chip-info are big enough to 
> not
>   truncate the strings they hold below the size accepted by the kernel
> - remove buggy and unnecessary flags sanitization from line-config
> - fix python bindings installation with Makefile build
> - sanitize the return values of GPIO ioctl()s which in some cases may be
>   erroneously positive
> - fix requesting lines by name with multiple entries in python bindings
>
> Signed-off-by: Bartosz Golaszewski <[email protected]>
> ---
>  ...cxx-Migrate-C-tests-to-use-Catch2-v3.patch | 530 ------------------
>  .../libgpiod/libgpiod-2.x/gpio-manager.init   |  76 +++
>  .../libgpiod/libgpiod-2.x/run-ptest           |  43 +-
>  .../libgpiod/libgpiod_2.1.3.bb                |  33 --
>  .../recipes-support/libgpiod/libgpiod_2.2.bb  |  98 ++++
>  5 files changed, 205 insertions(+), 575 deletions(-)
>  delete mode 100644 
> meta-oe/recipes-support/libgpiod/libgpiod-2.x/0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch
>  create mode 100644 
> meta-oe/recipes-support/libgpiod/libgpiod-2.x/gpio-manager.init
>  delete mode 100644 meta-oe/recipes-support/libgpiod/libgpiod_2.1.3.bb
>  create mode 100644 meta-oe/recipes-support/libgpiod/libgpiod_2.2.bb
>
> 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 @@
> -From 0d3e1b3923a1fac80e9d75d8b5e33cd36f4fe659 Mon Sep 17 00:00:00 2001
> -From: Khem Raj <[email protected]>
> -Date: Fri, 31 May 2024 09:03:22 -0700
> -Subject: [PATCH] bindings: cxx: Migrate C++ tests to use Catch2 v3
> -
> -Catch2 v3.x has API changes which needs to be addressed
> -in the tests themselves, hence this changeset is to fix
> -those.
> -
> -Upstream-Status: Submitted 
> [https://lore.kernel.org/linux-gpio/[email protected]/T/#u]
> -Signed-off-by: Khem Raj <[email protected]>
> -Cc: Bartosz Golaszewski <[email protected]>
> ----
> - bindings/cxx/tests/Makefile.am              |  2 +-
> - bindings/cxx/tests/gpiod-cxx-test-main.cpp  |  3 +--
> - bindings/cxx/tests/helpers.hpp              |  8 +++---
> - bindings/cxx/tests/tests-chip-info.cpp      | 30 ++++++++++-----------
> - bindings/cxx/tests/tests-chip.cpp           | 14 +++++-----
> - bindings/cxx/tests/tests-edge-event.cpp     |  2 +-
> - bindings/cxx/tests/tests-info-event.cpp     |  2 +-
> - bindings/cxx/tests/tests-line-config.cpp    |  2 +-
> - bindings/cxx/tests/tests-line-info.cpp      | 22 +++++++--------
> - bindings/cxx/tests/tests-line-request.cpp   | 16 +++++------
> - bindings/cxx/tests/tests-line-settings.cpp  |  2 +-
> - bindings/cxx/tests/tests-line.cpp           |  2 +-
> - bindings/cxx/tests/tests-misc.cpp           |  2 +-
> - bindings/cxx/tests/tests-request-config.cpp | 10 +++----
> - configure.ac                                |  4 +--
> - 15 files changed, 60 insertions(+), 61 deletions(-)
> -
> -diff --git a/bindings/cxx/tests/Makefile.am b/bindings/cxx/tests/Makefile.am
> -index fbf80a1..d9284da 100644
> ---- a/bindings/cxx/tests/Makefile.am
> -+++ b/bindings/cxx/tests/Makefile.am
> -@@ -4,7 +4,7 @@
> - AM_CXXFLAGS = -I$(top_srcdir)/bindings/cxx/ -I$(top_srcdir)/include
> - AM_CXXFLAGS += -I$(top_srcdir)/tests/gpiosim/
> - AM_CXXFLAGS += -Wall -Wextra -g -std=gnu++17 $(CATCH2_CFLAGS)
> --AM_LDFLAGS = -pthread
> -+AM_LDFLAGS = -pthread $(CATCH2_LIBS)
> - LDADD = $(top_builddir)/bindings/cxx/libgpiodcxx.la
> - LDADD += $(top_builddir)/tests/gpiosim/libgpiosim.la
> -
> -diff --git a/bindings/cxx/tests/gpiod-cxx-test-main.cpp 
> b/bindings/cxx/tests/gpiod-cxx-test-main.cpp
> -index 11bf8e5..ec48286 100644
> ---- a/bindings/cxx/tests/gpiod-cxx-test-main.cpp
> -+++ b/bindings/cxx/tests/gpiod-cxx-test-main.cpp
> -@@ -1,5 +1,4 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2017-2021 Bartosz Golaszewski 
> <[email protected]>
> -
> --#define CATCH_CONFIG_MAIN
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> -diff --git a/bindings/cxx/tests/helpers.hpp b/bindings/cxx/tests/helpers.hpp
> -index 62d9827..62bbdf5 100644
> ---- a/bindings/cxx/tests/helpers.hpp
> -+++ b/bindings/cxx/tests/helpers.hpp
> -@@ -4,13 +4,13 @@
> - #ifndef __GPIOD_CXX_TEST_HELPERS_HPP__
> - #define __GPIOD_CXX_TEST_HELPERS_HPP__
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <regex>
> - #include <string>
> - #include <sstream>
> - #include <system_error>
> -
> --class system_error_matcher : public Catch::MatcherBase<::std::system_error>
> -+class system_error_matcher : public 
> Catch::Matchers::MatcherBase<::std::system_error>
> - {
> - public:
> -       explicit system_error_matcher(int expected_errno);
> -@@ -21,7 +21,7 @@ private:
> -       ::std::error_condition _m_cond;
> - };
> -
> --class regex_matcher : public Catch::MatcherBase<::std::string>
> -+class regex_matcher : public Catch::Matchers::MatcherBase<::std::string>
> - {
> - public:
> -       explicit regex_matcher(const ::std::string& pattern);
> -@@ -33,7 +33,7 @@ private:
> -       ::std::string _m_repr;
> - };
> -
> --template<class T> class stringify_matcher : public Catch::MatcherBase<T>
> -+template<class T> class stringify_matcher : public 
> Catch::Matchers::MatcherBase<T>
> - {
> - public:
> -       explicit stringify_matcher(const ::std::string& expected) : 
> _m_expected(expected)
> -diff --git a/bindings/cxx/tests/tests-chip-info.cpp 
> b/bindings/cxx/tests/tests-chip-info.cpp
> -index 717c387..2c54f53 100644
> ---- a/bindings/cxx/tests/tests-chip-info.cpp
> -+++ b/bindings/cxx/tests/tests-chip-info.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> - #include <sstream>
> -
> -@@ -24,12 +24,12 @@ TEST_CASE("chip_info properties can be read", 
> "[chip-info][chip]")
> -
> -       SECTION("get chip name")
> -       {
> --              REQUIRE_THAT(info.name(), Catch::Equals(sim.name()));
> -+              REQUIRE_THAT(info.name(), 
> Catch::Matchers::Equals(sim.name()));
> -       }
> -
> -       SECTION("get chip label")
> -       {
> --              REQUIRE_THAT(info.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.label(), Catch::Matchers::Equals("foobar"));
> -       }
> -
> -       SECTION("get num_lines")
> -@@ -52,12 +52,12 @@ TEST_CASE("chip_info can be copied and moved", 
> "[chip-info]")
> -       {
> -               auto copy(info);
> -
> --              REQUIRE_THAT(copy.name(), Catch::Equals(sim.name()));
> --              REQUIRE_THAT(copy.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(copy.name(), 
> Catch::Matchers::Equals(sim.name()));
> -+              REQUIRE_THAT(copy.label(), Catch::Matchers::Equals("foobar"));
> -               REQUIRE(copy.num_lines() == 4);
> -
> --              REQUIRE_THAT(info.name(), Catch::Equals(sim.name()));
> --              REQUIRE_THAT(info.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.name(), 
> Catch::Matchers::Equals(sim.name()));
> -+              REQUIRE_THAT(info.label(), Catch::Matchers::Equals("foobar"));
> -               REQUIRE(info.num_lines() == 4);
> -       }
> -
> -@@ -67,12 +67,12 @@ TEST_CASE("chip_info can be copied and moved", 
> "[chip-info]")
> -
> -               copy = info;
> -
> --              REQUIRE_THAT(copy.name(), Catch::Equals(sim.name()));
> --              REQUIRE_THAT(copy.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(copy.name(), 
> Catch::Matchers::Equals(sim.name()));
> -+              REQUIRE_THAT(copy.label(), Catch::Matchers::Equals("foobar"));
> -               REQUIRE(copy.num_lines() == 4);
> -
> --              REQUIRE_THAT(info.name(), Catch::Equals(sim.name()));
> --              REQUIRE_THAT(info.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.name(), 
> Catch::Matchers::Equals(sim.name()));
> -+              REQUIRE_THAT(info.label(), Catch::Matchers::Equals("foobar"));
> -               REQUIRE(info.num_lines() == 4);
> -       }
> -
> -@@ -80,8 +80,8 @@ TEST_CASE("chip_info can be copied and moved", 
> "[chip-info]")
> -       {
> -               auto moved(std::move(info));
> -
> --              REQUIRE_THAT(moved.name(), Catch::Equals(sim.name()));
> --              REQUIRE_THAT(moved.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(moved.name(), 
> Catch::Matchers::Equals(sim.name()));
> -+              REQUIRE_THAT(moved.label(), 
> Catch::Matchers::Equals("foobar"));
> -               REQUIRE(moved.num_lines() == 4);
> -       }
> -
> -@@ -91,8 +91,8 @@ TEST_CASE("chip_info can be copied and moved", 
> "[chip-info]")
> -
> -               moved = ::std::move(info);
> -
> --              REQUIRE_THAT(moved.name(), Catch::Equals(sim.name()));
> --              REQUIRE_THAT(moved.label(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(moved.name(), 
> Catch::Matchers::Equals(sim.name()));
> -+              REQUIRE_THAT(moved.label(), 
> Catch::Matchers::Equals("foobar"));
> -               REQUIRE(moved.num_lines() == 4);
> -       }
> - }
> -diff --git a/bindings/cxx/tests/tests-chip.cpp 
> b/bindings/cxx/tests/tests-chip.cpp
> -index c5ec19b..1ab7add 100644
> ---- a/bindings/cxx/tests/tests-chip.cpp
> -+++ b/bindings/cxx/tests/tests-chip.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> - #include <sstream>
> - #include <system_error>
> -@@ -48,9 +48,9 @@ TEST_CASE("chip constructor works", "[chip]")
> -                       .build();
> -
> -               ::gpiod::chip first(sim.dev_path());
> --              REQUIRE_THAT(first.get_info().label(), 
> Catch::Equals("foobar"));
> -+              REQUIRE_THAT(first.get_info().label(), 
> Catch::Matchers::Equals("foobar"));
> -               ::gpiod::chip second(::std::move(first));
> --              REQUIRE_THAT(second.get_info().label(), 
> Catch::Equals("foobar"));
> -+              REQUIRE_THAT(second.get_info().label(), 
> Catch::Matchers::Equals("foobar"));
> -       }
> - }
> -
> -@@ -70,9 +70,9 @@ TEST_CASE("chip operators work", "[chip]")
> -
> -               ::gpiod::chip moved_chip(moved_sim.dev_path());
> -
> --              REQUIRE_THAT(chip.get_info().label(), 
> Catch::Equals("foobar"));
> -+              REQUIRE_THAT(chip.get_info().label(), 
> Catch::Matchers::Equals("foobar"));
> -               chip = ::std::move(moved_chip);
> --              REQUIRE_THAT(chip.get_info().label(), Catch::Equals("moved"));
> -+              REQUIRE_THAT(chip.get_info().label(), 
> Catch::Matchers::Equals("moved"));
> -       }
> -
> -       SECTION("boolean operator")
> -@@ -94,7 +94,7 @@ TEST_CASE("chip properties can be read", "[chip]")
> -
> -       SECTION("get device path")
> -       {
> --              REQUIRE_THAT(chip.path(), Catch::Equals(sim.dev_path()));
> -+              REQUIRE_THAT(chip.path(), 
> Catch::Matchers::Equals(sim.dev_path()));
> -       }
> -
> -       SECTION("get file descriptor")
> -@@ -169,7 +169,7 @@ TEST_CASE("stream insertion operator works for chip", 
> "[chip]")
> -                           "\", label=\"foobar\", num_lines=4))";
> -
> -               buf << chip;
> --              REQUIRE_THAT(buf.str(), Catch::Equals(expected.str()));
> -+              REQUIRE_THAT(buf.str(), 
> Catch::Matchers::Equals(expected.str()));
> -       }
> -
> -       SECTION("closed chip")
> -diff --git a/bindings/cxx/tests/tests-edge-event.cpp 
> b/bindings/cxx/tests/tests-edge-event.cpp
> -index 19a6ab3..db387be 100644
> ---- a/bindings/cxx/tests/tests-edge-event.cpp
> -+++ b/bindings/cxx/tests/tests-edge-event.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <chrono>
> - #include <gpiod.hpp>
> - #include <sstream>
> -diff --git a/bindings/cxx/tests/tests-info-event.cpp 
> b/bindings/cxx/tests/tests-info-event.cpp
> -index 21c0ef0..f7ae309 100644
> ---- a/bindings/cxx/tests/tests-info-event.cpp
> -+++ b/bindings/cxx/tests/tests-info-event.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <chrono>
> - #include <filesystem>
> - #include <gpiod.hpp>
> -diff --git a/bindings/cxx/tests/tests-line-config.cpp 
> b/bindings/cxx/tests/tests-line-config.cpp
> -index 5e439a1..2f510fb 100644
> ---- a/bindings/cxx/tests/tests-line-config.cpp
> -+++ b/bindings/cxx/tests/tests-line-config.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> -
> - #include "gpiosim.hpp"
> -diff --git a/bindings/cxx/tests/tests-line-info.cpp 
> b/bindings/cxx/tests/tests-line-info.cpp
> -index 21211f2..8589da3 100644
> ---- a/bindings/cxx/tests/tests-line-info.cpp
> -+++ b/bindings/cxx/tests/tests-line-info.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> - #include <string>
> -
> -@@ -35,9 +35,9 @@ TEST_CASE("get_line_info() works", "[chip][line-info]")
> -               auto info = chip.get_line_info(0);
> -
> -               REQUIRE(info.offset() == 0);
> --              REQUIRE_THAT(info.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.name(), Catch::Matchers::Equals("foobar"));
> -               REQUIRE(info.used());
> --              REQUIRE_THAT(info.consumer(), Catch::Equals("hog"));
> -+              REQUIRE_THAT(info.consumer(), Catch::Matchers::Equals("hog"));
> -               REQUIRE(info.direction() == ::gpiod::line::direction::OUTPUT);
> -               REQUIRE_FALSE(info.active_low());
> -               REQUIRE(info.bias() == ::gpiod::line::bias::UNKNOWN);
> -@@ -74,9 +74,9 @@ TEST_CASE("line properties can be retrieved", 
> "[line-info]")
> -               auto info6 = chip.get_line_info(6);
> -
> -               REQUIRE(info4.offset() == 4);
> --              REQUIRE_THAT(info4.name(), Catch::Equals("baz"));
> -+              REQUIRE_THAT(info4.name(), Catch::Matchers::Equals("baz"));
> -               REQUIRE(info4.used());
> --              REQUIRE_THAT(info4.consumer(), Catch::Equals("hog4"));
> -+              REQUIRE_THAT(info4.consumer(), 
> Catch::Matchers::Equals("hog4"));
> -               REQUIRE(info4.direction() == direction::OUTPUT);
> -               REQUIRE(info4.edge_detection() == edge::NONE);
> -               REQUIRE_FALSE(info4.active_low());
> -@@ -102,10 +102,10 @@ TEST_CASE("line_info can be copied and moved")
> -       {
> -               auto copy(info);
> -               REQUIRE(copy.offset() == 2);
> --              REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
> -               /* info can still be used */
> -               REQUIRE(info.offset() == 2);
> --              REQUIRE_THAT(info.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.name(), Catch::Matchers::Equals("foobar"));
> -       }
> -
> -       SECTION("assignment operator works")
> -@@ -113,17 +113,17 @@ TEST_CASE("line_info can be copied and moved")
> -               auto copy = chip.get_line_info(0);
> -               copy = info;
> -               REQUIRE(copy.offset() == 2);
> --              REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
> -               /* info can still be used */
> -               REQUIRE(info.offset() == 2);
> --              REQUIRE_THAT(info.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.name(), Catch::Matchers::Equals("foobar"));
> -       }
> -
> -       SECTION("move constructor works")
> -       {
> -               auto copy(::std::move(info));
> -               REQUIRE(copy.offset() == 2);
> --              REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
> -       }
> -
> -       SECTION("move assignment operator works")
> -@@ -131,7 +131,7 @@ TEST_CASE("line_info can be copied and moved")
> -               auto copy = chip.get_line_info(0);
> -               copy = ::std::move(info);
> -               REQUIRE(copy.offset() == 2);
> --              REQUIRE_THAT(copy.name(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(copy.name(), Catch::Matchers::Equals("foobar"));
> -       }
> - }
> -
> -diff --git a/bindings/cxx/tests/tests-line-request.cpp 
> b/bindings/cxx/tests/tests-line-request.cpp
> -index 9632ae0..af8b979 100644
> ---- a/bindings/cxx/tests/tests-line-request.cpp
> -+++ b/bindings/cxx/tests/tests-line-request.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> - #include <sstream>
> - #include <stdexcept>
> -@@ -20,7 +20,7 @@ using pull = ::gpiosim::chip::pull;
> -
> - namespace {
> -
> --class value_matcher : public Catch::MatcherBase<value>
> -+class value_matcher : public Catch::Matchers::MatcherBase<value>
> - {
> - public:
> -       value_matcher(pull pull, bool active_low = false)
> -@@ -117,7 +117,7 @@ TEST_CASE("consumer string is set correctly", 
> "[line-request]")
> -               auto info = chip.get_line_info(2);
> -
> -               REQUIRE(info.used());
> --              REQUIRE_THAT(info.consumer(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(info.consumer(), 
> Catch::Matchers::Equals("foobar"));
> -       }
> -
> -       SECTION("empty consumer")
> -@@ -130,7 +130,7 @@ TEST_CASE("consumer string is set correctly", 
> "[line-request]")
> -               auto info = chip.get_line_info(2);
> -
> -               REQUIRE(info.used());
> --              REQUIRE_THAT(info.consumer(), Catch::Equals("?"));
> -+              REQUIRE_THAT(info.consumer(), Catch::Matchers::Equals("?"));
> -       }
> - }
> -
> -@@ -380,7 +380,7 @@ TEST_CASE("line_request can be moved", "[line-request]")
> -               auto moved(::std::move(request));
> -
> -               REQUIRE(moved.fd() == fd);
> --              REQUIRE_THAT(moved.offsets(), Catch::Equals(offs));
> -+              REQUIRE_THAT(moved.offsets(), Catch::Matchers::Equals(offs));
> -       }
> -
> -       SECTION("move assignment operator works")
> -@@ -388,7 +388,7 @@ TEST_CASE("line_request can be moved", "[line-request]")
> -               another = ::std::move(request);
> -
> -               REQUIRE(another.fd() == fd);
> --              REQUIRE_THAT(another.offsets(), Catch::Equals(offs));
> -+              REQUIRE_THAT(another.offsets(), 
> Catch::Matchers::Equals(offs));
> -       }
> - }
> -
> -@@ -484,7 +484,7 @@ TEST_CASE("line_request stream insertion operator 
> works", "[line-request]")
> -       {
> -               buf << request;
> -
> --              REQUIRE_THAT(buf.str(), Catch::Equals(expected.str()));
> -+              REQUIRE_THAT(buf.str(), 
> Catch::Matchers::Equals(expected.str()));
> -       }
> -
> -       SECTION("request released")
> -@@ -493,7 +493,7 @@ TEST_CASE("line_request stream insertion operator 
> works", "[line-request]")
> -
> -               buf << request;
> -
> --              REQUIRE_THAT(buf.str(), 
> Catch::Equals("gpiod::line_request(released)"));
> -+              REQUIRE_THAT(buf.str(), 
> Catch::Matchers::Equals("gpiod::line_request(released)"));
> -       }
> - }
> -
> -diff --git a/bindings/cxx/tests/tests-line-settings.cpp 
> b/bindings/cxx/tests/tests-line-settings.cpp
> -index dc821bb..2690331 100644
> ---- a/bindings/cxx/tests/tests-line-settings.cpp
> -+++ b/bindings/cxx/tests/tests-line-settings.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> -
> - #include "helpers.hpp"
> -diff --git a/bindings/cxx/tests/tests-line.cpp 
> b/bindings/cxx/tests/tests-line.cpp
> -index 319012a..abd0e08 100644
> ---- a/bindings/cxx/tests/tests-line.cpp
> -+++ b/bindings/cxx/tests/tests-line.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <gpiod.hpp>
> -
> - #include "helpers.hpp"
> -diff --git a/bindings/cxx/tests/tests-misc.cpp 
> b/bindings/cxx/tests/tests-misc.cpp
> -index f06dc39..33fc3fa 100644
> ---- a/bindings/cxx/tests/tests-misc.cpp
> -+++ b/bindings/cxx/tests/tests-misc.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <filesystem>
> - #include <gpiod.hpp>
> - #include <string>
> -diff --git a/bindings/cxx/tests/tests-request-config.cpp 
> b/bindings/cxx/tests/tests-request-config.cpp
> -index 66eb748..d71e91b 100644
> ---- a/bindings/cxx/tests/tests-request-config.cpp
> -+++ b/bindings/cxx/tests/tests-request-config.cpp
> -@@ -1,7 +1,7 @@
> - // SPDX-License-Identifier: GPL-2.0-or-later
> - // SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <[email protected]>
> -
> --#include <catch2/catch.hpp>
> -+#include <catch2/catch_all.hpp>
> - #include <cstddef>
> - #include <gpiod.hpp>
> - #include <string>
> -@@ -33,7 +33,7 @@ TEST_CASE("request_config can be moved", 
> "[request-config]")
> -       SECTION("move constructor works")
> -       {
> -               auto moved(::std::move(cfg));
> --              REQUIRE_THAT(moved.consumer(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(moved.consumer(), 
> Catch::Matchers::Equals("foobar"));
> -               REQUIRE(moved.event_buffer_size() == 64);
> -       }
> -
> -@@ -43,7 +43,7 @@ TEST_CASE("request_config can be moved", 
> "[request-config]")
> -
> -               moved = ::std::move(cfg);
> -
> --              REQUIRE_THAT(moved.consumer(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(moved.consumer(), 
> Catch::Matchers::Equals("foobar"));
> -               REQUIRE(moved.event_buffer_size() == 64);
> -       }
> - }
> -@@ -55,7 +55,7 @@ TEST_CASE("request_config mutators work", 
> "[request-config]")
> -       SECTION("set consumer")
> -       {
> -               cfg.set_consumer("foobar");
> --              REQUIRE_THAT(cfg.consumer(), Catch::Equals("foobar"));
> -+              REQUIRE_THAT(cfg.consumer(), 
> Catch::Matchers::Equals("foobar"));
> -       }
> -
> -       SECTION("set event_buffer_size")
> -@@ -77,7 +77,7 @@ TEST_CASE("request_config stream insertion operator 
> works", "[request-config]")
> -
> -       ::std::string expected("gpiod::request_config(consumer='foobar', 
> event_buffer_size=32)");
> -
> --      REQUIRE_THAT(buf.str(), Catch::Equals(expected));
> -+      REQUIRE_THAT(buf.str(), Catch::Matchers::Equals(expected));
> - }
> -
> - } /* namespace */
> -diff --git a/configure.ac b/configure.ac
> -index a2370c5..216007e 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -206,9 +206,9 @@ then
> -
> -       if test "x$with_tests" = xtrue
> -       then
> --              PKG_CHECK_MODULES([CATCH2], [catch2],, [
> -+              PKG_CHECK_MODULES([CATCH2], [catch2-with-main],, [
> -                       AC_LANG_PUSH([C++])
> --                      AC_CHECK_HEADERS([catch2/catch.hpp], [], 
> [HEADER_NOT_FOUND_CXX([catch2/catch.hpp])])
> -+                      AC_CHECK_HEADERS([catch2/catch_all.hpp], [], 
> [HEADER_NOT_FOUND_CXX([catch2/catch_all.hpp])])
> -                       AC_LANG_POP([C++])
> -               ])
> -       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 @@
> +#! /bin/sh
> +### BEGIN INIT INFO
> +# Provides:            gpio-manager
> +# Required-Start:      $remote_fs $syslog
> +# Required-Stop:       $remote_fs $syslog
> +# Default-Start:       2 3 4 5
> +# Default-Stop:                1
> +# Short-Description:   Centralized GPIO manager daemon
> +### END INIT INFO
> +#
> +# -*- coding: utf-8 -*-
> +# Debian init.d script for gpio-manager
> +# Copyright (c) 2024 Bartosz Golaszewski <[email protected]>
> +
> +# set -e
> +
> +# Source function library.
> +. /etc/init.d/functions
> +
> +DAEMON=/usr/bin/gpio-manager
> +NAME=gpio-manager
> +PIDFILE=/var/run/gpio-manager/pid
> +DESC="GPIO manager daemon"
> +
> +test -x $DAEMON || exit 0
> +test "$ENABLED" != "0" || exit 0
> +
> +do_start()
> +{
> +       mkdir -p "`dirname $PIDFILE`"
> +       if [ -e $PIDFILE ]; then
> +               PIDDIR=/proc/$(cat $PIDFILE)
> +               if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = 
> "${DAEMON}" ]; then
> +                       echo "$DESC already started; not starting."
> +               else
> +                       echo "Removing stale PID file $PIDFILE."
> +                       rm -f $PIDFILE
> +               fi
> +       fi
> +
> +       echo -n "Starting $DESC: "
> +       start-stop-daemon --user gpio-manager --background --start --quiet 
> --make-pidfile --pidfile $PIDFILE --exec $DAEMON
> +       echo "$NAME."
> +}
> +
> +do_stop()
> +{
> +       echo -n "Stopping $DESC: "
> +       start-stop-daemon --stop --quiet --pidfile $PIDFILE
> +       echo "$NAME."
> +       rm -f $PIDFILE
> +}
> +
> +case "$1" in
> +       start)
> +               do_start
> +       ;;
> +       stop)
> +               do_stop
> +       ;;
> +       status)
> +               status $DAEMON
> +               exit $?
> +       ;;
> +       restart)
> +               do_stop
> +               sleep 1
> +               do_start
> +       ;;
> +       *)
> +               echo "Usage: /etc/init.d/$NAME {start|stop|status|restart}" 
> >&2
> +               exit 1
> +       ;;
> +esac
> +
> +exit 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 @@
>  #!/bin/sh
>
> -testbins="gpiod-test gpio-tools-test.bash gpiod-cxx-test"
> -
>  ptestdir=$(dirname "$(readlink -f "$0")")
>  cd $ptestdir/tests
>
> +export GPIODBUS_TEST_DAEMON_PATH="$ptestdir/tests/gpio-manager"
> +export PATH="$ptestdir/tests/:$PATH"
> +
>  # libgpiod v2 uses gpio-sim - a configfs-based testing module. We need to
>  # make sure configfs is mounted before running any tests.
>  modprobe configfs
>  mountpoint /sys/kernel/config > /dev/null || mount -t configfs configfs 
> /sys/kernel/config
>
> -for testbin in $testbins; do
> -       if test -e ./$testbin; then
> -               ./$testbin > ./$testbin.out 2>&1
> -               if [ $? -ne 0 ]; then
> -                       echo "FAIL: $testbin"
> -               else
> -                       echo "PASS: $testbin"
> -               fi
> +# Make sure the daemon is not running during tests.
> +systemctl stop gpio-manager 2> /dev/null > /dev/null
> +service gpio-manager stop 2> /dev/null > /dev/null
> +
> +run_one_test() {
> +       testbin="$1"
> +
> +       ./$testbin > ./$testbin.out 2>&1
> +       if [ $? -ne 0 ]; then
> +               echo "FAIL: $testbin"
>         else
> -               echo "SKIP: $testbin"
> +               echo "PASS: $testbin"
>         fi
> -done
> +}
> +
> +run_one_test gpiod-test
> +run_one_test gpio-tools-test.bash
> +run_one_test gpiod-cxx-test
> +run_one_test gpiod-glib-test
> +
> +# Wait for the leftover uevents to be emitted before running DBus tests.
> +udevadm settle
> +run_one_test gpiodbus-test
> +
> +udevadm settle
> +gpio-manager 2> /dev/null > /dev/null &
> +GPIO_MANAGER_PID=$!
> +run_one_test gpiocli-test.bash
> +kill $GPIO_MANAGER_PID
> +wait $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 @@
> -require libgpiod.inc
> -
> -LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
> -LIC_FILES_CHKSUM = " \
> -    
> file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> -    
> file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
> -    file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
> -"
> -
> -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
> -
> -SRC_URI += "file://0001-bindings-cxx-Migrate-C-tests-to-use-Catch2-v3.patch"
> -SRC_URI[sha256sum] = 
> "2be4c0b03e995d236c0e476e14aeb475d7b431dd1439609b6d65c540f91eaf58"
> -
> -# Enable all project features for ptest
> -PACKAGECONFIG[tests] = "--enable-tests --enable-tools --enable-bindings-cxx 
> --enable-gpioset-interactive,--disable-tests,kmod util-linux glib-2.0 catch2 
> libedit"
> -PACKAGECONFIG[gpioset-interactive] = 
> "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
> -
> -PACKAGES =+ "${PN}-ptest-dev"
> -FILES:${PN}-tools += "${bindir}/gpionotify"
> -FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
> -FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
> -
> -RDEPENDS:${PN}-ptest += " \
> -    ${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2 bash', '', d)} \
> -"
> -RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim kernel-module-configfs"
> -
> -do_install_ptest:append() {
> -    install -m 0755 ${B}/bindings/cxx/tests/.libs/gpiod-cxx-test 
> ${D}${PTEST_PATH}/tests/
> -    install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
> -    install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
> -}
> 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..acb89434b
> --- /dev/null
> +++ b/meta-oe/recipes-support/libgpiod/libgpiod_2.2.bb
> @@ -0,0 +1,98 @@
> +require libgpiod.inc
> +
> +inherit systemd update-rc.d useradd gobject-introspection
> +
> +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
> +LIC_FILES_CHKSUM = " \
> +    
> file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> +    
> file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
> +    file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
> +"
> +
> +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
> +
> +SRC_URI += "file://gpio-manager.init"
> +
> +SRC_URI[sha256sum] = 
> "0d72266929e5347aa939e87d3e4e9bbed2fcd0f9a0b4d73d5384505fc6344939"
> +
> +S = "${UNPACKDIR}/${PN}-2.2"
> +
> +# Enable all project features for ptest
> +PACKAGECONFIG[tests] = " \
> +    --enable-tests --enable-tools --enable-bindings-cxx 
> --enable-bindings-glib --enable-gpioset-interactive --enable-dbus, \
> +    --disable-tests, \
> +    kmod util-linux glib-2.0 catch2 libedit glib-2.0-native libgudev, \
> +    bash glib-2.0-utils libgpiod-manager shunit2 \
> +"
> +PACKAGECONFIG[gpioset-interactive] = 
> "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
> +PACKAGECONFIG[glib] = 
> "--enable-bindings-glib,--disable-bindings-glib,glib-2.0 glib-2.0-native"
> +PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,glib-2.0 glib-2.0-native 
> libgudev"
> +
> +PACKAGES =+ "${PN}-ptest-dev ${PN}-glib ${PN}-manager ${PN}-cli"
> +FILES:${PN}-tools += "${bindir}/gpionotify"
> +FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
> +FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
> +FILES:${PN}-glib += "${libdir}/libgpiod-glib.so.*"
> +FILES:${PN}-manager += " \
> +    ${bindir}/gpio-manager \
> +    ${sysconfdir}/dbus-1/system.d/io.gpiod1.conf \
> +    ${datadir}/dbus-1/interfaces/io.gpiod1.xml \
> +    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 
> '${systemd_system_unitdir}/gpio-manager.service', '', d)} \
> +    ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 
> '${sysconfdir}/init.d/gpio-manager', '', d)} \
> +"
> +FILES:${PN}-cli += "${bindir}/gpiocli"
> +
> +RDEPENDS:${PN}-manager += "dbus"
> +
> +SYSTEMD_PACKAGES = "${PN}-manager"
> +
> +python __anonymous() {
> +    distro_features = d.getVar("DISTRO_FEATURES").split()
> +    packageconfig = d.getVar("PACKAGECONFIG").split()
> +    pn = d.getVar("PN")
> +
> +    if "systemd" in distro_features and "dbus" in packageconfig:
> +        d.appendVar("EXTRA_OECONF", " --enable-systemd")
> +        # We need to set it conditionally or else the systemd class will look
> +        # for the file that we don't install with systemd support disabled.
> +        d.setVar("SYSTEMD_SERVICE:{}-manager".format(pn), 
> "gpio-manager.service")
> +    else:
> +        d.appendVar("EXTRA_OECONF", " --disable-systemd")
> +}
> +
> +UPDATERCPN = "${PN}-manager"
> +INITSCRIPT_NAME = "gpio-manager"
> +INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 20 0 1 6 ."
> +
> +USERADD_PACKAGES = "${PN}-manager"
> +GROUPADD_PARAM:${PN}-manager = "--system gpio"
> +USERADD_PARAM:${PN}-manager = "--system -M -s /bin/nologin -g gpio 
> gpio-manager"
> +
> +RDEPENDS:${PN}-ptest += " \
> +    ${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2 bash', '', d)} \
> +"
> +RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim kernel-module-configfs"
> +INSANE_SKIP:${PN}-ptest += "buildpaths"
> +
> +do_compile:prepend() {
> +    export GIR_EXTRA_LIBS_PATH="${B}/lib/.libs"
> +}
> +
> +do_install:append() {
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', 
> d)}; then
> +        install -d ${D}${sysconfdir}/init.d
> +        install -m 0755 ${UNPACKDIR}/gpio-manager.init 
> ${D}${sysconfdir}/init.d/gpio-manager
> +    fi
> +}
> +
> +do_install_ptest:append() {
> +    install -m 0755 ${B}/bindings/cxx/tests/.libs/gpiod-cxx-test 
> ${D}${PTEST_PATH}/tests/
> +    install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
> +    install -m 0644 ${S}/tests/scripts/gpiod-bash-test-helper.inc 
> ${D}${PTEST_PATH}/tests/
> +    install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
> +    install -m 0755 ${B}/bindings/glib/tests/.libs/gpiod-glib-test 
> ${D}${PTEST_PATH}/tests/
> +    install -m 0755 ${B}/dbus/tests/.libs/gpiodbus-test 
> ${D}${PTEST_PATH}/tests/
> +    install -m 0755 ${S}/dbus/client/gpiocli-test.bash 
> ${D}${PTEST_PATH}/tests/
> +    install -m 0755 ${B}/dbus/manager/.libs/gpio-manager 
> ${D}${PTEST_PATH}/tests/
> +    install -m 0755 ${B}/dbus/client/.libs/gpiocli ${D}${PTEST_PATH}/tests/
> +}
> --
> 2.30.2
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#113139): 
https://lists.openembedded.org/g/openembedded-devel/message/113139
Mute This Topic: https://lists.openembedded.org/mt/109149746/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to