1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
#!/usr/bin/make -f
# the equivalent of "uwsgi-core --dot-h | md5sum" at runtime
abi = $(firstword $(shell echo | cat uwsgi.h - | md5sum))
# encode list items for use in long description (see deb-substvars(5) )
substvars-list-encode = perl -0 -F'/\s+/' -ane 'print " * ", join("\$${Newline} * ",@F)'
UWSGI_ENV = CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
UWSGI_BUILDER = python3 uwsgiconfig.py -v
UWSGI_SRCPLUGINS_AVAILABLE := $(sort $(notdir $(wildcard plugins/*)))
# plugins not yet ready for production use
UWSGI_SRCPLUGINS_EXPERIMENTAL = libffi libtcc router_spnego
# plugins irrelevant/unusable for Debian or built separately (by another
# dedicated source package.
UWSGI_SRCPLUGINS_ALIEN = airbrake alarm_speech matheval mongodb \
stackless emperor_mongodb gridfs mongodblog mono php \
stats_pusher_mongodb v8 gccgo jvm ring servlet jwsgi \
glusterfs rados rack fiber rbthreads lua \
python tornado asyncio greenlet gevent psgi coroae \
pypy
UWSGI_SRCPLUGINS_DEMO = cplusplus dumbloop dummy example exception_log
UWSGI_SRCPLUGINS_UNKNOWN = legion_cache_fetch objc_gc pyuwsgi ruby19
UWSGI_SRCPLUGINS_EXCLUDE = $(UWSGI_SRCPLUGINS_ALIEN) \
$(UWSGI_SRCPLUGINS_DEMO) $(UWSGI_SRCPLUGINS_EXPERIMENTAL) \
$(UWSGI_SRCPLUGINS_UNKNOWN)
UWSGI_SRCPLUGINS_WANTED = $(filter-out $(UWSGI_SRCPLUGINS_EXCLUDE),\
$(UWSGI_SRCPLUGINS_AVAILABLE))
UWSGI_SRCPLUGINS_ADDON = alarm_curl alarm_xmpp curl_cron \
emperor_pg geoip graylog2 ldap \
router_access sqlite3 xslt
# tun/tap is unavailable on the Hurd
# systemd is available only on linux
# tuntap plugin broken on kFreeBSD: https://github.com/unbit/uwsgi/issues/695
UWSGI_SRCPLUGINS_SKIP = \
$(if $(filter hurd,$(DEB_HOST_ARCH_OS)),\
tuntap) \
$(if $(filter kfreebsd,$(DEB_HOST_ARCH_OS)),\
tuntap) \
$(if $(filter-out linux,$(DEB_HOST_ARCH_OS)),\
systemd_logger)
UWSGI_SRCPLUGINS_CORE = $(filter-out \
$(UWSGI_SRCPLUGINS_ADDON) \
$(UWSGI_SRCPLUGINS_SKIP),\
$(UWSGI_SRCPLUGINS_WANTED))
# generate documentation unless nodoc requested
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
MANPAGES = $(patsubst %,debian/uwsgi_%.1,$(UWSGI_SRCPLUGINS_ADDON)) \
debian/uwsgi-core.1 \
debian/debhelper/dh_uwsgi.1
endif
%:
dh $@ --buildsystem=none
bin/uwsgi-%: debian/buildconf/uwsgi-%.ini
$(UWSGI_ENV) $(UWSGI_BUILDER) --build $<
bin/uwsgi_%:
ln -sf uwsgi-core bin/uwsgi_$*
%_plugin.so:
$(UWSGI_ENV) $(UWSGI_BUILDER) \
--plugin plugins/`basename $*` \
debian/buildconf/uwsgi-plugin.ini
if [ `dirname $@` != "." ]; then \
mkdir -p `dirname $@` && mv `basename $@` $@; \
fi
debian/%.1: bin/%
help2man \
--name 'fast (pure C), self-healing, developer-friendly WSGI server' \
--section 1 \
--no-info \
$< > $@
debian/debhelper/%.1: debian/debhelper/%
pod2man $< > $@
override_dh_auto_build-arch: \
bin/uwsgi-core \
$(addsuffix _plugin.so,\
$(addprefix build/plugins-core/,$(UWSGI_SRCPLUGINS_CORE)) \
$(UWSGI_SRCPLUGINS_ADDON))
execute_after_dh_auto_build-arch: $(MANPAGES)
override_dh_auto_test:
find debian \
-type f -not -empty -regextype egrep \
-regex '.*(postinst|prerm|rtupdate|init\.d).*' \
-exec shellcheck -e SC1090,SC1091,SC2034,SC2043 -s sh {} +
shellcheck -e SC1091,SC2001,SC2034,SC2162 -s bash debian/uwsgi-files/init/*
override_dh_auto_clean:
$(UWSGI_BUILDER) --clean
execute_after_dh_auto_clean:
find -type f -name '*.pyc' -delete
find -type d -name __pycache__ -delete
override_dh_install:
dh_install -p uwsgi-src -X.key -X.dll -X.gitignore
dh_install --remaining-packages
override_dh_installdocs:
dh_installdocs --all README CONTRIBUTORS
# move installed examples into subdirs by type
ex_types = conffile psgi rack router wsapi wsgi
ex_conffile = mega.xml multi.* sites.xml uwsgi.xml vassals werkzeug_strict.yml werkzeug.*
ex_rack = config.ru config2.ru fibers.*
ex_router = router.lua uwsgirouter*
ex_psgi = mojoapp.pl
ex_wsapi = *.ws
ex_wsgi = mjpeg_stream.py multiapp.py simple_app.py simple_app_wsgi2.py taskqueue.py
ex_drop = bootstrap* config*.lua config??.ru corostream.pl debug.ini
ex_drop += flaskpost.py heavytest.* info_uwsgi.php logic.ini
ex_drop += protected.ini welcome.ini welcome3.py
execute_after_dh_installexamples-arch:
set -e; \
cd debian/uwsgi-core/usr/share/doc/uwsgi-core/examples; \
$(foreach type, $(ex_types),mkdir $(type); mv -t $(type) $(ex_$(type));) \
rm $(ex_drop)
override_dh_compress:
dh_compress -p uwsgi-core \
$(addprefix -X,.ini .lua .pl .png .psgi .py .ru .ws .xml .yml)
dh_compress -p uwsgi-extra \
$(addprefix -X,.class .java .rb .c)
dh_compress --remaining-packages
override_dh_strip:
dh_strip --dbgsym-migration='uwsgi-dbg (<< 2.0.26-3~)'
override_dh_gencontrol:
dh_gencontrol -p uwsgi-core -- \
-V'uwsgi:Provides=uwsgi-abi-$(abi)' \
-V'uwsgi:corepluginlist=$(shell \
echo $(UWSGI_SRCPLUGINS_CORE) | $(substvars-list-encode))'
dh_gencontrol --remaining-packages
|