1#!/usr/bin/make 2 3DEFAULT_VERSION := $(shell grep 'define NXT_VERSION' ../../src/nxt_main.h \ 4 | sed -e 's/^.*"\(.*\)".*/\1/') 5 6DEFAULT_RELEASE := 1 7 8VERSION ?= $(DEFAULT_VERSION) 9RELEASE ?= $(DEFAULT_RELEASE) 10 11SRCDIR= unit-$(VERSION) 12 13CODENAME = $(shell lsb_release -cs) 14 15BUILD_DEPENDS = debhelper devscripts libxml2-utils lintian lsb-release xsltproc 16 17MODULES= 18 19# Ubuntu 17.10 20ifeq ($(CODENAME),artful) 21include Makefile.php 22include Makefile.python27 23include Makefile.python36 24include Makefile.go18 25include Makefile.go19 26endif 27 28# Ubuntu 17.04 29ifeq ($(CODENAME),zesty) 30include Makefile.php 31include Makefile.python27 32include Makefile.python35 33include Makefile.go17 34include Makefile.go18 35endif 36 37# Ubuntu 16.04 38ifeq ($(CODENAME),xenial) 39include Makefile.php 40include Makefile.python27 41include Makefile.python35 42include Makefile.go 43endif 44 45# Ubuntu 14.04 46ifeq ($(CODENAME),trusty) 47include Makefile.php 48include Makefile.python 49endif 50 51# Debian 9 52ifeq ($(CODENAME),stretch) 53include Makefile.php 54include Makefile.python27 55include Makefile.python35 56include Makefile.go17 57include Makefile.go18 58endif 59 60# Debian 8 61ifeq ($(CODENAME),jessie) 62include Makefile.php 63include Makefile.python27 64include Makefile.python34 65endif 66 67CONFIGURE_ARGS=\ 68 --prefix=/usr \ 69 --state=/var/lib/unit \ 70 --control="unix:/var/run/control.unit.sock" \ 71 --pid=/var/run/unit.pid \ 72 --log=/var/log/unit.log \ 73 --tests 74 75export CR=\\n 76 77default: 78 @echo "valid targets: all modules unit $(addprefix unit-, $(MODULES)) clean" 79 80all: check-build-depends unit modules 81 82modules: $(addprefix unit-, $(MODULES)) 83 84check-build-depends: 85 @{ \ 86 not_installed= ; \ 87 for pkg in $(BUILD_DEPENDS); do \ 88 dpkg -s $${pkg} >/dev/null 2>&1 ; \ 89 if [ $$? -ne 0 ]; then \ 90 not_installed="$${not_installed} $${pkg}" ; \ 91 fi ; \ 92 done ; \ 93 if test -n "$${not_installed}" ; then \ 94 echo "" >&2 ; \ 95 echo "The following packages are required in order to proceed:" >&2 ; \ 96 echo "" >&2 ; \ 97 echo $${not_installed} >&2 ; \ 98 echo "" >&2 ; \ 99 exit 1 ; \ 100 fi \ 101 } 102 103debuild/$(SRCDIR)/debian: 104 @{ \ 105 set -e ; \ 106 mkdir -p debuild/$(SRCDIR) ; \ 107 cp -pr debian debuild/$(SRCDIR) ; \ 108 echo '9' > debuild/$(SRCDIR)/debian/compat ; \ 109 mkdir -p debuild/$(SRCDIR)/debian/source ; \ 110 echo '3.0 (quilt)' > debuild/$(SRCDIR)/debian/source/format ; \ 111 cat debian/rules.in | sed \ 112 -e "s#%%CONFIGURE_ARGS%%#$(CONFIGURE_ARGS)#g" \ 113 > debuild/$(SRCDIR)/debian/rules ; \ 114 } 115 116debuild/$(SRCDIR)/debian/changelog: ../../docs/changes.xml | debuild/$(SRCDIR)/debian 117 cd ../../docs && make ../build/unit.deb-changelog 118ifneq ($(DEFAULT_VERSION)$(DEFAULT_RELEASE), $(VERSION)$(RELEASE)) 119 cat ../../build/unit.deb-changelog | sed \ 120 -e "s/unit ($(DEFAULT_VERSION)-$(DEFAULT_RELEASE)~/unit ($(VERSION)-$(RELEASE)~/" \ 121 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 122 > debuild/$(SRCDIR)/debian/changelog 123else 124 cat ../../build/unit.deb-changelog | sed \ 125 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 126 > debuild/$(SRCDIR)/debian/changelog 127endif 128 129debuild/unit_$(VERSION).orig.tar.gz: | debuild/$(SRCDIR)/debian 130 cd ../.. && tar -czf pkg/deb/debuild/$(SRCDIR).tar.gz \ 131 --transform "s#^#$(SRCDIR)/#" \ 132 LICENSE NOTICE CHANGES README configure auto src test 133 mv debuild/$(SRCDIR).tar.gz debuild/unit_$(VERSION).orig.tar.gz 134 cd debuild && tar zxf unit_$(VERSION).orig.tar.gz 135 136unit: debuild/unit_$(VERSION).orig.tar.gz debuild/$(SRCDIR)/debian/changelog 137 @echo "===> Building $@ package" 138 cd debuild/$(SRCDIR) && debuild -us -uc 139 mkdir -p debs 140 find debuild/ -maxdepth 1 -type f -exec cp {} debs/ \; 141 ln -s debuild/$(SRCDIR)/build $@ 142 143debuild-%: debuild/unit_$(VERSION).orig.tar.gz ../../docs/changes.xml 144 mkdir $@ 145 cp debuild/unit_$(VERSION).orig.tar.gz debuild-$*/unit-$(MODULE_SUFFIX_$*)_$(VERSION).orig.tar.gz 146 cd $@ && tar zxf unit-$(MODULE_SUFFIX_$*)_$(VERSION).orig.tar.gz 147 mkdir $@/$(SRCDIR)/debian 148 echo '9' > $@/$(SRCDIR)/debian/compat 149 mkdir $@/$(SRCDIR)/debian/source 150 echo '3.0 (quilt)' > $@/$(SRCDIR)/debian/source/format 151 cd ../../docs && make ../build/unit-$(MODULE_SUFFIX_$*).deb-changelog 152 cat ../../build/unit-$(MODULE_SUFFIX_$*).deb-changelog | sed \ 153 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 154 > $@/$(SRCDIR)/debian/changelog 155 cp debian/copyright debuild-$*/$(SRCDIR)/debian/ 156 @{ \ 157 set -e ; \ 158 for src in $(MODULE_SOURCES_$*); do \ 159 cp debian.module/$${src} $@/$(SRCDIR)/debian/ ; \ 160 done ; \ 161 definitions=`echo "$$MODULE_DEFINITIONS_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 162 prebuild=`echo "$$MODULE_PREBUILD_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 163 preinstall=`echo "$$MODULE_PREINSTALL_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 164 post=`echo "$$MODULE_POST_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \ 165 cat debian.module/$(if $(MODULE_NOARCH_$*),control-noarch.in,control.in) | sed \ 166 -e "s#%%NAME%%#unit-$(MODULE_SUFFIX_$*)#g" \ 167 -e "s#%%SUMMARY%%#$(MODULE_SUMMARY_$*)#g" \ 168 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 169 -e "s#%%UNIT_VERSION%%#$(VERSION)#g" \ 170 -e "s#%%UNIT_RELEASE%%#$(RELEASE)#g" \ 171 -e "s#%%VERSION%%#$(MODULE_VERSION_$*)#g" \ 172 -e "s#%%RELEASE%%#$(MODULE_RELEASE_$*)#g" \ 173 -e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$*)#g" \ 174 -e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$*)#g" \ 175 > $@/$(SRCDIR)/debian/control ; \ 176 cat debian.module/$(if $(MODULE_NOARCH_$*),rules-noarch.in,rules.in) | sed \ 177 -e "s#%%NAME%%#unit-$(MODULE_SUFFIX_$*)#g" \ 178 -e "s#%%CODENAME%%#$(CODENAME)#g" \ 179 -e "s#%%UNIT_VERSION%%#$(VERSION)#g" \ 180 -e "s#%%UNIT_RELEASE%%#$(RELEASE)#g" \ 181 -e "s#%%CONFIGURE_ARGS%%#$(CONFIGURE_ARGS)#g" \ 182 -e "s#%%MODULE_CONFARGS%%#$(MODULE_CONFARGS_$*)#g" \ 183 -e "s#%%MODULE_MAKEARGS%%#$(MODULE_MAKEARGS_$*)#g" \ 184 -e "s#%%MODULE_INSTARGS%%#$(MODULE_INSTARGS_$*)#g" \ 185 -e "s#%%MODULE_DEFINITIONS%%#$${definitions}#g" \ 186 -e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \ 187 -e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \ 188 > $@/$(SRCDIR)/debian/rules ; \ 189 cat debian.module/preinst.in | sed \ 190 -e "s#%%MODULE_POST%%#$$post#g" \ 191 > $@/$(SRCDIR)/debian/preinst ; \ 192 chmod +x $@/$(SRCDIR)/debian/rules ; \ 193 } 194 195unit-%: | debuild-% 196 @echo "===> Building $@ package" 197 cd debuild-$*/$(SRCDIR) && debuild -us -uc 198 mkdir -p debs 199 find debuild-$*/ -maxdepth 1 -type f -exec cp {} debs/ \; 200 ln -s debuild-$*/$(SRCDIR)/build $@ 201 202clean: 203 rm -rf debuild debuild-* debs ../../build 204 find . -maxdepth 1 -type l -delete 205 206.PHONY: default all modules check-build-depends clean 207 208.SECONDARY: 209