Files
nginx-unit/pkg/deb/Makefile
Alexander Borisov 608e09e9de Improvement and unification of version processing in build scripts.
This also eliminates expressions that incompatible with BSD make, thus fixing
installation of Node.js module on FreeBSD (broken by dace60fc4926).
2019-02-22 16:31:44 +03:00

278 lines
8.6 KiB
Makefile

#!/usr/bin/make
include ../../version
DEFAULT_RELEASE := 1
VERSION ?= $(NXT_VERSION)
RELEASE ?= $(DEFAULT_RELEASE)
SRCDIR= unit-$(VERSION)
CODENAME = $(shell lsb_release -cs)
BUILD_DEPENDS_unit = build-essential debhelper devscripts fakeroot libxml2-utils lintian lsb-release xsltproc libssl-dev
BUILD_DEPENDS = $(BUILD_DEPENDS_unit)
MODULES=
# Ubuntu 18.10
ifeq ($(CODENAME),cosmic)
include Makefile.php
include Makefile.python27
include Makefile.python36
include Makefile.python37
include Makefile.go19
include Makefile.go110
include Makefile.perl
include Makefile.ruby
endif
# Ubuntu 18.04
ifeq ($(CODENAME),bionic)
include Makefile.php
include Makefile.python27
include Makefile.python36
include Makefile.go19
include Makefile.go110
include Makefile.perl
include Makefile.ruby
endif
# Ubuntu 17.10
ifeq ($(CODENAME),artful)
include Makefile.php
include Makefile.python27
include Makefile.python36
include Makefile.go18
include Makefile.go19
include Makefile.perl
include Makefile.ruby
endif
# Ubuntu 17.04
ifeq ($(CODENAME),zesty)
include Makefile.php
include Makefile.python27
include Makefile.python35
include Makefile.go17
include Makefile.go18
include Makefile.perl
include Makefile.ruby
endif
# Ubuntu 16.04
ifeq ($(CODENAME),xenial)
include Makefile.php
include Makefile.python27
include Makefile.python35
include Makefile.go
include Makefile.perl
include Makefile.ruby
endif
# Ubuntu 14.04
ifeq ($(CODENAME),trusty)
include Makefile.php
include Makefile.python
include Makefile.perl
endif
# Debian 9
ifeq ($(CODENAME),stretch)
include Makefile.php
include Makefile.python27
include Makefile.python35
include Makefile.go17
include Makefile.go18
include Makefile.perl
include Makefile.ruby
endif
# Debian 8
ifeq ($(CODENAME),jessie)
include Makefile.php
include Makefile.python27
include Makefile.python34
include Makefile.perl
include Makefile.ruby
endif
CONFIGURE_ARGS=\
--prefix=/usr \
--state=/var/lib/unit \
--control="unix:/var/run/control.unit.sock" \
--pid=/var/run/unit.pid \
--log=/var/log/unit.log \
--tests \
--openssl
export CR=\\n
default:
@echo "valid targets: all modules unit $(addprefix unit-, $(MODULES)) test test-debug clean"
all: check-build-depends-all unit modules
modules: $(addprefix unit-, $(MODULES))
check-build-depends-%:
@{ \
case "$*" in \
all) pkgs="$(BUILD_DEPENDS)" ;; \
unit) pkgs="$(BUILD_DEPENDS_unit)" ;; \
*) pkgs="$(BUILD_DEPENDS_unit) $(BUILD_DEPENDS_$*)" ;; \
esac ; \
not_installed= ; \
for pkg in $${pkgs}; do \
dpkg -s $${pkg} >/dev/null 2>&1 ; \
if [ $$? -ne 0 ]; then \
not_installed="$${not_installed} $${pkg}" ; \
fi ; \
done ; \
if test -n "$${not_installed}" ; then \
echo "" >&2 ; \
echo "The following packages are required in order to proceed:" >&2 ; \
echo "" >&2 ; \
echo $${not_installed} >&2 ; \
echo "" >&2 ; \
exit 1 ; \
fi \
}
touch $@
debuild/$(SRCDIR)/debian:
@{ \
set -e ; \
mkdir -p debuild/$(SRCDIR) ; \
cp -pr debian debuild/$(SRCDIR) ; \
echo '9' > debuild/$(SRCDIR)/debian/compat ; \
mkdir -p debuild/$(SRCDIR)/debian/source ; \
echo '3.0 (quilt)' > debuild/$(SRCDIR)/debian/source/format ; \
cat debian/rules.in | sed \
-e "s#%%CONFIGURE_ARGS%%#$(CONFIGURE_ARGS)#g" \
> debuild/$(SRCDIR)/debian/rules ; \
}
debuild/$(SRCDIR)/debian/changelog: ../../docs/changes.xml | debuild/$(SRCDIR)/debian
cd ../../docs && make ../build/unit.deb-changelog
ifneq ($(DEFAULT_VERSION)$(DEFAULT_RELEASE), $(VERSION)$(RELEASE))
cat ../../build/unit.deb-changelog | sed \
-e "s/unit ($(DEFAULT_VERSION)-$(DEFAULT_RELEASE)~/unit ($(VERSION)-$(RELEASE)~/" \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
> debuild/$(SRCDIR)/debian/changelog
else
cat ../../build/unit.deb-changelog | sed \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
> debuild/$(SRCDIR)/debian/changelog
endif
debuild/unit_$(VERSION).orig.tar.gz: | debuild/$(SRCDIR)/debian
cd ../.. && tar -czf pkg/deb/debuild/$(SRCDIR).tar.gz \
--transform "s#^#$(SRCDIR)/#" \
LICENSE NOTICE CHANGES README configure auto src test
mv debuild/$(SRCDIR).tar.gz debuild/unit_$(VERSION).orig.tar.gz
cd debuild && tar zxf unit_$(VERSION).orig.tar.gz
unit: check-build-depends-unit debuild/unit_$(VERSION).orig.tar.gz debuild/$(SRCDIR)/debian/changelog
@echo "===> Building $@ package"
cd debuild/$(SRCDIR) && debuild -us -uc
mkdir -p debs
find debuild/ -maxdepth 1 -type f -exec cp {} debs/ \;
ln -s debuild/$(SRCDIR)/build $@
debuild-%: debuild/unit_$(VERSION).orig.tar.gz ../../docs/changes.xml
mkdir $@
cp debuild/unit_$(VERSION).orig.tar.gz debuild-$*/unit-$(MODULE_SUFFIX_$*)_$(VERSION).orig.tar.gz
cd $@ && tar zxf unit-$(MODULE_SUFFIX_$*)_$(VERSION).orig.tar.gz
mkdir $@/$(SRCDIR)/debian
echo '9' > $@/$(SRCDIR)/debian/compat
mkdir $@/$(SRCDIR)/debian/source
echo '3.0 (quilt)' > $@/$(SRCDIR)/debian/source/format
cd ../../docs && make ../build/unit-$(MODULE_SUFFIX_$*).deb-changelog
ifneq ($(DEFAULT_VERSION)$(DEFAULT_RELEASE), $(VERSION)$(RELEASE))
cat ../../build/unit-$(MODULE_SUFFIX_$*).deb-changelog | sed \
-e "s/unit-$* ($(DEFAULT_VERSION)-$(DEFAULT_RELEASE)~/unit-$* ($(VERSION)-$(RELEASE)~/" \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
> $@/$(SRCDIR)/debian/changelog
else
cat ../../build/unit-$(MODULE_SUFFIX_$*).deb-changelog | sed \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
> $@/$(SRCDIR)/debian/changelog
endif
cp debian/copyright debuild-$*/$(SRCDIR)/debian/
@{ \
set -e ; \
for src in $(MODULE_SOURCES_$*); do \
cp debian.module/$${src} $@/$(SRCDIR)/debian/ ; \
done ; \
definitions=`echo "$$MODULE_DEFINITIONS_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
prebuild=`echo "$$MODULE_PREBUILD_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
preinstall=`echo "$$MODULE_PREINSTALL_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
post=`echo "$$MODULE_POST_$*" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
cat debian.module/control.in | sed \
-e "s#%%NAME%%#unit-$(MODULE_SUFFIX_$*)#g" \
-e "s#%%SUMMARY%%#$(MODULE_SUMMARY_$*)#g" \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
-e "s#%%UNIT_VERSION%%#$(VERSION)#g" \
-e "s#%%UNIT_RELEASE%%#$(RELEASE)#g" \
-e "s#%%VERSION%%#$(MODULE_VERSION_$*)#g" \
-e "s#%%RELEASE%%#$(MODULE_RELEASE_$*)#g" \
-e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$*)#g" \
-e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$*)#g" \
> $@/$(SRCDIR)/debian/control ; \
cat debian.module/rules.in | sed \
-e "s#%%NAME%%#unit-$(MODULE_SUFFIX_$*)#g" \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
-e "s#%%UNIT_VERSION%%#$(VERSION)#g" \
-e "s#%%UNIT_RELEASE%%#$(RELEASE)#g" \
-e "s#%%CONFIGURE_ARGS%%#$(CONFIGURE_ARGS)#g" \
-e "s#%%MODULE_CONFARGS%%#$(MODULE_CONFARGS_$*)#g" \
-e "s#%%MODULE_MAKEARGS%%#$(MODULE_MAKEARGS_$*)#g" \
-e "s#%%MODULE_INSTARGS%%#$(MODULE_INSTARGS_$*)#g" \
-e "s#%%MODULE_DEFINITIONS%%#$${definitions}#g" \
-e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \
-e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \
> $@/$(SRCDIR)/debian/rules ; \
cat debian.module/preinst.in | sed \
-e "s#%%MODULE_POST%%#$$post#g" \
> $@/$(SRCDIR)/debian/preinst ; \
chmod +x $@/$(SRCDIR)/debian/rules ; \
}
unit-%: check-build-depends-% | debuild-%
@echo "===> Building $@ package"
cd debuild-$*/$(SRCDIR) && debuild -us -uc
mkdir -p debs
find debuild-$*/ -maxdepth 1 -type f -exec cp {} debs/ \;
ln -s debuild-$*/$(SRCDIR)/build $@
test: unit modules
@{ \
for so in `find debuild-*/unit-$(VERSION)/debian/build-unit/ -type f -name "*.so"` ; do \
soname=`basename $${so}` ; \
test -h debuild/unit-$(VERSION)/debian/build-unit/build/$${soname} || \
ln -fs `pwd`/$${so} debuild/unit-$(VERSION)/debian/build-unit/build/$${soname} ; \
done ; \
( cd debuild/unit-$(VERSION)/debian/build-unit && ./test/run.py ) ; \
}
test-debug: unit modules
@{ \
for so in `find debuild-*/unit-$(VERSION)/debian/build-unit-debug/ -type f -name "*.so"` ; do \
soname=`basename $${so}` ; \
test -h debuild/unit-$(VERSION)/debian/build-unit-debug/build/$${soname} || \
ln -fs `pwd`/$${so} debuild/unit-$(VERSION)/debian/build-unit-debug/build/$${soname} ; \
done ; \
( cd debuild/unit-$(VERSION)/debian/build-unit-debug && ./test/run.py ) ; \
}
clean:
rm -rf debuild debuild-* debs ../../build
rm -f check-build-depends-*
find . -maxdepth 1 -type l -delete
.PHONY: default all modules test test-debug clean
.SECONDARY: $(addprefix check-build-depends-, $(MODULES)) $(addprefix debuild-, $(MODULES))