diff options
Diffstat (limited to 'meta-networking/recipes-connectivity/openthread')
8 files changed, 278 insertions, 0 deletions
diff --git a/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch b/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch new file mode 100644 index 0000000000..7c32166797 --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch @@ -0,0 +1,35 @@ +From aa706d714294b83db696de2beca9a722a512796f Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 19 Apr 2022 14:04:40 -0700 +Subject: [PATCH] cmake: Disable nonnull-compare warning on gcc + +GCC finds a legit warning which clang does not on code like this + +class Message; +void SendResponse(Message & aMessage) +{ + if ((&aMessage) != nullptr) { return; } +} + +Perhaps it should be fixed upstream but for now disable treating this +warning as error when using gcc + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -59,6 +59,10 @@ endif() + set(CMAKE_CXX_EXTENSIONS OFF) + set(CMAKE_EXE_LINKER_FLAGS "-rdynamic ${CMAKE_EXE_LINKER_FLAGS}") + ++if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") ++ add_compile_options(-Wno-error=nonnull-compare) ++endif() ++ + if (OTBR_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + message(STATUS "Coverage: ON") + target_compile_options(otbr-config INTERFACE -g -O0 --coverage) diff --git a/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-otbr-agent.service.in-remove-pre-exec-hook-for-mdns-.patch b/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-otbr-agent.service.in-remove-pre-exec-hook-for-mdns-.patch new file mode 100644 index 0000000000..250de4bdd8 --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-otbr-agent.service.in-remove-pre-exec-hook-for-mdns-.patch @@ -0,0 +1,35 @@ +From ed60d4605b81c43b9ba9504a37835109c247c6f8 Mon Sep 17 00:00:00 2001 +From: Stefan Schmidt <stefan.schmidt@huawei.com> +Date: Fri, 1 Apr 2022 21:46:03 +0200 +Subject: [PATCH] otbr-agent.service.in: remove pre exec hook for mdns service + +It uses the service command which is not available in all cases under +Yocto/OE. The upstream project uses this mainly with Ubuntu and Raspian +as testbeds. + +In our case we simply ensure that avahi-daemon is installed on the +system inside the recipe. + +Upstream-Status: Inappropriate [OE specific] + +Signed-off-by: Stefan Schmidt <stefan.schmidt@huawei.com> +--- + src/agent/otbr-agent.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/agent/otbr-agent.service.in b/src/agent/otbr-agent.service.in +index 8314121347..4c97869def 100644 +--- a/src/agent/otbr-agent.service.in ++++ b/src/agent/otbr-agent.service.in +@@ -6,7 +6,7 @@ After=dbus.socket + + [Service] + EnvironmentFile=-@CMAKE_INSTALL_FULL_SYSCONFDIR@/default/otbr-agent +-@EXEC_START_PRE@ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/otbr-agent $OTBR_AGENT_OPTS ++ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/otbr-agent $OTBR_AGENT_OPTS + KillMode=mixed + Restart=on-failure + RestartSec=5 +-- +2.35.1 + diff --git a/meta-networking/recipes-connectivity/openthread/ot-br-posix/default-cxx-std.patch b/meta-networking/recipes-connectivity/openthread/ot-br-posix/default-cxx-std.patch new file mode 100644 index 0000000000..4118887cb9 --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/ot-br-posix/default-cxx-std.patch @@ -0,0 +1,35 @@ +Do not hardcode C std to C99 or C++ std to C++11 if not set +OE compilers are using newer than these standards and absl needs C++14 minimum + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -46,16 +46,6 @@ set_property(CACHE OTBR_MDNS PROPERTY ST + + include("${PROJECT_SOURCE_DIR}/etc/cmake/options.cmake") + +-if(NOT CMAKE_C_STANDARD) +- set(CMAKE_C_STANDARD 99) +- set(CMAKE_C_STANDARD_REQUIRED ON) +-endif() +- +-if(NOT CMAKE_CXX_STANDARD) +- set(CMAKE_CXX_STANDARD 11) +- set(CMAKE_CXX_STANDARD_REQUIRED ON) +-endif() +- + set(CMAKE_CXX_EXTENSIONS OFF) + set(CMAKE_EXE_LINKER_FLAGS "-rdynamic ${CMAKE_EXE_LINKER_FLAGS}") + +@@ -63,6 +53,10 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") + add_compile_options(-Wno-error=nonnull-compare) + endif() + ++if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 18.1) ++ add_compile_options(-Wno-error=vla-cxx-extension) ++endif() ++ + if (OTBR_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + message(STATUS "Coverage: ON") + target_compile_options(otbr-config INTERFACE -g -O0 --coverage) diff --git a/meta-networking/recipes-connectivity/openthread/ot-br-posix/musl-fixes.patch b/meta-networking/recipes-connectivity/openthread/ot-br-posix/musl-fixes.patch new file mode 100644 index 0000000000..279a60741f --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/ot-br-posix/musl-fixes.patch @@ -0,0 +1,26 @@ +Musl fixes, which should be applied upstream too + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- a/src/dbus/common/types.hpp ++++ b/src/dbus/common/types.hpp +@@ -715,7 +715,7 @@ struct TrelInfo + }; + + bool mEnabled; ///< Whether TREL is enabled. +- u_int16_t mNumTrelPeers; ///< The number of TREL peers. ++ uint16_t mNumTrelPeers; ///< The number of TREL peers. + TrelPacketCounters mTrelCounters; ///< The TREL counters. + }; + +--- a/third_party/openthread/repo/src/posix/platform/CMakeLists.txt ++++ b/third_party/openthread/repo/src/posix/platform/CMakeLists.txt +@@ -172,7 +172,7 @@ target_link_libraries(openthread-posix + ) + + option(OT_TARGET_OPENWRT "enable openthread posix for OpenWRT" OFF) +-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND NOT OT_TARGET_OPENWRT) ++if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND NOT OT_TARGET_OPENWRT AND NOT OT_TARGET_MUSL) + target_compile_definitions(ot-posix-config + INTERFACE "OPENTHREAD_POSIX_CONFIG_NAT64_AIL_PREFIX_ENABLE=1" + ) diff --git a/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb b/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb new file mode 100644 index 0000000000..0ec9db9e18 --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 +SUMMARY = "OpenThread Border Router" +SECTION = "net" +LICENSE = "BSD-3-Clause & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=87109e44b2fda96a8991f27684a7349c \ + file://third_party/Simple-web-server/repo/LICENSE;md5=091ac9fd29d87ad1ae5bf765d95278b0 \ + file://third_party/cJSON/repo/LICENSE;md5=218947f77e8cb8e2fa02918dc41c50d0 \ + file://third_party/http-parser/repo/LICENSE-MIT;md5=9bfa835d048c194ab30487af8d7b3778 \ + file://third_party/openthread/repo/LICENSE;md5=543b6fe90ec5901a683320a36390c65f \ + " +DEPENDS = "autoconf-archive dbus readline avahi jsoncpp boost libnetfilter-queue protobuf protobuf-native" +SRCREV = "a35cc682305bb2201c314472adf06a4960536750" +PV = "0.3.0+git" + +SRC_URI = "gitsm://github.com/openthread/ot-br-posix.git;protocol=https;branch=main \ + file://0001-otbr-agent.service.in-remove-pre-exec-hook-for-mdns-.patch \ + file://0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch \ + file://default-cxx-std.patch \ + file://musl-fixes.patch \ + " + +S = "${WORKDIR}/git" +SYSTEMD_SERVICE:${PN} = "otbr-agent.service" + +inherit pkgconfig cmake systemd +# openthread/repo/src/cli/cli.cpp:1786:18: fatal error: variable 'i' set but not used [-Wunused-but-set-variable] +# for (uint8_t i = 0;; i++) +CXXFLAGS:append:libc-musl:toolchain-clang = " -Wno-error=sign-compare -Wno-error=unused-but-set-variable" + +EXTRA_OECMAKE = "-DBUILD_TESTING=OFF \ + -DOTBR_DBUS=ON \ + -DOTBR_REST=ON \ + -DOTBR_WEB=OFF \ + -DCMAKE_LIBRARY_PATH=${libdir} \ + -DOTBR_MDNS=avahi \ + -DOTBR_BACKBONE_ROUTER=ON \ + -DOTBR_BORDER_ROUTING=ON \ + -DOTBR_SRP_ADVERTISING_PROXY=ON \ + -DOTBR_BORDER_AGENT=ON \ + -DOT_SPINEL_RESET_CONNECTION=ON \ + -DOT_TREL=ON \ + -DOT_MLR=ON \ + -DOT_SRP_SERVER=ON \ + -DOT_ECDSA=ON \ + -DOT_SERVICE=ON \ + -DOTBR_DUA_ROUTING=ON \ + -DOT_DUA=ON \ + -DOT_BORDER_ROUTING_NAT64=ON \ + -DOTBR_DNSSD_DISCOVERY_PROXY=ON \ + -DOTBR_INFRA_IF_NAME=eth0 \ + -DOTBR_NO_AUTO_ATTACH=1 \ + -DOT_REFERENCE_DEVICE=ON \ + -DOT_DHCP6_CLIENT=ON \ + -DOT_DHCP6_SERVER=ON \ + " +EXTRA_OECMAKE:append:libc-musl = " -DOT_TARGET_MUSL=ON" + +RDEPENDS:${PN} = "iproute2 ipset avahi-daemon" + +RCONFLICTS:${PN} = "ot-daemon" + +FILES:${PN} += "${systemd_unitdir}/*" +FILES:${PN} += "${datadir}/*" + +# http://errors.yoctoproject.org/Errors/Details/766903/ +# git/third_party/openthread/repo/src/core/border_router/routing_manager.hpp:615:11: error: 'ot::BorderRouter::RoutingManager::DiscoveredPrefixTable' declared with greater visibility than the type of its field 'ot::BorderRouter::RoutingManager::DiscoveredPrefixTable::mEntryTimer' [-Werror=attributes] +CXXFLAGS += "-Wno-error=attributes" diff --git a/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb b/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb new file mode 100644 index 0000000000..4456835410 --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 +SUMMARY = "OpenThread Daemon is an OpenThread POSIX build mode that runs OpenThread as a service." +SECTION = "net" +LICENSE = "BSD-3-Clause & Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=543b6fe90ec5901a683320a36390c65f \ + file://third_party/mbedtls/repo/LICENSE;md5=379d5819937a6c2f1ef1630d341e026d \ + " +DEPENDS = "readline" +SRCREV = "90adc86d34e21a9e8f86d093c2190030042c4a59" +PV = "0.1+git" + +SRC_URI = "git://github.com/openthread/openthread.git;protocol=https;branch=main \ + " + +S = "${WORKDIR}/git" + +inherit cmake + +EXTRA_OECMAKE = "-DOT_DAEMON=ON \ + -DOT_SPINEL_RESET_CONNECTION=ON \ + -DOT_THREAD_VERSION=1.2 \ + -DOT_COVERAGE=OFF \ + -DOT_PLATFORM=posix \ + -DCMAKE_BUILD_TYPE=Release \ + " + +EXTRA_OECMAKE:append:libc-musl = " -DOT_TARGET_OPENWRT=ON" diff --git a/meta-networking/recipes-connectivity/openthread/wpantund/basename.patch b/meta-networking/recipes-connectivity/openthread/wpantund/basename.patch new file mode 100644 index 0000000000..30bd9e59cf --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/wpantund/basename.patch @@ -0,0 +1,19 @@ +include libgen.h for getting prototype for basename() +Newer musl has remove prototype from string.h [1] +which renders a compile error with newer compilers like +clang 18+ about missing prototype. + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- a/third_party/openthread/tools/spi-hdlc-adapter/spi-hdlc-adapter.c ++++ b/third_party/openthread/tools/spi-hdlc-adapter/spi-hdlc-adapter.c +@@ -32,6 +32,7 @@ + #endif + + #include <assert.h> ++#include <libgen.h> + #include <stdio.h> + #include <stdlib.h> + #include <stdint.h> diff --git a/meta-networking/recipes-connectivity/openthread/wpantund_git.bb b/meta-networking/recipes-connectivity/openthread/wpantund_git.bb new file mode 100644 index 0000000000..6a84897426 --- /dev/null +++ b/meta-networking/recipes-connectivity/openthread/wpantund_git.bb @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 +SUMMARY = "wpantund, Userspace WPAN Network Daemon" +SECTION = "net" +LICENSE = "Apache-2.0 & MIT & BSL-1.0 & BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e7820bc7f7d1638a6b54fc2e8d7fb103 \ + file://third_party/assert-macros/LICENSE;md5=cbf35ecdc8161026afe4da2906fab204 \ + file://third_party/boost/LICENSE;md5=e4224ccaecb14d942c71d31bef20d78c \ + file://third_party/fgetln/LICENSE;md5=389e03d2254ecad45d0d9bbdefef7129 \ + file://third_party/openthread/LICENSE;md5=543b6fe90ec5901a683320a36390c65f \ + file://third_party/pt/LICENSE;md5=dcd598b69cad786beea33da7b1ae14b7 \ + " +DEPENDS = "autoconf-archive dbus readline boost" +SRCREV = "8b5ce64c2f5bbf106cabfd015bcb3bdb2e0248d3" +PV = "0.07.01+git" + +SRC_URI = "gitsm://github.com/openthread/wpantund.git;protocol=https;branch=master \ + file://basename.patch \ + " + +S = "${WORKDIR}/git" + +inherit pkgconfig perlnative autotools + +# There has not been a wpantund release as of yet that includes these fixes. +# That means cve-check can not match them. Once a new release comes we can +# remove the statement. +CVE_STATUS[CVE-2020-8916] = "backported-patch: fixed via 3f108441e23e033b936e85be5b6877dd0a1fbf1c" +CVE_STATUS[CVE-2021-33889] = "backported-patch: fixed via 3f108441e23e033b936e85be5b6877dd0a1fbf1c" |