alfred: workaround race condition when batmanif is not ready at boot time
[feed/routing.git] / alfred / Makefile
1 #
2 # Copyright (C) 2013 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 #
11 # The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git
12 #
13 PKG_NAME:=alfred
14 PKG_VERSION:=2013.4.0
15 PKG_RELEASE:=3
16 PKG_MD5SUM:=3891697e127b1037cfc9349fd96e9993
17
18 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
19 PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
20
21 include $(INCLUDE_DIR)/package.mk
22
23 init-y := alfred
24
25 define Package/alfred
26 URL:=http://www.open-mesh.org/
27 SECTION:=net
28 CATEGORY:=Network
29 TITLE:=A.L.F.R.E.D. - Almighty Lightweight Fact Remote Exchange Daemon
30 DEPENDS:= +libc +IPV6:kmod-ipv6 +librt \
31 +ALFRED_NEEDS_lua:lua \
32 +ALFRED_NEEDS_libgps:libgps
33 endef
34
35 define Package/alfred/description
36 alfred is a user space daemon for distributing arbitrary local information over
37 the mesh/network in a decentralized fashion. This data can be anything which
38 appears to be useful - originally designed to replace the batman-adv
39 visualization (vis), you may distribute hostnames, phone books, administration
40 information, DNS information, the local weather forecast ...
41
42 alfred runs as daemon in the background of the system. A user may insert
43 information by using the alfred binary on the command line, or use special
44 programs to communicate with alfred (done via unix sockets). alfred then takes
45 care of distributing the local information to other alfred servers on other
46 nodes. This is done via IPv6 link-local multicast, and does not require any
47 configuration. A user can request data from alfred, and will receive the
48 information available from all alfred servers in the network.
49 endef
50
51 define Package/alfred/conffiles
52 /etc/config/alfred
53 endef
54
55 define Package/alfred/config
56 source "$(SOURCE)/Config.in"
57 endef
58
59 MAKE_ALFRED_FLAGS=\
60 CONFIG_ALFRED_VIS=$(if $(CONFIG_PACKAGE_ALFRED_VIS),y,n) \
61 CONFIG_ALFRED_GPSD=$(if $(CONFIG_PACKAGE_ALFRED_GPSD),y,n)
62
63 TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
64 TARGET_LDFLAGS += -Wl,--gc-sections -fuse-linker-plugin
65
66 define Build/Compile
67 CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
68 LDFLAGS="$(TARGET_LDFLAGS)" \
69 $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS) $(MAKE_ALFRED_FLAGS) all
70 endef
71
72 define 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)/vis/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
83 endef
84
85 $(eval $(call BuildPackage,alfred))