1#!/usr/bin/make 2 3include ../../version 4 5DEFAULT_RELEASE := 1 6 7VERSION ?= $(NXT_VERSION) 8RELEASE ?= $(DEFAULT_RELEASE) 9 10SRCDIR= unit-$(VERSION) 11 12CODENAME = $(shell lsb_release -cs) 13 14BUILD_DEPENDS_unit = build-essential debhelper devscripts fakeroot libxml2-utils lintian lsb-release xsltproc libssl-dev 15BUILD_DEPENDS = $(BUILD_DEPENDS_unit) 16 17MODULES= 18 19# Ubuntu 20.04 20ifeq ($(CODENAME),focal) 21include Makefile.php 22include Makefile.python27 23include Makefile.python38 24include Makefile.go 25include Makefile.perl 26include Makefile.ruby 27include Makefile.jsc-common 28include Makefile.jsc11 29endif 30 31# Ubuntu 19.10 32ifeq ($(CODENAME),eoan) 33include Makefile.php 34include Makefile.python27 35include Makefile.python37 36include Makefile.python38 37include Makefile.go 38include Makefile.perl 39include Makefile.ruby 40include Makefile.jsc-common 41include Makefile.jsc11 42endif 43 44# Ubuntu 19.04 45ifeq ($(CODENAME),disco) 46include Makefile.php 47include Makefile.python27 48include Makefile.python37 49include Makefile.python38 50include Makefile.go 51include Makefile.perl 52include Makefile.ruby 53include Makefile.jsc-common 54include Makefile.jsc11 55endif 56 57# Ubuntu 18.10 58ifeq ($(CODENAME),cosmic) 59include Makefile.php 60include Makefile.python27 61include Makefile.python36 62include Makefile.python37 63include Makefile.go 64include Makefile.perl 65include Makefile.ruby 66include Makefile.jsc-common 67include Makefile.jsc8 68include Makefile.jsc11 69endif 70 71# Ubuntu 18.04 72ifeq ($(CODENAME),bionic) 73include Makefile.php 74include Makefile.python27 75include Makefile.python36 76include Makefile.python37 77include Makefile.python38 78include Makefile.go 79include Makefile.perl 80include Makefile.ruby 81include Makefile.jsc-common 82include Makefile.jsc8 83include Makefile.jsc11 84endif 85 86# Ubuntu 16.04 87ifeq ($(CODENAME),xenial) 88include Makefile.php 89include Makefile.python27 90include Makefile.python35 91include Makefile.go 92include Makefile.perl 93include Makefile.ruby 94include Makefile.jsc-common 95include Makefile.jsc8 96endif 97 98# Ubuntu 14.04 99ifeq ($(CODENAME),trusty) 100include Makefile.php 101include Makefile.python 102include Makefile.perl 103endif 104 105# Debian 10 106ifeq ($(CODENAME),buster) 107include Makefile.php 108include Makefile.python27 109include Makefile.python37 110include Makefile.go 111include Makefile.perl 112include Makefile.ruby 113include Makefile.jsc-common 114include Makefile.jsc11 115endif 116 117# Debian 9 118ifeq ($(CODENAME),stretch) 119include Makefile.php 120include Makefile.python27 121include Makefile.python35 122include Makefile.go 123include Makefile.perl 124include Makefile.ruby 125include Makefile.jsc-common 126include Makefile.jsc8 127endif 128 129# Debian 8 130ifeq ($(CODENAME),jessie) 131include Makefile.php 132include Makefile.python27 133include Makefile.python34 134include Makefile.perl 135include Makefile.ruby 136endif 137 138CONFIGURE_ARGS=\ 139 --prefix=/usr \ 140 --state=/var/lib/unit \ 141 --control="unix:/var/run/control.unit.sock" \ 142 --pid=/var/run/unit.pid \ 143 --log=/var/log/unit.log \ 144 --tmp=/var/tmp \ 145 --tests \ 146 --openssl 147 148export CR=\\n 149 150default: 151 @echo "valid targets: all modules unit $(addprefix unit-, $(MODULES)) test test-debug clean" 152 153all: check-build-depends-all unit modules 154 155modules: $(addprefix unit-, $(MODULES)) 156 157check-build-depends-%: 158 @{ \ 159 case "$*" in \ 160 all) pkgs="$(BUILD_DEPENDS)" ;; \ 161 unit) pkgs="$(BUILD_DEPENDS_unit)" ;; \ 162 *) pkgs="$(BUILD_DEPENDS_unit) $(BUILD_DEPENDS_$*)" ;; \ 163 esac ; \ 164 not_installed= ; \ 165 for pkg in $${pkgs}; do \ 166 dpkg -s $${pkg} >/dev/null 2>&1 ; \ 167 if [ $$? -ne 0 ]; then \ 168 not_installed="$${not_installed} $${pkg}" ; \ 169 fi ; \ 170 done ; \ 171 if test -n "$${not_installed}" ; then \ 172 echo "" >&2 ; \ 173 echo "The following packages are required in order to proceed:" >&2 ; \ 174 echo "" >&2 ; \ 175 echo $${not_installed} >&2 ; \ 176 echo "" >&2 ; \ 177 exit 1 ; \ 178 fi \ 179 } 180 touch $@ 181 182debuild/$(SRCDIR)/debian: 183 @{ \ 184 set -e ; \ 185 mkdir -p debuild/$(SRCDIR) ; \ 186 cp -pr debian debuild/$(SRCDIR) ; \ 187 echo '9' > debuild/$(SRCDIR)/debian/compat ; \ 188 mkdir -p debuild/$(SRCDIR)/debian/source ; \ 189 echo '3.0 (quilt)' > debuild/$(SRCDIR)/debian/source/format ; \ 190 cat debian/rules.in | sed \ 191 -e "s#%%CONFIGURE_ARGS%%#$(CONFIGURE_ARGS)#g" \ 192 > debuild/$(SRCDIR)/debian/rules ; \ 193 } 194 195debuild/$(SRCDIR)/debian/changelog: ../../docs/changes.xml | debuild/$(SRCDIR)/debian 196 cd ../../docs && make ../build/unit.deb-changelog 197ifneq ($(DEFAULT_VERSION)$(DEFAULT_RELEASE), $(VERSION)$(RELEASE)) 198 cat ../../build/unit.deb-changelog | sed \ 199 -e "s/unit ($(DEFAULT_VERSION)-$(DEFAULT_RELEASE)~/unit ($(VERSION)-$(RELEASE)~/" \ 200 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 201 > debuild/$(SRCDIR)/debian/changelog 202else 203 cat ../../build/unit.deb-changelog | sed \ 204 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 205 > debuild/$(SRCDIR)/debian/changelog 206endif 207 208debuild/unit_$(VERSION).orig.tar.gz: | debuild/$(SRCDIR)/debian 209 cd ../.. && tar -czf pkg/deb/debuild/$(SRCDIR).tar.gz \ 210 --transform "s#^#$(SRCDIR)/#" \ 211 LICENSE NOTICE CHANGES README configure auto src test version go 212 mv debuild/$(SRCDIR).tar.gz debuild/unit_$(VERSION).orig.tar.gz 213 cd debuild && tar zxf unit_$(VERSION).orig.tar.gz 214 215unit: check-build-depends-unit debuild/unit_$(VERSION).orig.tar.gz debuild/$(SRCDIR)/debian/changelog 216 @echo "===> Building $@ package" 217 cd debuild/$(SRCDIR) && debuild -us -uc 218 mkdir -p debs 219 find debuild/ -maxdepth 1 -type f -exec cp {} debs/ \; 220 ln -s debuild/$(SRCDIR)/build $@ 221 222debuild-%: debuild/unit_$(VERSION).orig.tar.gz ../../docs/changes.xml 223 mkdir $@ 224 cp debuild/unit_$(VERSION).orig.tar.gz debuild-$*/unit-$(MODULE_SUFFIX_$*)_$(VERSION).orig.tar.gz 225 cd $@ && tar zxf unit-$(MODULE_SUFFIX_$*)_$(VERSION).orig.tar.gz 226 mkdir $@/$(SRCDIR)/debian 227 echo '9' > $@/$(SRCDIR)/debian/compat 228 mkdir $@/$(SRCDIR)/debian/source 229 echo '3.0 (quilt)' > $@/$(SRCDIR)/debian/source/format 230 cd ../../docs && make ../build/unit-$(MODULE_SUFFIX_$*).deb-changelog 231ifneq ($(DEFAULT_VERSION)$(DEFAULT_RELEASE), $(VERSION)$(RELEASE)) 232 cat ../../build/unit-$(MODULE_SUFFIX_$*).deb-changelog | sed \ 233 -e "s/unit-$* ($(DEFAULT_VERSION)-$(DEFAULT_RELEASE)~/unit-$* ($(VERSION)-$(RELEASE)~/" \ 234 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 235 > $@/$(SRCDIR)/debian/changelog 236else 237 cat ../../build/unit-$(MODULE_SUFFIX_$*).deb-changelog | sed \ 238 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 239 > $@/$(SRCDIR)/debian/changelog 240endif 241 if [ -f debian.module/copyright.unit-$(MODULE_SUFFIX_$*) ]; then \ 242 cp debian.module/copyright.unit-$(MODULE_SUFFIX_$*) debuild-$*/$(SRCDIR)/debian/copyright ; \ 243 else \ 244 cp debian/copyright debuild-$*/$(SRCDIR)/debian/ ; \ 245 fi 246 @{ \ 247 set -e ; \ 248 for src in $(MODULE_SOURCES_$*); do \ 249 cp debian.module/$${src} $@/$(SRCDIR)/debian/ ; \ 250 done ; \ 251 definitions=`echo "$$MODULE_DEFINITIONS_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 252 prebuild=`echo "$$MODULE_PREBUILD_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 253 preinstall=`echo "$$MODULE_PREINSTALL_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 254 postinstall=`echo "$$MODULE_POSTINSTALL_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 255 post=`echo "$$MODULE_POST_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 256 cat debian.module/$(if $(MODULE_NOARCH_$*),control-noarch.in,control.in) | sed \ 257 -e "s#%%NAME%%#unit-$(MODULE_SUFFIX_$*)#g" \ 258 -e "s#%%SUMMARY%%#$(MODULE_SUMMARY_$*)#g" \ 259 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 260 -e "s#%%UNIT_VERSION%%#$(VERSION)#g" \ 261 -e "s#%%UNIT_RELEASE%%#$(RELEASE)#g" \ 262 -e "s#%%VERSION%%#$(MODULE_VERSION_$*)#g" \ 263 -e "s#%%RELEASE%%#$(MODULE_RELEASE_$*)#g" \ 264 -e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$*)#g" \ 265 -e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$*)#g" \ 266 > $@/$(SRCDIR)/debian/control ; \ 267 cat debian.module/$(if $(MODULE_NOARCH_$*),rules-noarch.in,rules.in) | sed \ 268 -e "s#%%NAME%%#unit-$(MODULE_SUFFIX_$*)#g" \ 269 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 270 -e "s#%%UNIT_VERSION%%#$(VERSION)#g" \ 271 -e "s#%%UNIT_RELEASE%%#$(RELEASE)#g" \ 272 -e "s#%%CONFIGURE_ARGS%%#$(CONFIGURE_ARGS)#g" \ 273 -e "s#%%MODULE_CONFARGS%%#$(MODULE_CONFARGS_$*)#g" \ 274 -e "s#%%MODULE_MAKEARGS%%#$(MODULE_MAKEARGS_$*)#g" \ 275 -e "s#%%MODULE_INSTARGS%%#$(MODULE_INSTARGS_$*)#g" \ 276 -e "s#%%MODULE_DEFINITIONS%%#$${definitions}#g" \ 277 -e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \ 278 -e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \ 279 -e "s#%%MODULE_POSTINSTALL%%#$${postinstall}#g" \ 280 > $@/$(SRCDIR)/debian/rules ; \ 281 cat debian.module/preinst.in | sed \ 282 -e "s#%%MODULE_POST%%#$$post#g" \ 283 > $@/$(SRCDIR)/debian/preinst ; \ 284 chmod +x $@/$(SRCDIR)/debian/rules ; \ 285 } 286 287unit-%: check-build-depends-% | debuild-% 288 @echo "===> Building $@ package" 289 cd debuild-$*/$(SRCDIR) && debuild -us -uc 290 mkdir -p debs 291 find debuild-$*/ -maxdepth 1 -type f -exec cp {} debs/ \; 292 ln -s debuild-$*/$(SRCDIR)/build $@ 293 294test: unit modules 295 @{ \ 296 for so in `find debuild-*/unit-$(VERSION)/debian/build-unit/ -type f \( -name "*.so" -o -name "*.jar" \)`; do \ 297 soname=`basename $${so}` ; \ 298 test "$${soname}" = "java.unit.so" && continue ; \ 299 test -h debuild/unit-$(VERSION)/debian/build-unit/build/$${soname} || \ 300 ln -fs `pwd`/$${so} debuild/unit-$(VERSION)/debian/build-unit/build/$${soname} ; \ 301 done ; \ 302 ( cd debuild/unit-$(VERSION)/debian/build-unit && ./test/run.py ) ; \ 303 } 304 305test-debug: unit modules 306 @{ \ 307 for so in `find debuild-*/unit-$(VERSION)/debian/build-unit-debug/ -type f \( -name "*.so" -o -name "*.jar" \)`; do \ 308 soname=`basename $${so}` ; \ 309 test "$${soname}" = "java.unit.so" && continue ; \ 310 test -h debuild/unit-$(VERSION)/debian/build-unit-debug/build/$${soname} || \ 311 ln -fs `pwd`/$${so} debuild/unit-$(VERSION)/debian/build-unit-debug/build/$${soname} ; \ 312 done ; \ 313 ( cd debuild/unit-$(VERSION)/debian/build-unit-debug && ./test/run.py ) ; \ 314 } 315 316clean: 317 rm -rf debuild debuild-* debs ../../build 318 rm -f check-build-depends-* 319 find . -maxdepth 1 -type l -delete 320 321.PHONY: default all modules test test-debug clean 322 323.SECONDARY: $(addprefix check-build-depends-, $(MODULES)) $(addprefix debuild-, $(MODULES)) 324