[v5] package/canopenterm: new package

Message ID 20250707055824.49575-1-dario.binacchi@amarulasolutions.com
State New
Headers show
Series
  • [v5] package/canopenterm: new package
Related show

Commit Message

Dario Binacchi July 7, 2025, 5:58 a.m. UTC
CANopenTerm is an open-source tool for developing, testing, and
analyzing CANopen CC networks and devices. It provides a technical,
no-nonsense solution for professionals working with CAN CC-based
networks. Additionally, it supports SAE J1939 and OBD-II protocols,
making it versatile for various applications.

Version v1.0.10 was chosen because it is the last one requiring SDL2.
Indeed version v1.0.11 depends on SDL3.

Tested on STM32MP257F-EV1

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>

---

Changes v4 -> v5:
 - Drop patch 1/2 "package/pocketpy: new package" from the series
   because already merged.
 - Change 'Upstream:' reference in the 0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch.
   The patch is now merged.
 - Use 'depends on BR2_PACKAGE_LUA' instead of select in Config.in

Changes v2 -> v3:
 - Replace depends on with select in Config.in
 - Add required depends on based on the depends on of the
   packages selected.
 - Drop CMAKE_VERBOSE_MAKEFILE annd CMAKE_FIND_DEBUG_MODE
   from canopenterm.mk

 DEVELOPERS                                    |  1 +
 package/Config.in                             |  1 +
 ...allation-when-BUILD_YOCTO-is-enabled.patch | 39 +++++++++++++++++++
 package/canopenterm/Config.in                 | 17 ++++++++
 package/canopenterm/canopenterm.hash          |  3 ++
 package/canopenterm/canopenterm.mk            | 15 +++++++
 6 files changed, 76 insertions(+)
 create mode 100644 package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch
 create mode 100644 package/canopenterm/Config.in
 create mode 100644 package/canopenterm/canopenterm.hash
 create mode 100644 package/canopenterm/canopenterm.mk

Comments

Dario Binacchi Sept. 2, 2025, 6:15 a.m. UTC | #1
Hi all,

just a gentle ping regarding this patch.
It has not received any feedback so far, and I’d really appreciate a
review when you have a chance.

Thanks a lot for your time.

Best regards,
Dario

On Mon, Jul 7, 2025 at 7:58 AM Dario Binacchi
<dario.binacchi@amarulasolutions.com> wrote:
>
> CANopenTerm is an open-source tool for developing, testing, and
> analyzing CANopen CC networks and devices. It provides a technical,
> no-nonsense solution for professionals working with CAN CC-based
> networks. Additionally, it supports SAE J1939 and OBD-II protocols,
> making it versatile for various applications.
>
> Version v1.0.10 was chosen because it is the last one requiring SDL2.
> Indeed version v1.0.11 depends on SDL3.
>
> Tested on STM32MP257F-EV1
>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
>
> ---
>
> Changes v4 -> v5:
>  - Drop patch 1/2 "package/pocketpy: new package" from the series
>    because already merged.
>  - Change 'Upstream:' reference in the 0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch.
>    The patch is now merged.
>  - Use 'depends on BR2_PACKAGE_LUA' instead of select in Config.in
>
> Changes v2 -> v3:
>  - Replace depends on with select in Config.in
>  - Add required depends on based on the depends on of the
>    packages selected.
>  - Drop CMAKE_VERBOSE_MAKEFILE annd CMAKE_FIND_DEBUG_MODE
>    from canopenterm.mk
>
>  DEVELOPERS                                    |  1 +
>  package/Config.in                             |  1 +
>  ...allation-when-BUILD_YOCTO-is-enabled.patch | 39 +++++++++++++++++++
>  package/canopenterm/Config.in                 | 17 ++++++++
>  package/canopenterm/canopenterm.hash          |  3 ++
>  package/canopenterm/canopenterm.mk            | 15 +++++++
>  6 files changed, 76 insertions(+)
>  create mode 100644 package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch
>  create mode 100644 package/canopenterm/Config.in
>  create mode 100644 package/canopenterm/canopenterm.hash
>  create mode 100644 package/canopenterm/canopenterm.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 899a3003cad0..477d643cee01 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -808,6 +808,7 @@ F:  configs/stm32f769_disco_sd_defconfig
>  F:     package/aespipe/
>  F:     package/armadillo/
>  F:     package/babeld/
> +F:     package/canopenterm/
>  F:     package/iana-assignments/
>  F:     package/inih/
>  F:     package/pocketpy/
> diff --git a/package/Config.in b/package/Config.in
> index 9a841082c676..b8030acd9774 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -2469,6 +2469,7 @@ endif
>         source "package/c-icap-modules/Config.in"
>         source "package/can-utils/Config.in"
>         source "package/cannelloni/Config.in"
> +       source "package/canopenterm/Config.in"
>         source "package/casync/Config.in"
>         source "package/casync-nano/Config.in"
>         source "package/cfm/Config.in"
> diff --git a/package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch b/package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch
> new file mode 100644
> index 000000000000..53206745dd13
> --- /dev/null
> +++ b/package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch
> @@ -0,0 +1,39 @@
> +From fc150187a2e2ce777e757405eb1d67235fc68d75 Mon Sep 17 00:00:00 2001
> +From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> +Date: Thu, 8 May 2025 15:24:38 +0200
> +Subject: [PATCH] Fix exe installation when BUILD_YOCTO is enabled
> +
> +While building CanopenTerm in Buildroot, with the BUILD_YOCTO option
> +enabled (yes, really :)), the following error is raised:
> +
> +CMake Error at output/build/canopenterm-1.0.10/cmake_install.cmake:114 (file):
> +  file INSTALL cannot find
> +  "buildroot/output/build/canopenterm-1.0.10/CANopenTerm":
> +  No such file or directory.
> +
> +Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> +Upstream: https://github.com/CANopenTerm/CANopenTerm/commit/fc150187a2e2ce777e757405eb1d67235fc68d75
> +---
> + cmake/os_linux.cmake | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/cmake/os_linux.cmake b/cmake/os_linux.cmake
> +index 7c1f8185b2a2..f149bd03fe92 100644
> +--- a/cmake/os_linux.cmake
> ++++ b/cmake/os_linux.cmake
> +@@ -104,10 +104,10 @@ if (BUILD_YOCTO)
> +             DESTINATION /usr/share/CANopenTerm/scripts/utils
> +             FILES_MATCHING PATTERN "*")
> +
> +-    install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/CANopenTerm
> ++    install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/export/CANopenTerm
> +             DESTINATION /usr/bin)
> +
> +-    install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/codb2json
> ++    install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/export/codb2json
> +             DESTINATION /usr/bin)
> +
> +     return()
> +--
> +2.43.0
> +
> diff --git a/package/canopenterm/Config.in b/package/canopenterm/Config.in
> new file mode 100644
> index 000000000000..62dbecb37cd3
> --- /dev/null
> +++ b/package/canopenterm/Config.in
> @@ -0,0 +1,17 @@
> +config BR2_PACKAGE_CANOPENTERM
> +       bool "canopenterm"
> +       depends on BR2_INSTALL_LIBSTDCPP # pocketpy
> +       depends on BR2_PACKAGE_LUA
> +       depends on !BR2_STATIC_LIBS # pocketpy and SDL2
> +       select BR2_PACKAGE_CJSON
> +       select BR2_PACKAGE_INIH
> +       select BR2_PACKAGE_LIBSOCKETCAN
> +       select BR2_PACKAGE_POCKETPY
> +       select BR2_PACKAGE_READLINE
> +       select BR2_PACKAGE_SDL2
> +       help
> +         CANopenTerm is an open-source tool for developing,
> +         testing, and analyzing CANopen CC networks and
> +         devices.
> +
> +         https://github.com/CANopenTerm/CANopenTerm
> diff --git a/package/canopenterm/canopenterm.hash b/package/canopenterm/canopenterm.hash
> new file mode 100644
> index 000000000000..8c403e9bb6af
> --- /dev/null
> +++ b/package/canopenterm/canopenterm.hash
> @@ -0,0 +1,3 @@
> +# locally computed
> +sha256  9de6f472b749f08a5ea9a836604507cd56c71f818a4141a2b989423fbb7beb80  canopenterm-1.0.10.tar.gz
> +sha256  cc555368040b92e77b14289b367ccbebf88344367188862680d40cc885636d3a  LICENSE.md
> diff --git a/package/canopenterm/canopenterm.mk b/package/canopenterm/canopenterm.mk
> new file mode 100644
> index 000000000000..c3883ffef74d
> --- /dev/null
> +++ b/package/canopenterm/canopenterm.mk
> @@ -0,0 +1,15 @@
> +################################################################################
> +#
> +# canopenterm
> +#
> +################################################################################
> +
> +CANOPENTERM_VERSION = 1.0.10
> +CANOPENTERM_SITE = $(call github,CANopenTerm,CANopenTerm,v$(CANOPENTERM_VERSION))
> +CANOPENTERM_LICENSE = MIT
> +CANOPENTERM_LICENSE_FILES = LICENSE.md
> +CANOPENTERM_DEPENDENCIES = cjson inih libsocketcan lua pocketpy readline sdl2
> +
> +CANOPENTERM_CONF_OPTS = -DBUILD_YOCTO=ON
> +
> +$(eval $(cmake-package))
> --
> 2.43.0
>
'Julien Olivain' via Amarula Linux Jan. 4, 2026, 11:11 a.m. UTC | #2
Hello Dario,

Sorry for the very long delay in getting back to you.

On Mon,  7 Jul 2025 07:58:24 +0200
Dario Binacchi <dario.binacchi@amarulasolutions.com> wrote:

> CANopenTerm is an open-source tool for developing, testing, and
> analyzing CANopen CC networks and devices. It provides a technical,
> no-nonsense solution for professionals working with CAN CC-based
> networks. Additionally, it supports SAE J1939 and OBD-II protocols,
> making it versatile for various applications.
> 
> Version v1.0.10 was chosen because it is the last one requiring SDL2.
> Indeed version v1.0.11 depends on SDL3.

This is unfortunately already a red flag. Merging a brand new package
for which we from the start can't use the latest version because we're
missing some dependencies to build the latest releases really isn't
good. So we need to package SDL3.

BTW, it's weird that it *must* use SDL. This thing is a graphical
application? Cannot be built as a command line tool?

> diff --git a/package/canopenterm/Config.in b/package/canopenterm/Config.in
> new file mode 100644
> index 000000000000..62dbecb37cd3
> --- /dev/null
> +++ b/package/canopenterm/Config.in
> @@ -0,0 +1,17 @@
> +config BR2_PACKAGE_CANOPENTERM
> +	bool "canopenterm"
> +	depends on BR2_INSTALL_LIBSTDCPP # pocketpy
> +	depends on BR2_PACKAGE_LUA

Can you try using BR2_PACKAGE_HAS_LUAINTERPRETER instead, and check if
it builds fine when luajit is selected as a Lua interpret?

> +	depends on !BR2_STATIC_LIBS # pocketpy and SDL2

				# pocketpy, sdl2

> +	select BR2_PACKAGE_CJSON
> +	select BR2_PACKAGE_INIH
> +	select BR2_PACKAGE_LIBSOCKETCAN
> +	select BR2_PACKAGE_POCKETPY
> +	select BR2_PACKAGE_READLINE
> +	select BR2_PACKAGE_SDL2
> +	help
> +	  CANopenTerm is an open-source tool for developing,
> +	  testing, and analyzing CANopen CC networks and
> +	  devices.
> +
> +	  https://github.com/CANopenTerm/CANopenTerm

Missing Config.in comment about the C++, dynamic library and lua
dependencies.

> +CANOPENTERM_VERSION = 1.0.10
> +CANOPENTERM_SITE = $(call github,CANopenTerm,CANopenTerm,v$(CANOPENTERM_VERSION))
> +CANOPENTERM_LICENSE = MIT
> +CANOPENTERM_LICENSE_FILES = LICENSE.md
> +CANOPENTERM_DEPENDENCIES = cjson inih libsocketcan lua pocketpy readline sdl2
> +
> +CANOPENTERM_CONF_OPTS = -DBUILD_YOCTO=ON

If I understand correctly this BUILD_YOCTO=ON option is about asking
the build system to use external libraries instead of bundled ones? If
my understanding is correct, then a small comment about this line would
be useful, as it's not quite obvious why it's called BUILD_YOCTO=ON.

Thanks a lot!

Thomas

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 899a3003cad0..477d643cee01 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -808,6 +808,7 @@  F:	configs/stm32f769_disco_sd_defconfig
 F:	package/aespipe/
 F:	package/armadillo/
 F:	package/babeld/
+F:	package/canopenterm/
 F:	package/iana-assignments/
 F:	package/inih/
 F:	package/pocketpy/
diff --git a/package/Config.in b/package/Config.in
index 9a841082c676..b8030acd9774 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2469,6 +2469,7 @@  endif
 	source "package/c-icap-modules/Config.in"
 	source "package/can-utils/Config.in"
 	source "package/cannelloni/Config.in"
+	source "package/canopenterm/Config.in"
 	source "package/casync/Config.in"
 	source "package/casync-nano/Config.in"
 	source "package/cfm/Config.in"
diff --git a/package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch b/package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch
new file mode 100644
index 000000000000..53206745dd13
--- /dev/null
+++ b/package/canopenterm/0001-Fix-exe-installation-when-BUILD_YOCTO-is-enabled.patch
@@ -0,0 +1,39 @@ 
+From fc150187a2e2ce777e757405eb1d67235fc68d75 Mon Sep 17 00:00:00 2001
+From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Date: Thu, 8 May 2025 15:24:38 +0200
+Subject: [PATCH] Fix exe installation when BUILD_YOCTO is enabled
+
+While building CanopenTerm in Buildroot, with the BUILD_YOCTO option
+enabled (yes, really :)), the following error is raised:
+
+CMake Error at output/build/canopenterm-1.0.10/cmake_install.cmake:114 (file):
+  file INSTALL cannot find
+  "buildroot/output/build/canopenterm-1.0.10/CANopenTerm":
+  No such file or directory.
+
+Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Upstream: https://github.com/CANopenTerm/CANopenTerm/commit/fc150187a2e2ce777e757405eb1d67235fc68d75
+---
+ cmake/os_linux.cmake | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/os_linux.cmake b/cmake/os_linux.cmake
+index 7c1f8185b2a2..f149bd03fe92 100644
+--- a/cmake/os_linux.cmake
++++ b/cmake/os_linux.cmake
+@@ -104,10 +104,10 @@ if (BUILD_YOCTO)
+             DESTINATION /usr/share/CANopenTerm/scripts/utils
+             FILES_MATCHING PATTERN "*")
+ 
+-    install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/CANopenTerm
++    install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/export/CANopenTerm
+             DESTINATION /usr/bin)
+ 
+-    install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/codb2json
++    install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/export/codb2json
+             DESTINATION /usr/bin)
+ 
+     return()
+-- 
+2.43.0
+
diff --git a/package/canopenterm/Config.in b/package/canopenterm/Config.in
new file mode 100644
index 000000000000..62dbecb37cd3
--- /dev/null
+++ b/package/canopenterm/Config.in
@@ -0,0 +1,17 @@ 
+config BR2_PACKAGE_CANOPENTERM
+	bool "canopenterm"
+	depends on BR2_INSTALL_LIBSTDCPP # pocketpy
+	depends on BR2_PACKAGE_LUA
+	depends on !BR2_STATIC_LIBS # pocketpy and SDL2
+	select BR2_PACKAGE_CJSON
+	select BR2_PACKAGE_INIH
+	select BR2_PACKAGE_LIBSOCKETCAN
+	select BR2_PACKAGE_POCKETPY
+	select BR2_PACKAGE_READLINE
+	select BR2_PACKAGE_SDL2
+	help
+	  CANopenTerm is an open-source tool for developing,
+	  testing, and analyzing CANopen CC networks and
+	  devices.
+
+	  https://github.com/CANopenTerm/CANopenTerm
diff --git a/package/canopenterm/canopenterm.hash b/package/canopenterm/canopenterm.hash
new file mode 100644
index 000000000000..8c403e9bb6af
--- /dev/null
+++ b/package/canopenterm/canopenterm.hash
@@ -0,0 +1,3 @@ 
+# locally computed
+sha256  9de6f472b749f08a5ea9a836604507cd56c71f818a4141a2b989423fbb7beb80  canopenterm-1.0.10.tar.gz
+sha256  cc555368040b92e77b14289b367ccbebf88344367188862680d40cc885636d3a  LICENSE.md
diff --git a/package/canopenterm/canopenterm.mk b/package/canopenterm/canopenterm.mk
new file mode 100644
index 000000000000..c3883ffef74d
--- /dev/null
+++ b/package/canopenterm/canopenterm.mk
@@ -0,0 +1,15 @@ 
+################################################################################
+#
+# canopenterm
+#
+################################################################################
+
+CANOPENTERM_VERSION = 1.0.10
+CANOPENTERM_SITE = $(call github,CANopenTerm,CANopenTerm,v$(CANOPENTERM_VERSION))
+CANOPENTERM_LICENSE = MIT
+CANOPENTERM_LICENSE_FILES = LICENSE.md
+CANOPENTERM_DEPENDENCIES = cjson inih libsocketcan lua pocketpy readline sdl2
+
+CANOPENTERM_CONF_OPTS = -DBUILD_YOCTO=ON
+
+$(eval $(cmake-package))