pkg/kamailio/deb: enable verbose builds
[sip-router] / pkg / kamailio / deb / stretch / rules
1 #!/usr/bin/make -f
2 # Sample debian/rules that uses debhelper.
3 # GNU copyright 1997 to 1999 by Joey Hess.
4
5 DEBVERSION:=$(shell head -n 1 debian/changelog \
6                     | sed -e 's/^[^(]*(\([^)]*\)).*/\1/')
7 UPVERSION:=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(\([0-9]\+\):\)\?\(.*\)-.*/\3/p')
8
9 FILENAME := kamailio_$(UPVERSION).orig.tar.gz
10 URL := http://www.kamailio.org/pub/kamailio/$(UPVERSION)/src/kamailio-$(UPVERSION)_src.tar.gz
11
12 DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
13
14 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
15 DPKG_EXPORT_BUILDFLAGS = 1
16 include /usr/share/dpkg/buildflags.mk
17
18 # Uncomment this to turn on verbose mode.
19 #export DH_VERBOSE=1
20
21 export JAVA_HOME=/usr/lib/jvm/java-gcj
22 export RADCLI=1
23
24 # modules not in the "main" kamailio package
25 EXCLUDED_MODULES=
26
27 # extra modules to skip, because they are not compilable now
28 # - regardless if they go to the main kamailio package or to some module package,
29 # they will be excluded from compile and install of all
30 EXTRA_EXCLUDED_MODULES=bdb dbtext oracle pa iptrtpproxy mi_xmlrpc dnssec
31
32 # module groups that are packaged in seperate packages
33 # (with the name kamailio-$(group_name)-modules)
34 # Note: the order is important (should be in dependency order, the one
35 # on which other depend first)
36 PACKAGE_GROUPS=mysql postgres berkeley unixodbc radius presence \
37                            ldap xml perl utils lua memcached \
38                            snmpstats carrierroute xmpp cpl redis python geoip geoip2 \
39                            sqlite json mono ims sctp java \
40                            tls outbound websocket autheph kazoo cnxcc \
41                            erlang systemd phonenum mongodb rabbitmq
42
43 # module groups to be packaged onto kamailio-extra-modules
44 EXTRA_GROUPS=gzcompress uuid ev jansson http_async
45
46 # name of libdir in the path for libraries (e.g., lib for 32b, lib64 for 64b)
47 export LIBDIR ?= lib/$(DEB_HOST_MULTIARCH)
48
49 # directories with possible duplicate libraries (that should be deleted
50 # from current module* packages)
51 DUP_LIBS_DIRS=$(CURDIR)/debian/kamailio/usr/$(LIBDIR)/kamailio \
52                         $(CURDIR)/debian/kamailio-db-modules/usr/$(LIBDIR)/kamailio
53
54 # "function" to get package short name out of a dir/module_name
55 # it also transforms db_foo into foo
56 mod_name=$(subst db_,,$(lastword $(subst /, ,$(1))))
57
58 define PACKAGE_GRP_BUILD_template
59         # package all the modules in PACKAGE_GROUPS in separate packages
60         $(foreach grp,$(PACKAGE_GROUPS),\
61                 $(MAKE) every-module group_include="k$(grp)" quiet=verbose
62         )
63 endef
64
65 define PACKAGE_GRP_INSTALL_template
66         $(foreach grp,$(PACKAGE_GROUPS),\
67                 $(MAKE) install-modules-all LIBDIR=$(LIBDIR) group_include="k$(grp)" \
68                 BASEDIR=$(CURDIR)/debian/kamailio-$(grp)-modules \
69                 cfg_prefix=$(CURDIR)/debian/kamailio-$(grp)-modules \
70                 doc-dir=share/doc/kamailio-$(grp)-modules quiet=verbose
71                 # eliminate duplicate libs
72                 -for d in $(DUP_LIBS_DIRS); do \
73                         test "$$d" != "$(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio" &&\
74                         for r in `find $$d -name 'lib*'|xargs`; do \
75                                 echo "removing $(grp) lib `basename $$r` present also in $$d";\
76                                 rm -f $(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \
77                         done ; \
78                 done
79                 find $(CURDIR)/debian/kamailio-$(grp)-modules -depth -empty -type d -exec rmdir {} \;
80         )
81 endef
82
83 define PACKAGE_EXTRA_BUILD_template
84         # package all the modules in EXTRA_GROUPS in separate packages
85         $(foreach grp,$(EXTRA_GROUPS),\
86                 $(MAKE) every-module group_include="k$(grp)" quiet=verbose
87         )
88 endef
89
90 define PACKAGE_EXTRA_INSTALL_template
91         $(foreach grp,$(EXTRA_GROUPS),\
92                 $(MAKE) install-modules-all LIBDIR=$(LIBDIR) group_include="k$(grp)" \
93                 BASEDIR=$(CURDIR)/debian/kamailio-extra-modules \
94                 cfg_prefix=$(CURDIR)/debian/kamailio-extra-modules \
95                 doc-dir=share/doc/kamailio-extra-modules quiet=verbose
96         )
97         # eliminate duplicate libs
98         -for d in $(DUP_LIBS_DIRS); do \
99                 test "$$d" != "$(CURDIR)/debian/kamailio-extra-modules/usr/$(LIBDIR)/kamailio" &&\
100                 for r in `find $$d -name 'lib*'|xargs`; do \
101                         echo "removing extra lib `basename $$r` present also in $$d";\
102                         rm -f $(CURDIR)/debian/kamailio-extra-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \
103                 done ; \
104         done
105         find $(CURDIR)/debian/kamailio-extra-modules -depth -empty -type d -exec rmdir {} \;
106 endef
107
108 # CFLAGS + CPPFLAGS -> CC_EXTRA_OPTS
109 CC_EXTRA_OPTS := $(shell dpkg-buildflags --get CPPFLAGS)
110 CC_EXTRA_OPTS += $(shell DEB_CFLAGS_MAINT_STRIP=-O2 dpkg-buildflags --get CFLAGS)
111 CXXFLAGS := $(shell DEB_CXXFLAGS_MAINT_STRIP=-O2 dpkg-buildflags --get CXXFLAGS)
112 # LDFLAGS -> LD_EXTRA_OPTS
113 LD_EXTRA_OPTS := $(shell dpkg-buildflags --get LDFLAGS)
114
115 # https://wiki.debian.org/ReproducibleBuilds/
116 CC_EXTRA_OPTS += -DVERSION_NODATE
117
118 configure: configure-stamp
119 configure-stamp:
120         dh_testdir
121         # Add here commands to configure the package.
122         $(MAKE) FLAVOUR=kamailio cfg prefix=/usr cfg_prefix=$(CURDIR)/debian/kamailio \
123                         cfg_target=/etc/kamailio/ \
124                         BASEDIR=$(CURDIR)/debian/kamailio \
125                         skip_modules="$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)" \
126                         CC_EXTRA_OPTS="$(CC_EXTRA_OPTS)" \
127                         LD_EXTRA_OPTS="$(LD_EXTRA_OPTS)" \
128                         group_include="kstandard" quiet=verbose
129
130         touch configure-stamp
131
132
133 build: build-stamp
134 build-arch: build-stamp
135 build-indep: build-stamp
136 build-stamp: configure-stamp
137         dh_testdir
138         # Add here commands to compile the package.
139         $(MAKE) all quiet=verbose
140         # make groups
141         $(call PACKAGE_GRP_BUILD_template)
142         $(call PACKAGE_EXTRA_BUILD_template)
143         touch build-stamp
144
145 clean:
146         dh_testdir
147         dh_testroot
148         rm -f build-stamp configure-stamp
149         # Add here commands to clean up after the build process.
150         $(MAKE) maintainer-clean
151         dh_clean
152
153 install: build
154         dh_testdir
155         dh_testroot
156         dh_prep
157         dh_installdirs
158         # Add here commands to install the package into debian/kamailio
159         $(MAKE) install group_include="kstandard"
160         # make group packages
161         $(call PACKAGE_GRP_INSTALL_template)
162         $(call PACKAGE_EXTRA_INSTALL_template)
163         mv $(CURDIR)/debian/kamailio-berkeley-modules/usr/sbin/kambdb_recover \
164                 $(CURDIR)/debian/kamailio-berkeley-bin/usr/sbin/kambdb_recover
165         # install /etc/default/kamailio file
166         mkdir -p $(CURDIR)/debian/kamailio/etc/default
167         cp -f debian/kamailio.default $(CURDIR)/debian/kamailio/etc/default/kamailio
168         # delete /var/run/kamailio dir
169         rm -rf $(CURDIR)/debian/kamailio/usr/local
170
171
172 # This single target is used to build all the packages, all at once, or
173 # one at a time. So keep in mind: any options passed to commands here will
174 # affect _all_ packages. Anything you want to only affect one package
175 # should be put in another target, such as the install target.
176 binary-common:
177         dh_testdir
178         dh_testroot
179         dh_installdebconf
180         dh_installdocs
181         dh_installexamples -Xobsoleted -Xsr
182         dh_installmenu
183         dh_systemd_enable -pkamailio
184         dh_installinit -pkamailio -- defaults 23
185         dh_systemd_start -pkamailio
186         dh_installcron
187         dh_installman
188         dh_installinfo
189         dh_lintian
190         dh_installchangelogs ChangeLog
191         dh_link
192         dh_strip --dbg-package=kamailio-dbg
193         dh_compress
194         dh_fixperms
195         dh_makeshlibs
196         dh_installdeb
197         dh_shlibdeps
198         dh_gencontrol
199         dh_md5sums
200         dh_builddeb
201
202 # Build architecture-independent packages using the common target
203 binary-indep: build install
204 # (Uncomment this next line if you have such packages.)
205 #        $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
206 # We have nothing to do by default.
207
208
209 # Build architecture-dependent packages using the common target
210 binary-arch: build install
211         $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
212
213 # Any other binary targets build just one binary package at a time.
214 binary-%: build install
215         $(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$*
216
217 print-version:
218         @@echo "Debian version:          $(DEBVERSION)"
219         @@echo "Upstream version:        $(UPVERSION)"
220
221 get-orig-source:
222         @@dh_testdir
223         @@[ -d ../tarballs/. ]||mkdir -p ../tarballs
224         @@echo Downloading $(FILENAME) from $(URL) ...
225         @@wget -nv -T10 -t3 -O ../tarballs/$(FILENAME) $(URL)
226
227 binary: binary-indep binary-arch
228 .PHONY: build clean binary-indep binary-arch binary install configure
229