rtpengine: prevent use of host dpkg utilities
[feed/telephony.git] / net / rtpengine / Makefile
1 #
2 # Copyright (C) 2020 Sebastian Kemper <sebastian_ml@gmx.net>
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 include $(INCLUDE_DIR)/kernel.mk
10
11 PKG_NAME:=rtpengine
12 PKG_VERSION:=mr8.3.1.4
13 PKG_RELEASE:=2
14
15 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
16 PKG_SOURCE_URL:=https://codeload.github.com/sipwise/rtpengine/tar.gz/$(PKG_VERSION)?
17 PKG_HASH:=18c998b776b36bec6d8c9d92ba21a38ffad76ccd20d66f99799420550eaa6fd4
18
19 PKG_LICENSE:=GPL-3.0
20 PKG_LICENSE_FILES:=LICENSE
21
22 PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
23
24 PKG_BUILD_PARALLEL:=1
25
26 PKG_BUILD_DEPENDS:=gperf/host
27
28 include $(INCLUDE_DIR)/package.mk
29
30 ENGINE_DEPENDS := \
31 +glib2 \
32 +json-glib \
33 +libevent2 \
34 +libevent2-pthreads \
35 +libhiredis \
36 +libip4tc \
37 +libopenssl \
38 +libpcap \
39 +libpcre \
40 +xmlrpc-c-client \
41 +zlib
42
43 ENGINE_DEPENDS_TRANSCODING := \
44 $(ENGINE_DEPENDS) \
45 +bcg729 \
46 +libffmpeg-full \
47 +libmariadb \
48 +libspandsp
49
50 RECORDING_DEPENDS := \
51 +glib2 \
52 +libffmpeg-full \
53 +libmariadb \
54 +libopenssl
55
56 RTPENGINE_USERID:=$(PKG_NAME)=378:$(PKG_NAME)=378
57
58 define Package/rtpengine/Default
59 URL:=https://github.com/sipwise/rtpengine
60 endef
61
62 define Package/rtpengine/Template
63 $(call Package/rtpengine/Default)
64 TITLE:=Sipwise RTP Engine
65 CATEGORY:=Network
66 SECTION:=net
67 SUBMENU:=Telephony
68 USERID:=$(RTPENGINE_USERID)
69 endef
70
71 define Package/rtpengine/description/Template
72 The Sipwise NGCP rtpengine is a proxy for RTP traffic and other UDP
73 based media traffic. It's meant to be used with the Kamailio SIP proxy
74 and forms a drop-in replacement for any of the other available RTP and
75 media proxies.
76 endef
77
78 define Package/rtpengine
79 $(call Package/rtpengine/Template)
80 VARIANT:=transcode
81 DEPENDS := \
82 $(patsubst +%,+PACKAGE_rtpengine:%,$(ENGINE_DEPENDS_TRANSCODING)) \
83 +IPV6:libip6tc
84 endef
85
86 define Package/rtpengine/conffiles
87 /etc/config/rtpengine
88 /etc/init.d/rtpengine
89 /etc/rtpengine/rtpengine.conf
90 endef
91
92 define Package/rtpengine/description
93 $(call Package/rtpengine/description/Template)
94
95 Please consider installing kmod-ipt-rtpengine.
96
97 endef
98
99 define Package/rtpengine/install
100 $(INSTALL_DIR) $(1)/usr/bin
101 $(INSTALL_BIN) $(PKG_BUILD_DIR)/daemon/rtpengine $(1)/usr/bin
102
103 $(INSTALL_DIR) $(1)/etc/init.d
104 $(INSTALL_BIN) ./files/rtpengine.init $(1)/etc/init.d/rtpengine
105
106 $(INSTALL_DIR) $(1)/etc/config
107 $(INSTALL_CONF) ./files/rtpengine.conf $(1)/etc/config/rtpengine
108
109 $(INSTALL_DIR) $(1)/etc/rtpengine
110 $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/rtpengine.sample.conf \
111 $(1)/etc/rtpengine/rtpengine.conf
112
113 $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
114 $(INSTALL_BIN) ./files/rtpengine.hotplug \
115 $(1)/etc/hotplug.d/iface/90-rtpengine
116 endef
117
118 define Package/rtpengine-no-transcode
119 $(call Package/rtpengine/Template)
120 TITLE+= (no transcoding)
121 VARIANT:=no-transcode
122 CONFLICTS:=rtpengine
123 DEPENDS := \
124 $(patsubst +%,+PACKAGE_rtpengine-no-transcode:%,$(ENGINE_DEPENDS)) \
125 +IPV6:libip6tc
126 endef
127
128 Package/rtpengine-no-transcode/conffiles=$(Package/rtpengine/conffiles)
129
130 define Package/rtpengine-no-transcode/description
131 $(call Package/rtpengine/description/Template)
132
133 This package comes without transcoding support.
134
135 Please consider installing kmod-ipt-rtpengine.
136
137 endef
138
139 Package/rtpengine-no-transcode/install=$(Package/rtpengine/install)
140
141 define Package/rtpengine-recording
142 $(call Package/rtpengine/Default)
143 TITLE:=Sipwise RTP Recording Daemon
144 CATEGORY:=Network
145 SECTION:=net
146 SUBMENU:=Telephony
147 USERID:=$(RTPENGINE_USERID)
148 DEPENDS:=$(patsubst +%,+PACKAGE_rtpengine-recording:%,$(RECORDING_DEPENDS))
149 endef
150
151 define Package/rtpengine-recording/conffiles
152 /etc/config/rtpengine-recording
153 /etc/rtpengine/rtpengine-recording.conf
154 endef
155
156 define Package/rtpengine-recording/install
157 $(INSTALL_DIR) $(1)/usr/bin
158 $(INSTALL_BIN) \
159 $(PKG_BUILD_DIR)/recording-daemon/rtpengine-recording \
160 $(1)/usr/bin
161
162 $(INSTALL_DIR) $(1)/etc/init.d
163 $(INSTALL_BIN) ./files/rtpengine-recording.init \
164 $(1)/etc/init.d/rtpengine-recording
165
166 $(INSTALL_DIR) $(1)/etc/config
167 $(INSTALL_CONF) ./files/rtpengine-recording.conf \
168 $(1)/etc/config/rtpengine-recording
169
170 $(INSTALL_DIR) $(1)/etc/rtpengine
171 $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/rtpengine-recording.sample.conf \
172 $(1)/etc/rtpengine/rtpengine-recording.conf
173 endef
174
175 define Package/iptables-mod-rtpengine
176 $(call Package/rtpengine/Default)
177 TITLE:=Sipwise rtpengine iptables extension
178 CATEGORY:=Network
179 SECTION:=net
180 SUBMENU:=Firewall
181 DEPENDS:=+PACKAGE_iptables-mod-rtpengine:libxtables
182 endef
183
184 define Package/iptables-mod-rtpengine/install
185 $(INSTALL_DIR) $(1)/usr/lib/iptables
186 $(INSTALL_BIN) \
187 $(PKG_BUILD_DIR)/iptables-extension/libxt_RTPENGINE.so \
188 $(1)/usr/lib/iptables
189 endef
190
191 define KernelPackage/ipt-rtpengine
192 $(call Package/rtpengine/Default)
193 TITLE:=Sipwise rtpengine netfilter module
194 SUBMENU:=Netfilter Extensions
195 FILES:=$(PKG_BUILD_DIR)/kernel-module/xt_RTPENGINE.$(LINUX_KMOD_SUFFIX)
196 AUTOLOAD:=$(call AutoProbe,xt_RTPENGINE)
197 DEPENDS := \
198 +PACKAGE_kmod-ipt-rtpengine:kmod-crypto-hash \
199 +PACKAGE_kmod-ipt-rtpengine:kmod-ipt-core
200 MODPARAMS.xt_RTPENGINE := \
201 proc_uid=$(PKG_NAME) \
202 proc_gid=$(PKG_NAME)
203 endef
204
205 define KernelPackage/ipt-rtpengine/description
206 Netfilter kernel module for rtpengine
207
208 endef
209
210 MAKE_VARS+=RTPENGINE_VERSION=$(PKG_VERSION)
211
212 ifeq ($(BUILD_VARIANT),no-transcode)
213 MAKE_VARS+=with_transcoding=no
214 endif
215
216 # rtpengine uses Debian's dpkg utility programs if it can find them. But
217 # we don't want build host flags to leak into our cross-compile.
218 define Build/Prepare
219 $(call Build/Prepare/Default)
220 ifeq ($(QUILT),)
221 cd "$(PKG_BUILD_DIR)" && \
222 $(FIND) . -maxdepth 2 -name "*Makefile" | \
223 xargs -I{} $(SED) \
224 '/shell which dpkg-/s/dpkg/OpenWrt-has-no-dpkg/' {}
225 endif
226 endef
227
228 define Build/Configure
229 endef
230
231 define Build/Compile
232
233 ifneq ($(CONFIG_PACKAGE_kmod-ipt-rtpengine),)
234 RTPENGINE_VERSION=$(PKG_VERSION) $(MAKE) \
235 -C $(PKG_BUILD_DIR)/kernel-module \
236 KSRC=$(LINUX_DIR) \
237 ARCH=$(LINUX_KARCH) \
238 CROSS_COMPILE=$(TARGET_CROSS)
239 endif
240
241 ifneq ($(CONFIG_PACKAGE_iptables-mod-rtpengine),)
242 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/iptables-extension)
243 endif
244
245 ifneq ($(CONFIG_PACKAGE_rtpengine)$(CONFIG_PACKAGE_rtpengine-no-transcode),)
246 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/daemon)
247 endif
248
249 ifneq ($(CONFIG_PACKAGE_rtpengine-recording),)
250 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/recording-daemon)
251 endif
252
253 endef
254
255 define Build/InstallDev
256 endef
257
258 $(eval $(call BuildPackage,rtpengine-no-transcode))
259 $(eval $(call KernelPackage,ipt-rtpengine))
260 $(eval $(call BuildPackage,iptables-mod-rtpengine))
261 $(eval $(call BuildPackage,rtpengine))
262 $(eval $(call BuildPackage,rtpengine-recording))