mirror of
https://github.com/openwrt/routing.git
synced 2026-02-04 12:06:32 +08:00
Alfred can be stopped during a (re)start or reload when:
* disabled = 1
* batman-adv interface is missing
* MAC based EUI64 IPv6 link-local address not set
It is assumed that procd detects that the procd instance definition
disappeared and the currently running instance must be stopped. But all
these checks were triggering an "exit" which then stopped the alfred init
script and the wrapper from /lib/functions/procd.sh. And thus procd was
never informed about the instances which should be changed.
The correct handling is to return the result of the function instead of
directly killing the init scripts.
Fixes: 45db0e60d2 ("alfred: use procd")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
78 lines
3.0 KiB
Makefile
78 lines
3.0 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=alfred
|
|
PKG_VERSION:=2021.0
|
|
PKG_RELEASE:=2
|
|
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
PKG_SOURCE_URL:=https://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
|
|
PKG_HASH:=a062c08da21e0a23ae0554d392c8147dfd2129ae6975a7f5004dc680fee2244b
|
|
|
|
PKG_MAINTAINER:=Simon Wunderlich <sw@simonwunderlich.de>
|
|
PKG_LICENSE:=GPL-2.0-only MIT
|
|
PKG_LICENSE_FILES:=LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define Package/alfred
|
|
SECTION:=net
|
|
CATEGORY:=Network
|
|
TITLE:=A.L.F.R.E.D. - Almighty Lightweight Fact Remote Exchange Daemon
|
|
URL:=https://www.open-mesh.org/
|
|
DEPENDS:= +libc @IPV6 +libnl-tiny +librt \
|
|
+ALFRED_NEEDS_lua:lua \
|
|
+ALFRED_NEEDS_libgps:libgps
|
|
endef
|
|
|
|
define Package/alfred/description
|
|
alfred is a user space daemon for distributing arbitrary local information
|
|
over the mesh/network in a decentralized fashion. This data can be anything
|
|
which appears to be useful - originally designed to replace the batman-adv
|
|
visualization (vis), you may distribute hostnames, phone books, administration
|
|
information, DNS information, the local weather forecast ...
|
|
|
|
alfred runs as daemon in the background of the system. A user may insert
|
|
information by using the alfred binary on the command line, or use special
|
|
programs to communicate with alfred (done via unix sockets). alfred then takes
|
|
care of distributing the local information to other alfred servers on other
|
|
nodes. This is done via IPv6 link-local multicast, and does not require any
|
|
configuration. A user can request data from alfred, and will receive the
|
|
information available from all alfred servers in the network.
|
|
endef
|
|
|
|
define Package/alfred/conffiles
|
|
/etc/config/alfred
|
|
endef
|
|
|
|
define Package/alfred/config
|
|
source "$(SOURCE)/Config.in"
|
|
endef
|
|
|
|
MAKE_FLAGS += \
|
|
CONFIG_ALFRED_VIS=$(if $(CONFIG_PACKAGE_ALFRED_VIS),y,n) \
|
|
CONFIG_ALFRED_GPSD=$(if $(CONFIG_PACKAGE_ALFRED_GPSD),y,n) \
|
|
CONFIG_ALFRED_CAPABILITIES=n \
|
|
LIBNL_NAME="libnl-tiny" \
|
|
LIBNL_GENL_NAME="libnl-tiny" \
|
|
REVISION="$(PKG_VERSION)-openwrt-$(PKG_RELEASE)"
|
|
|
|
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
|
|
TARGET_LDFLAGS += -Wl,--gc-sections -fuse-linker-plugin
|
|
|
|
define Package/alfred/install
|
|
$(INSTALL_DIR) $(1)/usr/sbin
|
|
cp -fpR $(PKG_BUILD_DIR)/alfred $(1)/usr/sbin/
|
|
[ "x$(CONFIG_PACKAGE_ALFRED_VIS)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/vis/batadv-vis $(1)/usr/sbin/ ; true
|
|
[ "x$(CONFIG_PACKAGE_ALFRED_GPSD)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/gpsd/alfred-gpsd $(1)/usr/sbin/ ; true
|
|
$(INSTALL_DIR) $(1)/etc/init.d
|
|
$(INSTALL_BIN) ./files/alfred.init $(1)/etc/init.d/alfred
|
|
$(INSTALL_DIR) $(1)/etc/config
|
|
$(INSTALL_DATA) ./files/alfred.config $(1)/etc/config/alfred
|
|
$(INSTALL_DIR) $(1)/etc/alfred
|
|
[ "x$(CONFIG_PACKAGE_ALFRED_BATHOSTS)" == "xy" ] && $(INSTALL_BIN) ./files/bat-hosts.lua $(1)/etc/alfred/bat-hosts.lua ; true
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,alfred))
|