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