Tue, 28 Aug 2012 18:31:35 +0200
Update to new version, correct new flaky menuconfig implementation, modernize
packaging, and only conditionally implement strsep(3) on SVR4 missing it.
1 ##
2 ## opensips.spec -- OpenPKG RPM Package Specification
3 ## Copyright (c) 2000-2008 OpenPKG Foundation e.V. <http://openpkg.net/>
4 ##
5 ## Permission to use, copy, modify, and distribute this software for
6 ## any purpose with or without fee is hereby granted, provided that
7 ## the above copyright notice and this permission notice appear in all
8 ## copies.
9 ##
10 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21 ## SUCH DAMAGE.
22 ##
24 # package options
25 %define V_rtpproxy 1.2.1
27 # package information
28 Name: opensips
29 Summary: Open SIP Router
30 URL: http://www.opensips.org/
31 Vendor: Voice System SRL
32 Packager: OpenPKG Foundation e.V.
33 Distribution: OpenPKG Community
34 Class: PLUS
35 Group: VoIP
36 License: GPL
37 Version: 1.8.1
38 Release: 20120800
40 # package options
41 %option with_cons yes
42 %option with_fsl yes
43 %option with_ssl yes
44 %option with_sctp no
45 %option with_json no
46 %option with_croute no
47 %option with_ldap no
48 %option with_memcached no
49 %option with_radius no
50 %option with_snmp no
51 %option with_bdb no
52 %option with_mysql no
53 %option with_osp no
54 %option with_pgsql no
55 %option with_odbc no
56 %option with_geoip no
57 %option with_dbgmem no
59 # list of sources
60 Source0: http://www.opensips.org/pub/opensips/%{version}/src/opensips-%{version}_src.tar.gz
61 Source1: http://www.b2bua.org/chrome/site/rtpproxy-%{V_rtpproxy}.tar.gz
62 Source2: rc.opensips
63 Source3: fsl.opensips
64 Source4: opensips.cfg
65 Patch0: opensips.patch
66 Patch1: opensips.patch.ctlrc
67 Patch2: opensips.patch.dict
68 Patch3: opensips.patch.uac
69 Patch4: opensips.patch.reg
70 Patch5: opensips.patch.rtpproxy
72 # build information
73 BuildPreReq: OpenPKG, openpkg >= 20100101, make, gcc, flex, bison, sed
74 PreReq: OpenPKG, openpkg >= 20100101, bash
75 BuildPreReq: libxml, expat, curl, ncurses, pkgconfig
76 PreReq: libxml, expat, curl, ncurses
77 %if "%{with_cons}" == "yes"
78 PreReq: perl-dbi, perl-term
79 %endif
80 %if "%{with_fsl}" == "yes"
81 BuildPreReq: fsl
82 PreReq: fsl
83 %endif
84 %if "%{with_ssl}" == "yes"
85 BuildPreReq: openssl
86 PreReq: openssl
87 %endif
88 %if "%{with_croute}" == "yes"
89 BuildPreReq: confuse
90 PreReq: confuse
91 %endif
92 %if "%{with_json}" == "yes"
93 BuildPreReq: json
94 PreReq: json
95 %endif
96 %if "%{with_ldap}" == "yes"
97 BuildPreReq: openldap
98 PreReq: openldap
99 %endif
100 %if "%{with_memcached}" == "yes"
101 BuildPreReq: memcached
102 PreReq: memcached
103 %endif
104 %if "%{with_osp}" == "yes"
105 BuildPreReq: osptoolkit
106 PreReq: osptoolkit
107 %endif
108 %if "%{with_radius}" == "yes"
109 BuildPreReq: radiusclient
110 PreReq: radiusclient
111 %endif
112 %if "%{with_snmp}" == "yes"
113 BuildPreReq: snmp
114 PreReq: snmp
115 %endif
116 %if "%{with_bdb}" == "yes"
117 BuildPreReq: db
118 PreReq: db
119 %endif
120 %if "%{with_mysql}" == "yes"
121 BuildPreReq: mysql
122 PreReq: mysql
123 %endif
124 %if "%{with_pgsql}" == "yes"
125 BuildPreReq: postgresql
126 PreReq: postgresql
127 %endif
128 %if "%{with_odbc}" == "yes"
129 BuildPreReq: unixodbc
130 PreReq: unixodbc
131 %endif
132 %if "%{with_geoip}" == "yes"
133 BuildPreReq: geoip
134 PreReq: geoip
135 %endif
137 %description
138 OpenSIPS is (beside Kamailio) a successor to OpenSER, which in
139 turn was spawned from FhG FOKUS's SIP Express Router (SER). It
140 provides SIP (RFC3621) registrar, proxy and routing functionality.
141 A C shell like scripting language provides for control over the
142 server's behaviour. It's modular architecture allows for fine
143 grained loading of required functionality.
145 The third party Sippy RTPproxy from http://www.rtpproxy.org/
146 is included to make communication between SIP user agents
147 behind NATs (Network Address Translators) possible.
149 OpenSIPS can be used as a: OpenSIPS fits in scenarios:
151 Registrar server SIP trunking
152 Router, proxy SIP load balancing
153 Redirect server SIP front end termination
154 Presence agent Residential providers
155 Back to back user agent white label solutions
156 Instant messaging server Enterprise services
157 SIP to SMS gateway LCR for multi gateways
158 SIP to XMPP gateway
159 Load balancer or dispatcher
160 Front end for asterisk
161 NAT traversal unit
162 Application server
164 %track
165 prog opensips = {
166 version = %{version}
167 url = http://www.opensips.org/pub/opensips/
168 regex = (\d+\.\d+\.\d+)/
169 url = http://www.opensips.org/pub/opensips/__NEWVER__/src/
170 regex = opensips-(__VER__)_src\.tar\.gz
171 }
172 prog opensips:rtpproxy = {
173 version = %{V_rtpproxy}
174 url = http://www.rtpproxy.org/
175 regex = rtpproxy-(\d+(?:\.\d+)+)\.tar\.gz
176 }
178 %prep
179 %setup -q -n opensips-%{version}-tls
180 %setup -q -n opensips-%{version}-tls -T -D -a 1
181 %patch -p0
182 %patch -p0 -P 1
183 %patch -p0 -P 2
184 %patch -p0 -P 3
185 %patch -p0 -P 4
186 ( cd rtpproxy-%{V_rtpproxy}
187 %patch -p0 -P 5
188 ) || exit $?
189 %{l_shtool} subst %{l_value -s -a} \
190 scripts/opensipsctlrc \
191 scripts/osipsconsolerc
192 %{l_shtool} subst \
193 -e 's;^#! */bin/sh;#! %{l_prefix}/bin/bash;' \
194 scripts/opensipsctl
195 %{l_shtool} subst \
196 -e 's;^#! */bin/bash;#! %{l_prefix}/bin/bash;' \
197 modules/seas/doc/xml2sgml.sh \
198 scripts/opensipsdbctl \
199 test/*.sh
200 %{l_shtool} subst \
201 %if "%{with_dbgmem}" == "yes"
202 -e 's;\(-DF_MALLOC\);#\1;' \
203 -e 's;#\(-DDBG_QM_MALLOC\);\1;' \
204 %endif
205 -e 's;\(#define PKG_MEM_SIZE\) 2;\1 4;' \
206 config.h
207 %{l_shtool} subst \
208 %if "%{with_fsl}" == "yes"
209 -e 's;@fslldflags@;-L$(prefix)/lib;g' \
210 -e 's;@fsllibs@;-lfsl;g' \
211 %else
212 -e 's;@fslldflags@;;g' \
213 -e 's;@fsllibs@;;g' \
214 %endif
215 -e 's;^\(DEFS+= -I\)\$(LOCALBASE).*;\1$(prefix)/include;' \
216 -e 's;^\(DEFS+= -L\)\$(LOCALBASE).*;\1$(prefix)/lib -lssl -lcrypto;' \
217 -e 's;^SVNVERSION *=.*;;g' \
218 -e 's;^DBHTML2TXT *=.*;;g' \
219 -e 's;^DBXML2PDF *=.*;;g' \
220 -e 's;lib64;lib;' \
221 Makefile.defs
222 %{l_shtool} subst \
223 -e 's;\(radiusclient\)-ng;\1;g' \
224 modules/aaa_radius/aaa_radius.c \
225 modules/aaa_radius/rad.c \
226 Makefile.defs
227 %{l_shtool} subst \
228 -e 's;\(\$(data-dir)\)/\(dbtext\)/opensips;\1/\2;g' \
229 -e 's;\(\$(data-dir)\)/\(db_berkeley\)/opensips;\1/\2;g' \
230 -e 's;\(/usr/local/etc/opensips\);\1/*;g' \
231 -e 's;\(s#/usr/local/sbin\)#;\1/*#;g' \
232 -e 's;\(s#/usr/share/doc/$(NAME)/#$(doc-target)\)#;\1/#;g' \
233 -e 's;\(\$(MAKE).*\) \(install_module_custom\);\1 makefile_defs=0 \2;' \
234 -e 's#\(cd menuconfig;\)\$(MAKE) proper;#\1 CC="%{l_cc}" CPPFLAGS="%{l_cppflags ncurses}" LDFLAGS="%{l_ldflags}" LIBS="-lncurses" #' \
235 Makefile
236 %{l_shtool} subst \
237 -e 's;^\(LIBS=\).*;\1-L`%{l_prefix}/bin/pkg-config --libs db`;' \
238 utils/db_berkeley/Makefile
239 %{l_shtool} subst \
240 -e 's;/usr/share/doc/opensips/AUTHORS;%{l_prefix}/share/opensips/doc/AUTHORS;' \
241 scripts/opensipsctl.8
242 %{l_shtool} subst \
243 -e 's;\(ETCDIR=".*\)/"$;\1";' \
244 -e 's;\(ETCDIR="\)/usr/local/\(etc/opensips"\);\1%{l_prefix}/\2;' \
245 -e 's;\. /etc/opensips/opensipsctlrc;true;' \
246 -e 's;\. ~/.opensipsctlrc;true;' \
247 -e 's;/usr/local\(/lib/opensips/opensipsctl\);%{l_prefix}\1;' \
248 -e 's;/usr/local/\(etc/opensips/opensipsctlrc\);%{l_prefix}/\1;' \
249 -e 's;PATH=\$PATH:/usr/local/sbin;PATH=%{l_prefix}/sbin:$PATH;' \
250 scripts/opensipsdbctl \
251 scripts/opensipsctl
252 %{l_shtool} subst \
253 -e 's;/var/run/\(opensips.pid\);%{l_prefix}/var/opensips/\1;g' \
254 -e 's;\(my \$fifo_reply_path\) = "/tmp/";\1 = "%{l_prefix}/var/opensips/";' \
255 -e 's;\(my \$HISTORY_FILE\) = "/tmp/osipsconsole_history";\1 = "%{l_prefix}/var/opensips/osipsconsole_history";' \
256 scripts/opensipsctl \
257 scripts/osipsconsole
258 %{l_shtool} subst \
259 -e 's;/usr/local;;g' \
260 -e 's;\(/etc/opensips/\)\.\(opensipsctlrc\);%{l_prefix}\1\2;g' \
261 scripts/opensipsctl.8
262 %{l_shtool} subst \
263 -e 's;/var/run/\(opensips.pid\);%{l_prefix}/var/opensips/\1;' \
264 scripts/opensipsctl.base
265 %{l_shtool} subst \
266 -e 's;\(path=\)\$CHROOT_DIR/tmp/\(\$name\);\1${OSER_FIRET}/\2;g' \
267 scripts/opensipsctl.fifo
268 %{l_shtool} subst \
269 -e 's;/usr/local/share/opensips/dbtext/opensips;%{l_prefix}/var/opensips/db;' \
270 scripts/opensipsctl.dbtext
271 %{l_shtool} subst \
272 -e 's;\(DB_PATH="\)[^"][^"]*;%{l_prefix}/var/opensips/db_berkeley;' \
273 scripts/opensipsctl.db_berkeley
274 %{l_shtool} subst \
275 -e 's;PATH=\$PATH:/usr/local/sbin;PATH=%{l_prefix}/sbin:$PATH;' \
276 scripts/opensipsctl \
277 scripts/opensipsdbctl.base
278 %{l_shtool} subst \
279 -e 's;/usr/local/etc/opensips/dbtext;%{l_prefix}/var/opensips/db;' \
280 -e 's;\(\$DATA_DIR/dbtext\)/opensips;\1;g' \
281 scripts/opensipsdbctl.dbtext
282 %{l_shtool} subst \
283 -e 's;\(DATA_DIR="\)[^"][^"]*;\1%{l_prefix}/share/opensips;' \
284 scripts/opensipsdbctl.dbtext \
285 scripts/opensipsdbctl.oracle
286 %{l_shtool} subst \
287 -e 's;/usr/local/etc/opensips/db_berkeley;%{l_prefix}/var/opensips/db_berkeley;' \
288 -e 's;/usr/local/BerkeleyDB.[^/][^/]*/bin;%{l_prefix}/bin;' \
289 scripts/opensipsdbctl.db_berkeley
290 %{l_shtool} subst \
291 -e 's;/usr/local/\(share/opensips\);%{l_prefix}/\1;' \
292 scripts/opensipsdbctl.db_berkeley \
293 scripts/opensipsdbctl.mysql \
294 scripts/opensipsdbctl.pgsql
295 %{l_shtool} subst \
296 -e 's;\(script_flags(int\));\1,null);' \
297 scripts/dbtext/opensips/dialog
298 %{l_shtool} subst \
299 -e 's;body(string);body(blob);' \
300 -e 's;sender(string);sender(string,null);' \
301 scripts/dbtext/opensips/presentity
302 %{l_shtool} subst \
303 -e 's;\(expires(int\));\1,null);' \
304 -e 's;\(desired_expires(int\));\1,null);' \
305 -e 's;\(contact(string\));\1,null);' \
306 -e 's;\(remote_contact(string\));\1,null);' \
307 -e 's;\(version(int\));\1,null);' \
308 -e 's;\(extra_headers(string\));\1,null);' \
309 scripts/dbtext/opensips/pua
310 %{l_shtool} subst \
311 -e 's;\(reason(string\));\1,null);' \
312 scripts/dbtext/opensips/active_watchers \
313 scripts/dbtext/opensips/rls_watchers
314 %{l_shtool} subst \
315 -e 's;#! */usr/bin/python;#! %{l_prefix}/bin/python;' \
316 scripts/dbtextdb/*.py
317 %{l_shtool} subst \
318 -e 's;#! */usr/bin/perl;#! %{l_prefix}/bin/perl;' \
319 -e 's;^\(my \$PATH_BIN =\) "./";\1 "%{l_prefix}/bin/";' \
320 -e 's;^\(my \$PATH_CTLRC =\) "./scripts/";\1 "%{l_prefix}/etc/opensips/";' \
321 -e 's;^\(my \$PATH_ETC =\) "/usr/local/etc";\1 "%{l_prefix}/etc";' \
322 -e 's;^\(my \$PATH_LIBS =\) "/usr/local/lib";\1 "%{l_prefix}/lib";' \
323 -e 's;^\(my \$PATH_SHARE =\) "/usr/local/share";\1 "%{l_prefix}/share";' \
324 -e 's;^\(my $path = \)"/tmp/";\1"%{l_prefix}/var/opensips/";' \
325 scripts/osipsconsole
326 %{l_shtool} subst \
327 -e 's;if ( -x "/usr/bin/";if ( -x "%{l_prefix}/bin";' \
328 -e 's;if \[ -x "/usr/bin/\$1" \];if [ -x "%{l_prefix}/bin/$1" ];' \
329 -e 's;\$TOOLPATH = "/usr/bin/";$TOOLPATH = "%{l_prefix}/bin/";' \
330 -e 's;TOOLPATH="/usr/bin/\$1";TOOLPATH="%{l_prefix}/bin/$1";' \
331 -e 's;if ( -x "/bin/";if ( -x "/usr/bin/";' \
332 -e 's;if \[ -x "/bin/\$1" \];if [ -x "/usr/bin/$1" ];' \
333 -e 's;\$TOOLPATH = "/bin/";$TOOLPATH = "/usr/bin/";' \
334 -e 's;TOOLPATH="/bin/\$1";TOOLPATH="/usr/bin/$1";' \
335 -e 's;if ( -x "/usr/local/bin/\$1";if ( -x "/bin/$1";' \
336 -e 's;if \[ -x "/usr/local/bin/\$1" \];if [ -x "/bin/$1" ];' \
337 -e 's;\$TOOLPATH = "/usr/local/bin/;$TOOLPATH = "/bin/;' \
338 -e 's;TOOLPATH="/usr/local/bin/\$1";TOOLPATH="/bin/$1";' \
339 scripts/osipsconsole \
340 scripts/opensipsctl.base
341 %{l_shtool} subst \
342 -e 's;^\(DEFS+=\).*\\$;\1 \\;' \
343 -e "s;\-I[^ \t][^ \t]*;`%{l_prefix}/bin/pkg-config --cflags-only-I libcurl libxml-2.0`;g" \
344 -e "s;^\(LIBS=\).*;\1`%{l_prefix}/bin/pkg-config --libs libcurl libxml-2.0`;" \
345 modules/xcap_client/Makefile
346 %{l_shtool} subst \
347 -e 's;^\(DEFS+=\).*\\$;\1 \\;' \
348 -e "s;\-I[^ \t][^ \t]*;`%{l_prefix}/bin/pkg-config --cflags-only-I libxml-2.0`;g" \
349 -e "s;^\(LIBS=\).*;\1`%{l_prefix}/bin/pkg-config --libs libxml-2.0`;" \
350 modules/cpl-c/Makefile \
351 modules/presence/Makefile \
352 modules/presence_dialoginfo/Makefile \
353 modules/presence_xml/Makefile \
354 modules/pua/Makefile \
355 modules/pua_bla/Makefile \
356 modules/pua_dialoginfo/Makefile \
357 modules/pua_mi/Makefile \
358 modules/pua_usrloc/Makefile \
359 modules/pua_xmpp/Makefile \
360 modules/b2b_logic/Makefile \
361 modules/rls/Makefile
362 %{l_shtool} subst \
363 -e 's;^\(DEFS+= *\);\1-D__EXTENSIONS__ ;' \
364 modules/presence_xml/Makefile
365 %{l_shtool} subst \
366 -e 's;^\(DEFS+=\).*;\1`%{l_prefix}/bin/pkg-config --cflags-only-I libconfuse`;' \
367 -e 's;^\(LIBS=\).*;\1`%{l_prefix}/bin/pkg-config --libs libconfuse`;' \
368 modules/carrierroute/Makefile
369 %{l_shtool} subst \
370 -e 's;\(LIBS = .*-L\$(shell pg_config --libdir) -lpq\);\1 $(shell pg_config --libs);' \
371 modules/db_postgres/Makefile
372 %{l_shtool} subst \
373 -e 's;-I\$(LOCALBASE)/BerkeleyDB[0-9\.\-]*/include[\t ]*;;' \
374 -e 's;-L\$(LOCALBASE)/BerkeleyDB[0-9\.\-]*/lib[\t ]*;;' \
375 modules/db_berkeley/Makefile \
376 utils/db_berkeley/Makefile
377 %{l_shtool} subst \
378 -e 's;\(\$(cfg-prefix)\)\$(shell net-snmp-config --prefix);\1;' \
379 modules/snmpstats/Makefile
380 %{l_shtool} subst \
381 -e 's;LM_WARN(\(\"uac does not spread across\);LM_NOTICE(\1;' \
382 modules/tm/uac.c
383 %{l_shtool} subst \
384 -e 's;\(#define MAX_SSL_RETRIES\) 32;\1 1024;' \
385 tls/tls_server.c
386 %{l_shtool} subst \
387 -e 's;LM_ERR(\("unable to load\);LM_WARN(\1;g' \
388 tls/tls_init.c
389 %{l_shtool} subst \
390 -e 's;^\(default_bits[ \t]*=[ \t]*\)2048;\14096;' \
391 etc/tls/ca.conf
392 %{l_shtool} subst \
393 -e '1,2d' \
394 etc/tls/README
395 %{l_shtool} subst \
396 -e 's;\(radiusclient\)-ng;\1;g' \
397 -e 's;/usr/local\(/etc/radiusclient/radiusclient.conf\);%{l_prefix}\1;' \
398 radius.h
400 %build
401 # select modules
402 modslist='b2b_entities b2b_logic cpl-c db_http dialplan identity jabber perl perlvdb presence presence_dialoginfo presence_mwi presence_xml pua pua_bla pua_dialoginfo pua_mi pua_usrloc pua_xmpp regex rls tlsops xcap_client xmpp'
403 %if "%{with_croute}" == "yes"
404 modslist="$modslist carrierroute"
405 %endif
406 %if "%{with_json}" == "yes"
407 modslist="$modslist json"
408 %endif
409 %if "%{with_ldap}" == "yes"
410 modslist="$modslist h350 ldap"
411 %endif
412 %if "%{with_memcached}" == "yes"
413 modslist="$modslist memcached"
414 %endif
415 %if "%{with_osp}" == "yes"
416 modslist="$modslist osp"
417 %endif
418 %if "%{with_radius}" == "yes"
419 modslist="$modslist aaa_radius auth_aaa group uri"
420 %endif
421 %if "%{with_snmp}" == "yes"
422 modslist="$modslist snmpstats"
423 %endif
424 %if "%{with_bdb}" == "yes"
425 modslist="$modslist db_berkeley"
426 %endif
427 %if "%{with_mysql}" == "yes"
428 modslist="$modslist db_mysql"
429 %endif
430 %if "%{with_pgsql}" == "yes"
431 modslist="$modslist db_postgres"
432 %endif
433 %if "%{with_odbc}" == "yes"
434 modslist="$modslist db_unixodbc"
435 %endif
436 %if "%{with_geoip}" == "yes"
437 modslist="$modslist mmgeoip"
438 %endif
440 # build dependencies
441 %{l_make} %{l_mflags} \
442 CC="%{l_cc}" \
443 %if "%{with_sctp}" == "yes"
444 SCTP=1 \
445 %endif
446 %if "%{with_ssl}" == "yes"
447 TLS=1 \
448 %endif
449 prefix=%{l_prefix} \
450 dep >/dev/null 2>&1 || true
452 # build program
453 %{l_make} %{l_mflags -O} \
454 CC="%{l_cc}" \
455 %if "%{with_sctp}" == "yes"
456 SCTP=1 \
457 %endif
458 %if "%{with_ssl}" == "yes"
459 TLS=1 \
460 %endif
461 prefix=%{l_prefix} \
462 opensips
464 # build utilities
465 %{l_make} %{l_mflags -O} \
466 CC="%{l_cc}" \
467 %if "%{with_sctp}" == "yes"
468 SCTP=1 \
469 %endif
470 %if "%{with_ssl}" == "yes"
471 TLS=1 \
472 %endif
473 prefix=%{l_prefix} \
474 modules="$modslist" \
475 utils
477 # build modules
478 %{l_make} %{l_mflags -O} \
479 CC="%{l_cc}" \
480 %if "%{with_sctp}" == "yes"
481 SCTP=1 \
482 %endif
483 %if "%{with_ssl}" == "yes"
484 TLS=1 \
485 %endif
486 include_modules="$modslist" \
487 skip_modules="" \
488 prefix=%{l_prefix} \
489 modules
491 # build menuconfig
492 %{l_make} %{l_mflags} \
493 prefix=%{l_prefix} \
494 cfg-prefix=$RPM_BUILD_ROOT%{l_prefix}/etc \
495 data-prefix=$RPM_BUILD_ROOT%{l_prefix}/share \
496 opensipsmc
498 # build rtpproxy extension
499 ( cd rtpproxy-%{V_rtpproxy}
500 export CC="%{l_cc}"
501 export CFLAGS="%{l_cflags -O}"
502 export CPPFLAGS=""
503 case "%{l_platform -t}" in
504 *-sunos5.11 ) CPPFLAGS="$CPPFLAGS -DGE_SOL11" ;;
505 esac
506 export LIBS=""
507 case "%{l_platform -t}" in
508 *-sunos* ) LIBS="$LIBS -lsocket -lnsl -lrt" ;;
509 esac
510 export GREP="grep"
511 ./configure
512 %{l_make} %{l_mflags -O}
513 ) || exit $?
515 %install
516 # select modules
517 modslist='b2b_entities b2b_logic cpl-c db_http identity jabber perl perlvdb presence presence_dialoginfo presence_mwi presence_xml pua pua_bla pua_dialoginfo pua_mi pua_usrloc pua_xmpp regex rls tlsops xcap_client xmpp'
518 %if "%{with_croute}" == "yes"
519 modslist="$modslist carrierroute"
520 %endif
521 %if "%{with_json}" == "yes"
522 modslist="$modslist json"
523 %endif
524 %if "%{with_ldap}" == "yes"
525 modslist="$modslist h350 ldap"
526 %endif
527 %if "%{with_memcached}" == "yes"
528 modslist="$modslist memcached"
529 %endif
530 %if "%{with_osp}" == "yes"
531 modslist="$modslist osp"
532 %endif
533 %if "%{with_radius}" == "yes"
534 modslist="$modslist aaa_radius auth_aaa group uri"
535 %endif
536 %if "%{with_snmp}" == "yes"
537 modslist="$modslist snmpstats"
538 %endif
539 %if "%{with_bdb}" == "yes"
540 modslist="$modslist db_berkeley"
541 %endif
542 %if "%{with_mysql}" == "yes"
543 modslist="$modslist db_mysql"
544 %endif
545 %if "%{with_pgsql}" == "yes"
546 modslist="$modslist db_postgres"
547 %endif
548 %if "%{with_odbc}" == "yes"
549 modslist="$modslist db_unixodbc"
550 %endif
551 %if "%{with_geoip}" == "yes"
552 modslist="$modslist mmgeoip"
553 %endif
555 # install program, utils, and modules
556 %{l_make} %{l_mflags} \
557 INSTALL="%{l_shtool} install%{l_nil} -c" \
558 basedir=$RPM_BUILD_ROOT \
559 prefix=%{l_prefix} \
560 doc-dir=share/opensips/doc \
561 man-dir=man \
562 data-dir=share/opensips \
563 include_modules="$modslist" \
564 skip_modules="" \
565 install
567 # install rtpproxy software
568 %{l_shtool} install -c -s -m 755 \
569 rtpproxy-%{V_rtpproxy}/rtpproxy \
570 $RPM_BUILD_ROOT%{l_prefix}/sbin/rtpproxy
572 # strip down installation
573 strip $RPM_BUILD_ROOT%{l_prefix}/sbin/* >/dev/null 2>&1 || true
575 # create installation hierarchy
576 %{l_shtool} mkdir -f -p -m 700 \
577 $RPM_BUILD_ROOT%{l_prefix}/var/opensips/acc \
578 $RPM_BUILD_ROOT%{l_prefix}/var/opensips/tmp
580 # install default configuration
581 %{l_shtool} mkdir -f -p -m 755 \
582 $RPM_BUILD_ROOT%{l_prefix}/etc/opensips
583 %{l_shtool} install -c -m 644 %{l_value -s -a} \
584 %{SOURCE opensips.cfg} \
585 $RPM_BUILD_ROOT%{l_prefix}/etc/opensips/
587 # conditionally remove osipsconsole resources
588 %if "%{with_cons}" != "yes"
589 rm $RPM_BUILD_ROOT%{l_prefix}/sbin/osipsconsole
590 rm $RPM_BUILD_ROOT%{l_prefix}/etc/opensips/osipsconsolerc
591 %endif
593 # install OSSP fsl configuration
594 %{l_shtool} mkdir -f -p -m 755 \
595 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl
596 %{l_shtool} install -c -m 644 %{l_value -s -a} \
597 %{SOURCE fsl.opensips} \
598 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl/
600 # install runcommand script
601 %{l_shtool} mkdir -f -p -m 755 \
602 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
603 %{l_shtool} install -c -m 755 %{l_value -s -a} \
604 %{SOURCE rc.opensips} \
605 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
607 # determine installation files
608 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
609 %{l_files_std} \
610 '%not %dir %{l_prefix}/etc/fsl' \
611 '%config %{l_prefix}/etc/fsl/*' \
612 '%config %{l_prefix}/etc/opensips/*' \
613 '%doc %{l_prefix}/share/opensips/doc/*' \
614 '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/opensips'
616 %files -f files
618 %clean
620 %post
621 # on install, setup database (osipsconsole db create /pfx/var/opensips/db)
622 if [ ! -d $RPM_INSTALL_PREFIX/var/opensips/db ]; then
623 %{l_shtool} mkdir -f -p -m 700 -o %{l_rusr} -g %{l_rgrp} \
624 $RPM_INSTALL_PREFIX/var/opensips/db
625 rm -f $RPM_INSTALL_PREFIX/share/opensips/dbtext/*.orig
626 %{l_shtool} install -c -m 600 -o %{l_rusr} -g %{l_rgrp} \
627 $RPM_INSTALL_PREFIX/share/opensips/dbtext/* \
628 $RPM_INSTALL_PREFIX/var/opensips/db/
629 fi
631 # after upgrade, restart service
632 [ $1 -eq 2 ] || exit 0
633 eval `%{l_rc} opensips status 2>/dev/null`
634 [ ".$opensips_active" = .yes ] && %{l_rc} opensips restart
635 exit 0
637 %preun
638 # before erase, stop service and remove log files
639 [ $1 -eq 0 ] || exit 0
640 %{l_rc} opensips stop 2>/dev/null
641 rm -rf $RPM_INSTALL_PREFIX/var/opensips/db 2>/dev/null || true
642 rm -f $RPM_INSTALL_PREFIX/var/opensips/* 2>/dev/null || true
643 exit 0