blob: dc789f7253e321f581a3064595b5b50d593baeda [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001# SPDX-License-Identifier: GPL-2.0-only
2
3include $(TOPDIR)/rules.mk
4
5PKG_NAME:=alfred
6PKG_VERSION:=2021.1
7PKG_RELEASE:=$(AUTORELEASE)
8
9PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
10PKG_SOURCE_URL:=https://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
11PKG_HASH:=94e2cf4dad885f9059fc8b8694a71eca51c9e184683bb99a79e3de8cb7485e88
12
13PKG_MAINTAINER:=Simon Wunderlich <sw@simonwunderlich.de>
14PKG_LICENSE:=GPL-2.0-only MIT
15PKG_LICENSE_FILES:=LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT
16
17
18PKG_CONFIG_DEPENDS += \
19 CONFIG_ALFRED_NEEDS_lua \
20 CONFIG_ALFRED_NEEDS_libgps \
21 CONFIG_PACKAGE_ALFRED_VIS \
22 CONFIG_PACKAGE_ALFRED_BATHOSTS \
23 CONFIG_PACKAGE_ALFRED_GPSD
24
25include $(INCLUDE_DIR)/package.mk
26
27define Package/alfred
28 SECTION:=net
29 CATEGORY:=Network
30 TITLE:=A.L.F.R.E.D. - Almighty Lightweight Fact Remote Exchange Daemon
31 URL:=https://www.open-mesh.org/
32 DEPENDS:= +libc @IPV6 +libnl-tiny +librt \
33 +ALFRED_NEEDS_lua:lua \
34 +ALFRED_NEEDS_libgps:libgps
35endef
36
37define Package/alfred/description
38 alfred is a user space daemon for distributing arbitrary local information
39 over the mesh/network in a decentralized fashion. This data can be anything
40 which appears to be useful - originally designed to replace the batman-adv
41 visualization (vis), you may distribute hostnames, phone books, administration
42 information, DNS information, the local weather forecast ...
43
44 alfred runs as daemon in the background of the system. A user may insert
45 information by using the alfred binary on the command line, or use special
46 programs to communicate with alfred (done via unix sockets). alfred then takes
47 care of distributing the local information to other alfred servers on other
48 nodes. This is done via IPv6 link-local multicast, and does not require any
49 configuration. A user can request data from alfred, and will receive the
50 information available from all alfred servers in the network.
51endef
52
53define Package/alfred/conffiles
54/etc/config/alfred
55endef
56
57define Package/alfred/config
58 source "$(SOURCE)/Config.in"
59endef
60
61MAKE_FLAGS += \
62 CONFIG_ALFRED_VIS=$(if $(CONFIG_PACKAGE_ALFRED_VIS),y,n) \
63 CONFIG_ALFRED_GPSD=$(if $(CONFIG_PACKAGE_ALFRED_GPSD),y,n) \
64 CONFIG_ALFRED_CAPABILITIES=n \
65 LIBNL_NAME="libnl-tiny" \
66 LIBNL_GENL_NAME="libnl-tiny" \
67 REVISION="$(PKG_VERSION)-openwrt-$(PKG_RELEASE)"
68
69TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
70TARGET_LDFLAGS += -Wl,--gc-sections -fuse-linker-plugin
71
72define Package/alfred/install
73 $(INSTALL_DIR) $(1)/usr/sbin
74 cp -fpR $(PKG_BUILD_DIR)/alfred $(1)/usr/sbin/
75 [ "x$(CONFIG_PACKAGE_ALFRED_VIS)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/vis/batadv-vis $(1)/usr/sbin/ ; true
76 [ "x$(CONFIG_PACKAGE_ALFRED_GPSD)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/gpsd/alfred-gpsd $(1)/usr/sbin/ ; true
77 $(INSTALL_DIR) $(1)/etc/init.d
78 $(INSTALL_BIN) ./files/alfred.init $(1)/etc/init.d/alfred
79 $(INSTALL_DIR) $(1)/etc/config
80 $(INSTALL_DATA) ./files/alfred.config $(1)/etc/config/alfred
81 $(INSTALL_DIR) $(1)/etc/alfred
82 [ "x$(CONFIG_PACKAGE_ALFRED_BATHOSTS)" == "xy" ] && $(INSTALL_BIN) ./files/bat-hosts.lua $(1)/etc/alfred/bat-hosts.lua ; true
83endef
84
85$(eval $(call BuildPackage,alfred))