include $(TOPDIR)/rules.mk

PKG_NAME:=ubox
PKG_RELEASE:=14

PKG_SOURCE_DATE:=2020-10-25
CMAKE_INSTALL:=1

PKG_LICENSE:=LGPL-2.0-only GPL-2.0-or-later
PKG_LICENSE_FILES:=kmodloader.c getrandom.c

PKG_MAINTAINER:=John Crispin <john@phrozen.org>

PKG_CONFIG_DEPENDS += \
	CONFIG_USE_PROCD \
	CONFIG_USE_OPENRC

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git
PKG_SOURCE_VERSION:=9ef886819dd48303d8ced4cdbc9afbf32682535c

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

define Package/ubox
  SECTION:=base
  CATEGORY:=Base system
  DEPENDS:=+libubox +ubusd +ubus +libubus +libuci
  TITLE:=OpenWrt system helper toolbox
  FATTRS:=/sbin/logd::::cap_dac_read_search,cap_syslog=eip
  ALTERNATIVES:=\
    100:/sbin/rmmod:/sbin/kmodloader \
    100:/sbin/insmod:/sbin/kmodloader \
    100:/sbin/lsmod:/sbin/kmodloader \
    100:/sbin/modinfo:/sbin/kmodloader \
    100:/sbin/modprobe:/sbin/kmodloader
endef

define Package/getrandom
  SECTION:=base
  CATEGORY:=Base system
  TITLE:=OpenWrt getrandom system helper
endef

define Package/logd
  SECTION:=base
  CATEGORY:=Base system
  DEPENDS:=+libubox +libubus +libblobmsg-json +libsqlite3 +libuci +zlib
  TITLE:=OpenWrt system log implementation
  USERID:=logd:logd
endef

define Package/getrandom/install
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/getrandom $(1)/usr/bin/
endef

define Package/ubox/install
	$(INSTALL_DIR) $(1)/sbin $(1)/usr/sbin $(1)/lib $(1)/usr/bin

	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{kmodloader,validate_data} $(1)/sbin/
	$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libvalidate.so $(1)/lib
endef

define Package/logd/install
	$(INSTALL_DIR) $(1)/sbin $(1)/etc/init.d/ $(1)/etc/uci-defaults/7.17/ $(1)/etc/uci-defaults/7.19/ $(1)/etc/uci-defaults/7.20/ $(1)/usr/share/acl.d/ $(1)/etc/config $(1)/etc/permtab.d

	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{logd,logread} $(1)/sbin/
	$(INSTALL_BIN) ./files/log.init $(1)/etc/init.d/log
	$(INSTALL_DATA) ./files/defaults/7.17/99_migrate_log_permissions $(1)/etc/uci-defaults/7.17/99_migrate_log_permissions
	$(INSTALL_DATA) ./files/defaults/7.19/99_migrate_option_name $(1)/etc/uci-defaults/7.19/99_migrate_option_name
	$(INSTALL_DATA) ./files/defaults/7.20/99_migrate_to_log_config $(1)/etc/uci-defaults/7.20/99_migrate_to_log_config
	$(INSTALL_DATA) ./files/logd.json $(1)/usr/share/acl.d/logd.json
	$(INSTALL_DATA) ./files/log.config $(1)/etc/config/log
	$(INSTALL_DATA) ./files/log.permtab $(1)/etc/permtab.d/log

	$(INSTALL_DIR) $(1)/lib/config.d
	$(INSTALL_DATA) ./files/150-generate-log-services $(1)/lib/config.d/

	$(if $(CONFIG_USE_OPENRC),\
		$(OPENRC_INSTALL) sysinit logd ./files/logd.openrc $(1); \
		$(OPENRC_INSTALL) sysinit logread ./files/logread.openrc $(1); \
		$(RM) $(1)/etc/init.d/log \
	)
endef

$(eval $(call BuildPackage,ubox))
$(eval $(call BuildPackage,getrandom))
$(eval $(call BuildPackage,logd))
