udebug: add new package

This will help with debugging by providing system wide access to per-process
ring buffers with debug data.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2023-11-12 21:28:34 +01:00
parent c4fe1bfc65
commit bc6ee34c97
3 changed files with 141 additions and 0 deletions

View File

@ -0,0 +1,82 @@
#
# Copyright (C) 2023 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=udebug
CMAKE_INSTALL:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/udebug.git
PKG_MIRROR_HASH:=3447dc6edd1b76f7ea5b9650a2aedcab69aba6048fa5ab7b1732cad592651fbc
PKG_SOURCE_DATE:=2023-11-19
PKG_SOURCE_VERSION:=44351435e28c6c878bf0a9054cb002704312d60e
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/libudebug
SECTION:=libs
CATEGORY:=Libraries
TITLE:=udebug client library
DEPENDS:=+libubox
endef
define Package/udebugd
SECTION:=utils
CATEGORY:=Utilities
TITLE:=OpenWrt debug service
DEPENDS:=+libudebug +libubus
endef
define Package/udebugd/conffiles
/etc/config/udebug
endef
define Package/ucode-mod-udebug
SECTION:=utils
CATEGORY:=Utilities
TITLE:=ucode udebug module
DEPENDS:=+libucode +libudebug
endef
define Package/udebug-cli
SECTION:=utils
CATEGORY:=Utilities
TITLE:=OpenWrt debug service CLI
DEPENDS:=+udebugd +ucode-mod-udebug
endef
define Package/libudebug/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib
endef
define Package/ucode-mod-udebug/install
$(INSTALL_DIR) $(1)/usr/lib/ucode
$(CP) $(PKG_INSTALL_DIR)/usr/lib/ucode/*.so $(1)/usr/lib/ucode
endef
define Package/udebugd/install
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config
$(INSTALL_BIN) ./files/udebug.config $(1)/etc/config/udebug
$(INSTALL_BIN) ./files/udebug.init $(1)/etc/init.d/udebug
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/udebugd $(1)/usr/sbin
endef
define Package/udebug-cli/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/udebug-cli $(1)/usr/sbin/udebug
endef
$(eval $(call BuildPackage,libudebug))
$(eval $(call BuildPackage,udebugd))
$(eval $(call BuildPackage,ucode-mod-udebug))
$(eval $(call BuildPackage,udebug-cli))

View File

@ -0,0 +1,4 @@
config service hostapd
option enabled 0
config service wpa_supplicant
option enabled 0

View File

@ -0,0 +1,55 @@
#!/bin/sh /etc/rc.common
# Copyright (c) 2021 OpenWrt.org
START=11
USE_PROCD=1
PROG=/usr/sbin/udebugd
start_service() {
procd_open_instance
procd_set_param command "$PROG"
procd_set_param respawn
procd_close_instance
}
get_vars() {
local cfg="$1"
uci show "udebug.$cfg" | while read LINE; do
cur="${LINE##udebug.$1.}"
[[ "$cur" = "$LINE" ]] && continue
var="${cur%%=*}"
[[ "$cur" = "$var" ]] && continue
echo "$var"
done
}
add_debug_service() {
local cfg="$1"
json_add_object "$cfg"
for var in $(get_vars "$cfg"); do
config_get val "$cfg" "$var"
json_add_string "$var" "$val"
done
json_close_object "$cfg"
}
reload_service() {
config_load udebug
json_init
json_add_object service
config_foreach add_debug_service service
json_close_object
ubus call udebug set_config "$(json_dump)"
}
service_triggers() {
procd_add_reload_trigger udebug
}
service_started() {
ubus -t 10 wait_for udebug
[ $? = 0 ] && reload_service
}