1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
|
include $(TOPDIR)/rules.mk
LUCI_TOPDIR=../../..
PKG_NAME:=luci-addons
PKG_RELEASE:=1
PKG_BUILD_PARALLEL:=0
PKG_VERSION:=$(shell $(LUCI_TOPDIR)/build/mkrevision.sh 2>/dev/null || echo unknown)
PKG_BUILD_DEPENDS:=$(if $(STAGING_DIR_ROOT),lua/host)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
PKG_USE_MIPS16:=0
LUA_TARGET:=source
LUCI_CFLAGS:=
LUCI_BUILD_PACKAGES:=
LUCI_SELECTED_MODULES:=
# 1: luci component
# 2: package names
define add_deps
$(foreach dep,$(2), \
$(if $(patsubst @%,,$(dep)), \
$(if $(patsubst luci-%,,$(dep)), \
+PACKAGE_luci-$(1):$(dep), \
+$(dep)), \
$(dep)))
endef
### Templates ###
define Package/luci-addons/install/template
$(CP) -a $(PKG_BUILD_DIR)/$(2)/dist/* $(1)/ -R
$(CP) -a $(PKG_BUILD_DIR)/$(2)/ipkg/* $(1)/CONTROL/ 2>/dev/null || true
endef
### Community Packages ###
define Package/luci-mod-freifunk-community
SECTION:=luci
CATEGORY:=LuCI
TITLE:=LuCI - Lua Configuration Interface
URL:=http://luci.subsignal.org/
MAINTAINER:=LuCI Development Team <luci@lists.subsignal.org>
SUBMENU:=9. Freifunk
TITLE:=Freifunk Community Meta-Package
DEPENDS+=$(call add_deps,mod-freifunk-community, \
iptables-mod-nat-extra iptables-mod-ipopt \
luci-app-splash luci-i18n-german \
olsrd olsrd-mod-dyn-gw-plain \
olsrd-mod-jsoninfo olsrd-mod-nameservice \
olsrd-mod-watchdog kmod-tun \
ip freifunk-watchdog luci-app-olsr \
luci-app-olsr-services freifunk-gwcheck freifunk-mapupdate \
)
endef
define Package/luci-mod-freifunk-community/install
$(call Package/luci-addons/install/template,$(1),applications/freifunk-community)
endef
ifneq ($(CONFIG_PACKAGE_luci-mod-freifunk-community),)
LUCI_SELECTED_MODULES+=applications/freifunk-community
endif
LUCI_BUILD_PACKAGES += luci-mod-freifunk-community
### Modules ###
define module
define Package/luci-mod-$(1)
SECTION:=luci
CATEGORY:=LuCI
TITLE:=LuCI - Lua Configuration Interface
URL:=http://luci.subsignal.org/
MAINTAINER:=LuCI Development Team <luci@lists.subsignal.org>
SUBMENU:=2. Modules
TITLE:=$(if $(2),$(2),LuCI $(1) module)
$(if $(3),DEPENDS+=$(3))
endef
define Package/luci-mod-$(1)/install
$(call Package/luci-addons/install/template,$$(1),modules/$(1))
$(call Package/luci-mod-$(1)/extra-install)
endef
ifneq ($(CONFIG_PACKAGE_luci-mod-$(1)),)
LUCI_SELECTED_MODULES+=modules/$(1)
endif
LUCI_BUILD_PACKAGES += luci-mod-$(1)
endef
$(eval $(call module,freifunk,LuCI Freifunk module,+luci-mod-admin-full +luci-lib-json +PACKAGE_luci-mod-freifunk:freifunk-firewall +freifunk-common))
### Applications ###
define application
define Package/luci-app-$(1)
SECTION:=luci
CATEGORY:=LuCI
TITLE:=LuCI - Lua Configuration Interface
URL:=http://luci.subsignal.org/
MAINTAINER:=LuCI Development Team <luci@lists.subsignal.org>
SUBMENU:=3. Applications
TITLE:=$(if $(2),$(2),LuCI $(1) application)
DEPENDS:=$(call add_deps,app-$(1),$(3))
endef
define Package/luci-app-$(1)/install
$(call Package/luci-addons/install/template,$$(1),applications/luci-$(1))
endef
ifneq ($(CONFIG_PACKAGE_luci-app-$(1)),)
LUCI_SELECTED_MODULES+=applications/luci-$(1)
endif
LUCI_BUILD_PACKAGES += luci-app-$(1)
endef
define Package/luci-app-splash/conffiles
/etc/config/luci_splash
/usr/lib/luci-splash/splashtext.html
/usr/lib/luci-splash/splashtextinclude.html
endef
define Package/luci-app-statistics/conffiles
/etc/config/luci_statistics
endef
define Package/luci-app-diag-devinfo/conffiles
/etc/config/luci_devinfo
endef
$(eval $(call application,siitwizard,SIIT IPv4-over-IPv6 configuration wizard,kmod-siit))
$(eval $(call application,freifunk-policyrouting,Policy routing for mesh traffic,freifunk-policyrouting))
$(eval $(call application,freifunk-widgets,Widgets for the Freifunk index page,luci-mod-freifunk))
$(eval $(call application,meshwizard, Shellscript based wizard to setup mesh networks,meshwizard))
$(eval $(call application,olsr,OLSR configuration and status module,olsrd olsrd-mod-jsoninfo luci-lib-luaneightbl))
$(eval $(call application,olsr-viz,OLSR Visualisation,luci-app-olsr olsrd olsrd-mod-txtinfo))
$(eval $(call application,freifunk-diagnostics,Tools for network diagnosis like traceroute and ping))
$(eval $(call application,olsr-services,Show services announced with the nameservice plugin,luci-app-olsr olsrd olsrd-mod-nameservice))
$(eval $(call application,splash,Freifunk DHCP-Splash application,luci-lib-nixio tc kmod-sched iptables-mod-nat-extra iptables-mod-ipopt))
$(eval $(call application,statistics,LuCI Statistics Application,\
collectd \
rrdtool1 \
collectd-mod-rrdtool \
collectd-mod-iwinfo \
collectd-mod-interface \
collectd-mod-load \
collectd-mod-network))
$(eval $(call application,diag-core,LuCI Diagnostics Tools (Core)))
$(eval $(call application,diag-devinfo,LuCI Diagnostics Tools (Device Info),\
luci-app-diag-core \
smap \
netdiscover \
mac-to-devinfo \
httping \
smap-to-devinfo \
netdiscover-to-devinfo))
$(eval $(call application,voice-core,LuCI Voice Software (Core)))
$(eval $(call application,voice-diag,LuCI Voice Software (Diagnostics),luci-app-diag-devinfo))
$(eval $(call application,upnp,Universal Plug & Play configuration module,miniupnpd))
$(eval $(call application,ntpc,NTP time synchronisation configuration module,ntpclient))
$(eval $(call application,ddns,Dynamic DNS configuration module,ddns-scripts))
$(eval $(call application,samba,Network Shares - Samba SMB/CIFS module,samba36-server))
$(eval $(call application,mmc-over-gpio,MMC-over-GPIO configuration module,kmod-mmc-over-gpio))
$(eval $(call application,p910nd,p910nd - Printer server module,p910nd))
$(eval $(call application,ushare,uShare - UPnP A/V & DLNA Media Server,ushare))
$(eval $(call application,hd-idle,Hard Disk Idle Spin-Down module,hd-idle))
$(eval $(call application,tinyproxy,Tinyproxy - HTTP(S)-Proxy configuration,tinyproxy))
$(eval $(call application,polipo,LuCI Support for the Polipo Proxy,polipo))
$(eval $(call application,openvpn,LuCI Support for OpenVPN,openvpn))
$(eval $(call application,p2pblock,LuCI Support for the Freifunk P2P-Block addon,luci-app-firewall freifunk-p2pblock))
$(eval $(call application,multiwan,LuCI Support for the OpenWrt MultiWAN agent,luci-app-firewall multiwan))
$(eval $(call application,wol,LuCI Support for Wake-on-LAN,etherwake))
$(eval $(call application,vnstat,LuCI Support for VnStat,vnstat vnstati))
$(eval $(call application,radvd,LuCI Support for Radvd,radvd))
$(eval $(call application,ahcp,LuCI Support for AHCPd,ahcpd))
$(eval $(call application,wshaper,LuCI Support for wshaper,wshaper))
$(eval $(call application,pbx,LuCI PBX Administration,\
asterisk18 \
asterisk18-app-authenticate \
asterisk18-app-disa \
asterisk18-app-setcallerid \
asterisk18-app-system \
asterisk18-chan-gtalk \
asterisk18-codec-a-mu \
asterisk18-codec-alaw \
asterisk18-func-cut \
asterisk18-res-clioriginate \
asterisk18-func-channel \
asterisk18-chan-local \
asterisk18-app-record \
asterisk18-app-senddtmf \
asterisk18-res-crypto))
$(eval $(call application,pbx-voicemail,LuCI PBX Administration Voicemail Support,luci-app-pbx asterisk18 msmtp coreutils-base64))
$(eval $(call application,ltqtapi,Lantiq voip))
$(eval $(call application,minidlna,LuCI Support for miniDLNA,minidlna))
$(eval $(call application,transmission,LuCI Support for Transmission,transmission-daemon))
$(eval $(call application,watchcat,LuCI Support for Watchcat,watchcat))
### Themes ###
define theme
define Package/luci-theme-$(1)
SECTION:=luci
CATEGORY:=LuCI
TITLE:=LuCI - Lua Configuration Interface
URL:=http://luci.subsignal.org/
SUBMENU:=4. Themes
TITLE:=$(if $(2),$(2),LuCI $(1) theme)
MAINTAINER:=$(if $(3),$(3),LuCI Development Team <luci@lists.subsignal.org>)
DEPENDS:=+luci-base $(4)
endef
define Package/luci-theme-$(1)/install
$(call Package/luci-addons/install/template,$$(1),themes/$(1))
endef
ifneq ($(CONFIG_PACKAGE_luci-theme-$(1)),)
LUCI_SELECTED_MODULES+=themes/$(1)
endif
LUCI_BUILD_PACKAGES += luci-theme-$(1)
endef
$(eval $(call theme,freifunk-bno,Freifunk Berlin Nordost Theme,\
Stefan Pirwitz <stefan-at-freifunk-bno-dot-de>))
$(eval $(call theme,freifunk-generic,Freifunk Generic Theme,\
Manuel Munz <freifunk-at-somakoma-dot-de>))
### Compile ###
PKG_CONFIG_DEPENDS=$(patsubst %,CONFIG_PACKAGE_%,$(LUCI_BUILD_PACKAGES))
include $(INCLUDE_DIR)/package.mk
define Build/Prepare
@if [ ! -x $(LUCI_TOPDIR)/build/mkrevision.sh ]; then \
echo "*** Repository layout changed!" >&2; \
echo "*** Please change the LuCI url in feeds.conf to http://svn.luci.subsignal.org/luci/trunk and reinstall the feed with" >&2; \
echo "*** ./scripts/feeds update luci; ./scripts/feeds install -a -p luci" >&2; \
exit 1; \
fi
mkdir -p $(PKG_BUILD_DIR)
$(TAR) c -C $(LUCI_TOPDIR) . \
--exclude=.pc --exclude=.svn --exclude=.git \
--exclude='*.o' --exclude='*.so' \
--exclude=dist | \
tar x -C $(PKG_BUILD_DIR)/
$(call Build/Prepare/Default)
endef
define Build/Configure
endef
MAKE_FLAGS += \
MODULES="$(LUCI_SELECTED_MODULES)" \
LUA_TARGET="$(LUA_TARGET)" \
LUA_SHLIBS="-llua -lm -ldl -lcrypt" \
CFLAGS="$(TARGET_CFLAGS) $(LUCI_CFLAGS) -I$(STAGING_DIR)/usr/include" \
LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib" \
NIXIO_TLS="$(NIXIO_TLS)" OS="Linux"
$(foreach b,$(LUCI_BUILD_PACKAGES),$(eval $(call BuildPackage,$(b))))
|