[Buildroot] [PATCH v6 5/6] package/canvenient: new package

Dario Binacchi <[email protected]>
Newsgroups net.busybox.buildroot
Message-ID <[email protected]>
CANvenient is an abstraction layer for multiple CAN APIs on Windows and
Linux. It provides a unified interface for CAN communication, allowing
developers to write code that is portable across different platforms and
CAN hardware.

Project page: https://github.com/CANopenTerm/CANvenient

Signed-off-by: Dario Binacchi <[email protected]>
---
 DEVELOPERS                                    |  1 +
 package/Config.in                             |  1 +
 .../canvenient/0001-Fix-build-with-musl.patch | 43 +++++++++++++++++++
 package/canvenient/Config.in                  | 13 ++++++
 package/canvenient/canvenient.hash            |  3 ++
 package/canvenient/canvenient.mk              | 14 ++++++
 6 files changed, 75 insertions(+)
 create mode 100644 package/canvenient/0001-Fix-build-with-musl.patch
 create mode 100644 package/canvenient/Config.in
 create mode 100644 package/canvenient/canvenient.hash
 create mode 100644 package/canvenient/canvenient.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 2de3312fe9c8..49c5b93c13ed 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -820,6 +820,7 @@ F:	package/armadillo/
 F:	package/atf/
 F:	package/babeld/
 F:	package/bc/
+F:	package/canvenient/
 F:	package/cmocka/
 F:	package/connman/
 F:	package/drogon/
diff --git a/package/Config.in b/package/Config.in
index 7ae097582e3c..8fae0a27e7f6 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1992,6 +1992,7 @@ menu "Networking"
 	source "package/batman-adv/Config.in"
 	source "package/bluez5_utils-headers/Config.in"
 	source "package/c-ares/Config.in"
+	source "package/canvenient/Config.in"
 	source "package/cni-plugins/Config.in"
 	source "package/cpp-httplib/Config.in"
 	source "package/cppzmq/Config.in"
diff --git a/package/canvenient/0001-Fix-build-with-musl.patch b/package/canvenient/0001-Fix-build-with-musl.patch
new file mode 100644
index 000000000000..8043a87ac743
--- /dev/null
+++ b/package/canvenient/0001-Fix-build-with-musl.patch
@@ -0,0 +1,43 @@
+From 46ac90d46b7773a804cd0bbaf71fa487bcc4cca8 Mon Sep 17 00:00:00 2001
+From: Dario Binacchi <[email protected]>
+Date: Sat, 22 Aug 2026 17:38:47 +0200
+Subject: [PATCH] Fix build with musl
+
+This was exposed while integrating the package into Buildroot and
+testing its compilation with a musl-based toolchain:
+
+  CANvenient_SocketCAN.c: In function 'socketcan_open':
+  CANvenient_SocketCAN.c:186:24: error: storage size of 'tv' isn't known
+    186 |         struct timeval tv;
+        |                        ^~
+  CANvenient_SocketCAN.c: In function 'socketcan_recv':
+  CANvenient_SocketCAN.c:364:36: error: invalid application of 'sizeof' to incomplete type 'struct timeval'
+    364 |     char ctrlmsg[CMSG_SPACE(sizeof(struct timeval))];
+        |                                    ^~~~~~
+  CANvenient_SocketCAN.c:406:28: error: invalid use of undefined type 'const struct timeval'
+    406 |             *timestamp = tv->tv_sec * 1000000ULL + tv->tv_usec;
+        |                            ^~
+
+Include <sys/time.h> to fix the build.
+
+Signed-off-by: Dario Binacchi <[email protected]>
+Upstream: https://github.com/CANopenTerm/CANvenient/pull/6
+---
+ src/drivers/CANvenient_SocketCAN.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/drivers/CANvenient_SocketCAN.c b/src/drivers/CANvenient_SocketCAN.c
+index d4db584ff51d..fb356b8f227f 100644
+--- a/src/drivers/CANvenient_SocketCAN.c
++++ b/src/drivers/CANvenient_SocketCAN.c
+@@ -20,6 +20,7 @@ void socketcan_close(int index);
+ #include <dirent.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
++#include <sys/time.h>
+ #include <net/if.h>
+ #include <linux/can.h>
+ #include <linux/can/raw.h>
+-- 
+2.43.0
+
diff --git a/package/canvenient/Config.in b/package/canvenient/Config.in
new file mode 100644
index 000000000000..6989bf496ef3
--- /dev/null
+++ b/package/canvenient/Config.in
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_CANVENIENT
+	bool "canvenient"
+	depends on !BR2_STATIC_LIBS
+	select BR2_PACKAGE_LIBSOCKETCAN
+	help
+	  CANvenient is a portable CAN abstraction library
+	  supporting several driver backends. On Linux it is
+	  implemented on top of SocketCAN.
+
+	  https://github.com/CANopenTerm/CANvenient
+
+comment "canvenient needs a toolchain w/ dynamic library"
+	depends on BR2_STATIC_LIBS
diff --git a/package/canvenient/canvenient.hash b/package/canvenient/canvenient.hash
new file mode 100644
index 000000000000..32b5559d3503
--- /dev/null
+++ b/package/canvenient/canvenient.hash
@@ -0,0 +1,3 @@
+# Locally computed
+sha256  dae4c0a4b6a2b62220341466509a57d9a10ee5cc60be5a2def42d0afd345dc41  canvenient-1.02.tar.gz
+sha256  877e5e09cf4243583c7b0593d1453343f6e8d67977e3e4e97ed001dd0856a334  LICENSE.md
diff --git a/package/canvenient/canvenient.mk b/package/canvenient/canvenient.mk
new file mode 100644
index 000000000000..68b5af3dcc4d
--- /dev/null
+++ b/package/canvenient/canvenient.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# canvenient
+#
+################################################################################
+
+CANVENIENT_VERSION = 1.02
+CANVENIENT_SITE = $(call github,CANopenTerm,CANvenient,v$(CANVENIENT_VERSION))
+CANVENIENT_LICENSE = MIT
+CANVENIENT_LICENSE_FILES = LICENSE.md
+CANVENIENT_INSTALL_STAGING = YES
+CANVENIENT_DEPENDENCIES = libsocketcan
+
+$(eval $(cmake-package))
-- 
2.43.0

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.