* [Buildroot] [PATCH 0/2] package: add libyang-cpp and sysrepo-cpp
@ 2025-12-05 10:06 Vincent Jardin via buildroot
2025-12-05 10:06 ` [Buildroot] [PATCH 1/2] libyang-cpp: new package Vincent Jardin via buildroot
2025-12-05 10:06 ` [Buildroot] [PATCH 2/2] package/sysrepo-cpp: " Vincent Jardin via buildroot
0 siblings, 2 replies; 5+ messages in thread
From: Vincent Jardin via buildroot @ 2025-12-05 10:06 UTC (permalink / raw)
To: buildroot; +Cc: vjardin
Hi,
this small series adds C++ bindings for the YANG stack used by sysrepo:
- package/libyang-cpp: C++ RAII bindings for libyang v4
- package/sysrepo-cpp: C++ RAII bindings for the sysrepo datastore
Both packages are used together in our projects, hence sent as a single
series.
Runtime has been validated with the following test configuration:
BR2_PACKAGE_SYSREPO_CPP=y
Both are sent with the same serie since since sysrepo shall be used with
libyang.
The series has been built and run-tested in GitLab CI:
- https://gitlab.com/vjardin/buildroot/-/pipelines/2195059828
>> it is the state before those contributions. It shows a problem
with the bootlin toolchain
- https://gitlab.com/vjardin/buildroot/-/pipelines/2194922330
>> ok for sysrepo-cpp and libyang-cpp ; same failure with bootlin
toolchain.
Vincent Jardin (2):
libyang-cpp: new package
package/sysrepo-cpp: new package
DEVELOPERS | 2 ++
package/Config.in | 2 ++
package/libyang-cpp/Config.in | 15 +++++++++++++++
package/libyang-cpp/libyang-cpp.hash | 3 +++
package/libyang-cpp/libyang-cpp.mk | 22 ++++++++++++++++++++++
package/sysrepo-cpp/Config.in | 20 ++++++++++++++++++++
package/sysrepo-cpp/sysrepo-cpp.hash | 3 +++
package/sysrepo-cpp/sysrepo-cpp.mk | 26 ++++++++++++++++++++++++++
8 files changed, 93 insertions(+)
create mode 100644 package/libyang-cpp/Config.in
create mode 100644 package/libyang-cpp/libyang-cpp.hash
create mode 100644 package/libyang-cpp/libyang-cpp.mk
create mode 100644 package/sysrepo-cpp/Config.in
create mode 100644 package/sysrepo-cpp/sysrepo-cpp.hash
create mode 100644 package/sysrepo-cpp/sysrepo-cpp.mk
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 1/2] libyang-cpp: new package
2025-12-05 10:06 [Buildroot] [PATCH 0/2] package: add libyang-cpp and sysrepo-cpp Vincent Jardin via buildroot
@ 2025-12-05 10:06 ` Vincent Jardin via buildroot
2025-12-28 13:22 ` Thomas Petazzoni via buildroot
2025-12-05 10:06 ` [Buildroot] [PATCH 2/2] package/sysrepo-cpp: " Vincent Jardin via buildroot
1 sibling, 1 reply; 5+ messages in thread
From: Vincent Jardin via buildroot @ 2025-12-05 10:06 UTC (permalink / raw)
To: buildroot; +Cc: vjardin
Add C++ RAII bindings for libyang (v4).
Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
DEVELOPERS | 1 +
package/Config.in | 1 +
package/libyang-cpp/Config.in | 15 +++++++++++++++
package/libyang-cpp/libyang-cpp.hash | 3 +++
package/libyang-cpp/libyang-cpp.mk | 22 ++++++++++++++++++++++
5 files changed, 42 insertions(+)
create mode 100644 package/libyang-cpp/Config.in
create mode 100644 package/libyang-cpp/libyang-cpp.hash
create mode 100644 package/libyang-cpp/libyang-cpp.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index 5e1fa6401f..4b5d0839bf 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -3345,6 +3345,7 @@ F: configs/nvidia_bf3_defconfig
F: package/bfscripts/
F: package/dpdk/
F: package/libecoli/
+F: package/libyang-cpp/
N: Vincent Prince <vincent.prince.fr@gmail.com>
F: package/nss-myhostname/
diff --git a/package/Config.in b/package/Config.in
index 83414b3e0b..b5892fe28b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2103,6 +2103,7 @@ menu "Networking"
source "package/libvncserver/Config.in"
source "package/libwebsockets/Config.in"
source "package/libyang/Config.in"
+ source "package/libyang-cpp/Config.in"
source "package/libzenoh-c/Config.in"
source "package/libzenoh-pico/Config.in"
source "package/lksctp-tools/Config.in"
diff --git a/package/libyang-cpp/Config.in b/package/libyang-cpp/Config.in
new file mode 100644
index 0000000000..5bb79ffb2e
--- /dev/null
+++ b/package/libyang-cpp/Config.in
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_LIBYANG_CPP
+ bool "libyang-cpp"
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
+ select BR2_PACKAGE_LIBYANG
+ help
+ C++ bindings for the libyang library (v4).
+
+ libyang-cpp implements modern C++ RAII wrappers around the libyang
+ C API, used by sysrepo, Kea + NETCONF, etc.
+
+ https://github.com/CESNET/libyang-cpp
+
+comment "libyang-cpp needs a toolchain w/ C++, gcc >= 10"
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_10
diff --git a/package/libyang-cpp/libyang-cpp.hash b/package/libyang-cpp/libyang-cpp.hash
new file mode 100644
index 0000000000..cf4dc8085d
--- /dev/null
+++ b/package/libyang-cpp/libyang-cpp.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 70fd0df940026fb930d5407abe679e064caf4701bff35d79465b9ad2c0915808 libyang-cpp-4.tar.gz
+sha256 82e3758011ec44c78e98d0777799d6e12aec5b8a64b32ebb20d0fe50e32488bb LICENSE
diff --git a/package/libyang-cpp/libyang-cpp.mk b/package/libyang-cpp/libyang-cpp.mk
new file mode 100644
index 0000000000..1fb109b03d
--- /dev/null
+++ b/package/libyang-cpp/libyang-cpp.mk
@@ -0,0 +1,22 @@
+################################################################################
+#
+# libyang-cpp
+#
+################################################################################
+
+LIBYANG_CPP_VERSION = 4
+LIBYANG_CPP_SITE = $(call github,CESNET,libyang-cpp,v$(LIBYANG_CPP_VERSION))
+LIBYANG_CPP_LICENSE = BSD-3-Clause
+LIBYANG_CPP_LICENSE_FILES = LICENSE
+
+LIBYANG_CPP_INSTALL_STAGING = YES
+
+LIBYANG_CPP_SUPPORTS_IN_SOURCE_BUILD = NO
+
+LIBYANG_CPP_DEPENDENCIES = libyang
+
+LIBYANG_CPP_CONF_OPTS = \
+ -DBUILD_TESTING=OFF \
+ -DWITH_DOCS=OFF
+
+$(eval $(cmake-package))
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 2/2] package/sysrepo-cpp: new package
2025-12-05 10:06 [Buildroot] [PATCH 0/2] package: add libyang-cpp and sysrepo-cpp Vincent Jardin via buildroot
2025-12-05 10:06 ` [Buildroot] [PATCH 1/2] libyang-cpp: new package Vincent Jardin via buildroot
@ 2025-12-05 10:06 ` Vincent Jardin via buildroot
2025-12-28 13:24 ` Thomas Petazzoni via buildroot
1 sibling, 1 reply; 5+ messages in thread
From: Vincent Jardin via buildroot @ 2025-12-05 10:06 UTC (permalink / raw)
To: buildroot; +Cc: vjardin
Add a Buildroot package for sysrepo-cpp, providing modern C++ RAII
bindings for the sysrepo YANG datastore library.
Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
DEVELOPERS | 1 +
package/Config.in | 1 +
package/sysrepo-cpp/Config.in | 20 ++++++++++++++++++++
package/sysrepo-cpp/sysrepo-cpp.hash | 3 +++
package/sysrepo-cpp/sysrepo-cpp.mk | 26 ++++++++++++++++++++++++++
5 files changed, 51 insertions(+)
create mode 100644 package/sysrepo-cpp/Config.in
create mode 100644 package/sysrepo-cpp/sysrepo-cpp.hash
create mode 100644 package/sysrepo-cpp/sysrepo-cpp.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index 4b5d0839bf..ef3fc769f7 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -3346,6 +3346,7 @@ F: package/bfscripts/
F: package/dpdk/
F: package/libecoli/
F: package/libyang-cpp/
+F: package/sysrepo-cpp/
N: Vincent Prince <vincent.prince.fr@gmail.com>
F: package/nss-myhostname/
diff --git a/package/Config.in b/package/Config.in
index b5892fe28b..7091249b4b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2142,6 +2142,7 @@ menu "Networking"
source "package/sofia-sip/Config.in"
source "package/sscep/Config.in"
source "package/sysrepo/Config.in"
+ source "package/sysrepo-cpp/Config.in"
source "package/thrift/Config.in"
source "package/usbredir/Config.in"
source "package/wampcc/Config.in"
diff --git a/package/sysrepo-cpp/Config.in b/package/sysrepo-cpp/Config.in
new file mode 100644
index 0000000000..5cdfefa025
--- /dev/null
+++ b/package/sysrepo-cpp/Config.in
@@ -0,0 +1,20 @@
+config BR2_PACKAGE_SYSREPO_CPP
+ bool "sysrepo-cpp"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
+ depends on !BR2_STATIC_LIBS
+ depends on !BR2_TOOLCHAIN_USES_UCLIBC
+ select BR2_PACKAGE_SYSREPO
+ select BR2_PACKAGE_LIBYANG_CPP
+ help
+ C++20 RAII bindings for the sysrepo YANG datastore library.
+
+ This library provides modern C++ object-oriented bindings on top
+ of sysrepo, using RAII for automatic lifetime management.
+
+ https://github.com/sysrepo/sysrepo-cpp
+
+comment "sysrepo-cpp needs a toolchain w/ C++, threads, dynamic libs, gcc >= 10"
+ depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \
+ BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_10
diff --git a/package/sysrepo-cpp/sysrepo-cpp.hash b/package/sysrepo-cpp/sysrepo-cpp.hash
new file mode 100644
index 0000000000..43a1bc439f
--- /dev/null
+++ b/package/sysrepo-cpp/sysrepo-cpp.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 d7fbeaba7f2fdaf70c67cc70f438943eee636b21f08854e58967d0d97801bacc sysrepo-cpp-6.tar.gz
+sha256 82e3758011ec44c78e98d0777799d6e12aec5b8a64b32ebb20d0fe50e32488bb LICENSE
diff --git a/package/sysrepo-cpp/sysrepo-cpp.mk b/package/sysrepo-cpp/sysrepo-cpp.mk
new file mode 100644
index 0000000000..bbe81289b1
--- /dev/null
+++ b/package/sysrepo-cpp/sysrepo-cpp.mk
@@ -0,0 +1,26 @@
+################################################################################
+#
+# sysrepo-cpp
+#
+################################################################################
+
+SYSREPO_CPP_VERSION = 6
+SYSREPO_CPP_SITE = $(call github,sysrepo,sysrepo-cpp,v$(SYSREPO_CPP_VERSION))
+
+SYSREPO_CPP_LICENSE = BSD-3-Clause
+SYSREPO_CPP_LICENSE_FILES = LICENSE
+
+SYSREPO_CPP_INSTALL_STAGING = YES
+SYSREPO_CPP_INSTALL_TARGET = YES
+
+SYSREPO_CPP_CONF_OPTS += \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_TESTING=OFF \
+ -DWITH_DOCS=OFF \
+ -DWITH_EXAMPLES=OFF
+
+SYSREPO_CPP_SUPPORTS_IN_SOURCE_BUILD = NO
+
+SYSREPO_CPP_DEPENDENCIES = sysrepo libyang-cpp
+
+$(eval $(cmake-package))
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH 1/2] libyang-cpp: new package
2025-12-05 10:06 ` [Buildroot] [PATCH 1/2] libyang-cpp: new package Vincent Jardin via buildroot
@ 2025-12-28 13:22 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-12-28 13:22 UTC (permalink / raw)
To: Vincent Jardin via buildroot; +Cc: Vincent Jardin
Hello Vincent,
I have applied your patch, after doing a small number of tweaks, see
below.
On Fri, 5 Dec 2025 11:06:25 +0100
Vincent Jardin via buildroot <buildroot@buildroot.org> wrote:
> diff --git a/package/libyang-cpp/Config.in b/package/libyang-cpp/Config.in
> new file mode 100644
> index 0000000000..5bb79ffb2e
> --- /dev/null
> +++ b/package/libyang-cpp/Config.in
> @@ -0,0 +1,15 @@
> +config BR2_PACKAGE_LIBYANG_CPP
> + bool "libyang-cpp"
> + depends on BR2_INSTALL_LIBSTDCPP
> + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
> + select BR2_PACKAGE_LIBYANG
You forgot to replicate the "depends on" of BR2_PACKAGE_LIBYANG, so I
fixed this to:
bool "libyang-cpp"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libyang
depends on BR2_TOOLCHAIN_HAS_THREADS # libyang
depends on !BR2_STATIC_LIBS # libyang
select BR2_PACKAGE_LIBYANG
> + help
> + C++ bindings for the libyang library (v4).
> +
> + libyang-cpp implements modern C++ RAII wrappers around the libyang
This line was too long, spotted by "make check-package".
> + C API, used by sysrepo, Kea + NETCONF, etc.
> +
> + https://github.com/CESNET/libyang-cpp
> +
> +comment "libyang-cpp needs a toolchain w/ C++, gcc >= 10"
> + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_10
Had to update this according to the new dependencies.
> diff --git a/package/libyang-cpp/libyang-cpp.mk b/package/libyang-cpp/libyang-cpp.mk
> new file mode 100644
> index 0000000000..1fb109b03d
> --- /dev/null
> +++ b/package/libyang-cpp/libyang-cpp.mk
> @@ -0,0 +1,22 @@
> +################################################################################
> +#
> +# libyang-cpp
> +#
> +################################################################################
> +
> +LIBYANG_CPP_VERSION = 4
> +LIBYANG_CPP_SITE = $(call github,CESNET,libyang-cpp,v$(LIBYANG_CPP_VERSION))
> +LIBYANG_CPP_LICENSE = BSD-3-Clause
> +LIBYANG_CPP_LICENSE_FILES = LICENSE
> +
> +LIBYANG_CPP_INSTALL_STAGING = YES
> +
> +LIBYANG_CPP_SUPPORTS_IN_SOURCE_BUILD = NO
> +
> +LIBYANG_CPP_DEPENDENCIES = libyang
A bit too many empty lines here (really just a matter of taste).
> +LIBYANG_CPP_CONF_OPTS = \
> + -DBUILD_TESTING=OFF \
-DBUILD_TESTING=OFF is not needed, it's already passed by default by
cmake-package.
Applied with those changes, thanks!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH 2/2] package/sysrepo-cpp: new package
2025-12-05 10:06 ` [Buildroot] [PATCH 2/2] package/sysrepo-cpp: " Vincent Jardin via buildroot
@ 2025-12-28 13:24 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-12-28 13:24 UTC (permalink / raw)
To: Vincent Jardin via buildroot; +Cc: Vincent Jardin
Hello Vincent,
Thanks for the patch, which I have applied with a few tweaks, see below.
On Fri, 5 Dec 2025 11:06:26 +0100
Vincent Jardin via buildroot <buildroot@buildroot.org> wrote:
> diff --git a/package/sysrepo-cpp/Config.in b/package/sysrepo-cpp/Config.in
> new file mode 100644
> index 0000000000..5cdfefa025
> --- /dev/null
> +++ b/package/sysrepo-cpp/Config.in
> @@ -0,0 +1,20 @@
> +config BR2_PACKAGE_SYSREPO_CPP
> + bool "sysrepo-cpp"
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on BR2_INSTALL_LIBSTDCPP
> + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
> + depends on !BR2_STATIC_LIBS
> + depends on !BR2_TOOLCHAIN_USES_UCLIBC
I had to update this to properly propagate all the dependencies:
depends on BR2_USE_MMU # sysrepo
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # sysrepo
depends on !BR2_STATIC_LIBS # sysrepo, libyang-cpp
depends on BR2_INSTALL_LIBSTDCPP # sysrepo, libyang-cpp
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # libyang-cpp
depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libyang-cpp
# std::timespec build issue
depends on !BR2_TOOLCHAIN_USES_UCLIBC
> + select BR2_PACKAGE_SYSREPO
> + select BR2_PACKAGE_LIBYANG_CPP
> + help
> + C++20 RAII bindings for the sysrepo YANG datastore library.
> +
> + This library provides modern C++ object-oriented bindings on top
Line was too long.
> + of sysrepo, using RAII for automatic lifetime management.
> +
> + https://github.com/sysrepo/sysrepo-cpp
> +
> +comment "sysrepo-cpp needs a toolchain w/ C++, threads, dynamic libs, gcc >= 10"
> + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \
> + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_10
Updated this based on the dependencies.
> diff --git a/package/sysrepo-cpp/sysrepo-cpp.mk b/package/sysrepo-cpp/sysrepo-cpp.mk
> new file mode 100644
> index 0000000000..bbe81289b1
> --- /dev/null
> +++ b/package/sysrepo-cpp/sysrepo-cpp.mk
> @@ -0,0 +1,26 @@
> +################################################################################
> +#
> +# sysrepo-cpp
> +#
> +################################################################################
> +
> +SYSREPO_CPP_VERSION = 6
> +SYSREPO_CPP_SITE = $(call github,sysrepo,sysrepo-cpp,v$(SYSREPO_CPP_VERSION))
We don't align spaces.
> +
Excessive empty line.
> +SYSREPO_CPP_LICENSE = BSD-3-Clause
> +SYSREPO_CPP_LICENSE_FILES = LICENSE
> +
> +SYSREPO_CPP_INSTALL_STAGING = YES
> +SYSREPO_CPP_INSTALL_TARGET = YES
This last line is not needed, that's the default.
> +
> +SYSREPO_CPP_CONF_OPTS += \
> + -DCMAKE_BUILD_TYPE=Release \
Not needed, CMAKE_BUILD_TYPE is handled by the cmake-package infra.
> + -DBUILD_TESTING=OFF \
Same.
> + -DWITH_DOCS=OFF \
> + -DWITH_EXAMPLES=OFF
> +
> +SYSREPO_CPP_SUPPORTS_IN_SOURCE_BUILD = NO
> +
> +SYSREPO_CPP_DEPENDENCIES = sysrepo libyang-cpp
> +
> +$(eval $(cmake-package))
Applied with those tweaks. Thanks a lot!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-12-28 13:25 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-05 10:06 [Buildroot] [PATCH 0/2] package: add libyang-cpp and sysrepo-cpp Vincent Jardin via buildroot
2025-12-05 10:06 ` [Buildroot] [PATCH 1/2] libyang-cpp: new package Vincent Jardin via buildroot
2025-12-28 13:22 ` Thomas Petazzoni via buildroot
2025-12-05 10:06 ` [Buildroot] [PATCH 2/2] package/sysrepo-cpp: " Vincent Jardin via buildroot
2025-12-28 13:24 ` Thomas Petazzoni via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox