package/libdatachannel: new package
v2 cover package/libdatachannel: new package
This patch adds a new package for libdatachannel.
libdatachannel is an open-source software library implementing WebRTC Data Channels, WebRTC Media Transport, and WebSockets. It is written in C++17 and offers C bindings.
v2:
- bump version to 0.18.4
- added libopenssl dependency
- added gcc >= 9 dependency (c++ 17 requirement)
- disabled building of tests and examples
- restricted builds for BR2_STATIC_LIBS configs
Maksim Kiselev (1):
package/libdatachannel: new package
package/Config.in | 1 + package/libdatachannel/Config.in | 10 +++++++ package/libdatachannel/libdatachannel.hash | 3 ++ package/libdatachannel/libdatachannel.mk | 34 ++++++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 package/libdatachannel/Config.in create mode 100644 package/libdatachannel/libdatachannel.hash create mode 100644 package/libdatachannel/libdatachannel.mk
Signature · 6 lines
2.39.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 1/1 package/libdatachannel: new package
This patch adds a new package for libdatachannel.
libdatachannel is an open-source software library implementing WebRTC Data Channels, WebRTC Media Transport, and WebSockets. It is written in C++17 and offers C bindings.
This library has a lot dependencies.
Some of them, such as libsrtp and libnice, can be resolved with standalone buildroot packages if they enabled. Otherwise dependencies will be satisfy by git submodules. Nlohmann JSON dependency will be skipped at all because it is only required to build the examples.
--- package/Config.in | 1 + package/libdatachannel/Config.in | 10 +++++++ package/libdatachannel/libdatachannel.hash | 3 ++ package/libdatachannel/libdatachannel.mk | 34 ++++++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 package/libdatachannel/Config.in create mode 100644 package/libdatachannel/libdatachannel.hash create mode 100644 package/libdatachannel/libdatachannel.mk
package/Config.in +1 -0
@@ -1888,6 +1888,7 @@ menu "Networking" source "package/libcoap/Config.in" source "package/libcpprestsdk/Config.in" source "package/libcurl/Config.in" + source "package/libdatachannel/Config.in" source "package/libdnet/Config.in" source "package/libeXosip2/Config.in" source "package/libest/Config.in"
package/libdatachannel/Config.in new file +10 -0
@@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBDATACHANNEL + bool "libdatachannel" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # C++17 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + help + C/C++ WebRTC network library featuring Data Channels, + Media Transport, and WebSockets. + + https://github.com/paullouisageneau/libdatachannel
package/libdatachannel/libdatachannel.hash new file +3 -0
@@ -0,0 +1,3 @@ +# Locally calculated +sha256 734e062dbdf5de0cc0b8c7bac8a454ca34f99f6966d8687b531af39b028308ef libdatachannel-v0.18.4-br1.tar.gz +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE
package/libdatachannel/libdatachannel.mk new file +34 -0
@@ -0,0 +1,34 @@ +################################################################################ +# +# libdatachannel +# +################################################################################ + +LIBDATACHANNEL_VERSION = v0.18.4 +LIBDATACHANNEL_SITE_METHOD = git +LIBDATACHANNEL_SITE = https://github.com/paullouisageneau/libdatachannel +LIBDATACHANNEL_GIT_SUBMODULES = YES +LIBDATACHANNEL_INSTALL_STAGING = YES +LIBDATACHANNEL_LICENSE = MPL-2.0 +LIBDATACHANNEL_LICENSE_FILES = LICENSE + +LIBDATACHANNEL_DEPENDENCIES = libopenssl + +LIBDATACHANNEL_CONF_OPTS = -DNO_EXAMPLES=1 -DNO_TESTS=1 -DUSE_SYSTEM_JSON=0 \ + -DUSE_SYSTEM_JUICE=0 -DUSE_SYSTEM_PLOG=0 -DUSE_SYSTEM_USRSCTP=0 + +ifeq ($(BR2_PACKAGE_LIBNICE),y) +LIBDATACHANNEL_CONF_OPTS += -DUSE_NICE=1 +LIBDATACHANNEL_DEPENDENCIES += libnice +else +LIBDATACHANNEL_CONF_OPTS += -DUSE_NICE=0 +endif + +ifeq ($(BR2_PACKAGE_LIBSRTP),y) +LIBDATACHANNEL_CONF_OPTS += -DUSE_SYSTEM_SRTP=1 +LIBDATACHANNEL_DEPENDENCIES += libsrtp +else +LIBDATACHANNEL_CONF_OPTS += -DUSE_SYSTEM_SRTP=0 +endif + +$(eval $(cmake-package))
Signature · 6 lines
2.39.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hello Maksim,
Quoted 6 lines · On Sat, 13 May 2023 18:50:30 +0300 Maksim Kiselev <[email protected]> wrote:
This patch adds a new package for libdatachannel.
libdatachannel is an open-source software library implementing WebRTC Data Channels, WebRTC Media Transport, and WebSockets. It is written in C++17 and offers C bindings.
Quoted 7 lines
This library has a lot dependencies.
Some of them, such as libsrtp and libnice, can be resolved with standalone buildroot packages if they enabled. Otherwise dependencies will be satisfy by git submodules. Nlohmann JSON dependency will be skipped at all because it is only required to build the examples.Signed-off-by Maksim Kiselev <[email protected]>
Thanks for your patch, and sorry for the very slow feedback. See below some comments. Could you take them into account, and send a v3 of this patch?
Quoted 6 lines
--- package/Config.in | 1 + package/libdatachannel/Config.in | 10 +++++++ package/libdatachannel/libdatachannel.hash | 3 ++ package/libdatachannel/libdatachannel.mk | 34 ++++++++++++++++++++++ 4 files changed, 48 insertions(+)
Could you please add an entry to the DEVELOPERS file associating you to this new package?
Quoted 6 lines
package/libdatachannel/Config.in new file +0
-0
package/libdatachannel/Config.in line 10
Quoted 10 lines
package/libdatachannel/Config.in new file +10
-0@@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBDATACHANNEL + bool "libdatachannel" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # C++17 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + help + C/C++ WebRTC network library featuring Data Channels, + Media Transport, and WebSockets. + + https://github.com/paullouisageneau/libdatachannel
You need a Config.in comment to help the user with the dependencies:
comment "libdatachannel needs a toolchain w/ gcc >= 9, dynamic library"
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || BR2_STATIC_LIBS
Quoted 11 lines
package/libdatachannel/libdatachannel.mk new file +5
-0@@ -0,0 +1,34 @@ +################################################################################ +# +# libdatachannel +# +################################################################################
package/libdatachannel/libdatachannel.mk line 15
Quoted 10 lines
package/libdatachannel/libdatachannel.mk new file +10
-0+ +LIBDATACHANNEL_VERSION = v0.18.4 +LIBDATACHANNEL_SITE_METHOD = git +LIBDATACHANNEL_SITE = https://github.com/paullouisageneau/libdatachannel +LIBDATACHANNEL_GIT_SUBMODULES = YES +LIBDATACHANNEL_INSTALL_STAGING = YES +LIBDATACHANNEL_LICENSE = MPL-2.0 +LIBDATACHANNEL_LICENSE_FILES = LICENSE + +LIBDATACHANNEL_DEPENDENCIES = libopenssl
You should depend on "openssl", not "libopenssl". Indeed, your package selects BR2_PACKAGE_OPENSSL, which means you need to use the "openssl" virtual-package, whose implementation can either be libopenssl (the original OpenSSL) or libressl.
package/libdatachannel/libdatachannel.mk line 18
Quoted 3 lines
package/libdatachannel/libdatachannel.mk new file +3
-0+ +LIBDATACHANNEL_CONF_OPTS = -DNO_EXAMPLES=1 -DNO_TESTS=1 -DUSE_SYSTEM_JSON=0 \ + -DUSE_SYSTEM_JUICE=0 -DUSE_SYSTEM_PLOG=0 -DUSE_SYSTEM_USRSCTP=0
We really want to use the system version of all those libraries, by having separate Buildroot packages for them. This will allow you to drop LIBDATACHANNEL_GIT_SUBMODULES = YES, and generally have a nicer packaging.
Could you have a look at doing this?
Thanks a lot!
Thomas Petazzoni
Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot