uwsgi: add modular package superseeding uwsgi-cgi
authorPeter Stadler <redacted>
Wed, 28 Aug 2019 07:41:59 +0000 (09:41 +0200)
committerPeter Stadler <redacted>
Wed, 1 Jan 2020 17:28:01 +0000 (18:28 +0100)
Provide the minimal applications and plugins for: cgi, filelog, syslog and
python3. More plugins can be added if needed by other packages. Autostart
uwsgi in emperor mode loading vassals on demand.

For now, include luci-support (maybe it will be moved to another package),
which uses the syslog plugin by default.

Signed-off-by: Peter Stadler <redacted>
14 files changed:
net/uwsgi-cgi/Makefile [deleted file]
net/uwsgi-cgi/patches/001-remove-unused-deps.patch [deleted file]
net/uwsgi/Makefile [new file with mode: 0644]
net/uwsgi/files-luci-support/luci-cgi_io.ini [moved from net/uwsgi-cgi/files-luci-support/luci-cgi_io.ini with 56% similarity]
net/uwsgi/files-luci-support/luci-webui.ini [moved from net/uwsgi-cgi/files-luci-support/luci-webui.ini with 58% similarity]
net/uwsgi/files/emperor.ini [moved from net/uwsgi-cgi/files/emperor.ini with 67% similarity]
net/uwsgi/files/uwsgi.init [moved from net/uwsgi-cgi/files/uwsgi.init with 90% similarity]
net/uwsgi/patches/001-dont-hardcode-zlib.patch [moved from net/uwsgi-cgi/patches/002-dont-hardcode-zlib.patch with 100% similarity]
net/uwsgi/patches/002-dont-override-toolchain-optimization.patch [moved from net/uwsgi-cgi/patches/003-dont-override-toolchain-optimization.patch with 100% similarity]
net/uwsgi/patches/003-hard-code-Linux-as-compilation-os.patch [moved from net/uwsgi-cgi/patches/004-hard-code-Linux-as-compilation-os.patch with 85% similarity]
net/uwsgi/patches/010-uclibc-ng.patch [moved from net/uwsgi-cgi/patches/010-uclibc-ng.patch with 100% similarity]
net/uwsgi/patches/020-uwsgiconfig-system-python3.patch [moved from net/uwsgi-cgi/patches/020-uwsgiconfig-system-python3.patch with 100% similarity]
net/uwsgi/patches/030-plugins-cgi_adds_dontresolve_option.patch [moved from net/uwsgi-cgi/patches/030-plugins-cgi_adds_dontresolve_option.patch with 100% similarity]
net/uwsgi/src/buildconf/openwrt.ini [new file with mode: 0644]

diff --git a/net/uwsgi-cgi/Makefile b/net/uwsgi-cgi/Makefile
deleted file mode 100644 (file)
index 3df4c5b..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=uwsgi-cgi
-PKG_VERSION:=2.0.18
-PKG_RELEASE:=4
-
-PKG_SOURCE_URL= \
-       https://projects.unbit.it/downloads \
-       https://codeload.github.com/unbit/uwsgi/tar.gz/$(PKG_VERSION)?
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=4972ac538800fb2d421027f49b4a1869b66048839507ccf0aa2fda792d99f583
-PKG_BUILD_DIR:=$(BUILD_DIR)/uwsgi-$(PKG_VERSION)
-
-PKG_LICENSE:=GPL-2.0-or-later
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
-
-PKG_BUILD_DEPENDS:=python3/host
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/uwsgi-cgi
-  SECTION:=net
-  CATEGORY:=Network
-  SUBMENU:=Web Servers/Proxies
-  TITLE:=The uWSGI server
-  URL:=https://projects.unbit.it/uwsgi
-  DEPENDS:=+libcap +jansson +libuuid
-endef
-
-define Package/uwsgi-cgi-luci-support
-  SECTION:=net
-  CATEGORY:=Network
-  SUBMENU:=Web Servers/Proxies
-  TITLE:=Support files for LuCI on Nginx
-  DEPENDS:=+uwsgi-cgi
-endef
-
-define Package/uwsgi-cgi/description
-       The uWSGI project build with cgi profile
-endef
-
-MAKE_VARS+=\
-       CPP=$(TARGET_CROSS)cpp \
-       PYTHON=$(STAGING_DIR_HOSTPKG)/bin/python3
-
-define Build/Compile
-       $(call Build/Compile/Default,PROFILE=cgi)
-endef
-
-define Package/uwsgi-cgi/install
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/uwsgi $(1)/usr/sbin/
-
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/uwsgi.init $(1)/etc/init.d/uwsgi
-       
-       $(INSTALL_DIR) $(1)/etc/uwsgi
-       $(INSTALL_DATA) ./files/emperor.ini $(1)/etc/uwsgi/emperor.ini
-
-       $(INSTALL_DIR) $(1)/etc/uwsgi/vassals
-endef
-
-define Package/uwsgi-cgi-luci-support/install
-       $(INSTALL_DIR) $(1)/etc/uwsgi/vassals
-       $(INSTALL_DATA) ./files-luci-support/luci-webui.ini $(1)/etc/uwsgi/vassals/luci-webui.ini
-       $(INSTALL_DATA) ./files-luci-support/luci-cgi_io.ini $(1)/etc/uwsgi/vassals/luci-cgi_io.ini
-endef
-
-$(eval $(call BuildPackage,uwsgi-cgi))
-$(eval $(call BuildPackage,uwsgi-cgi-luci-support))
diff --git a/net/uwsgi-cgi/patches/001-remove-unused-deps.patch b/net/uwsgi-cgi/patches/001-remove-unused-deps.patch
deleted file mode 100644 (file)
index 2b058c3..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/buildconf/base.ini
-+++ b/buildconf/base.ini
-@@ -1,9 +1,9 @@
- [uwsgi]
--xml = auto
--yaml = true
--json = auto
--ssl = auto
--pcre = auto
-+xml = false
-+yaml = embedded
-+json = jansson
-+ssl = false
-+pcre = false
- routing = auto
- debug = false
- unbit = false
diff --git a/net/uwsgi/Makefile b/net/uwsgi/Makefile
new file mode 100644 (file)
index 0000000..f34ba6a
--- /dev/null
@@ -0,0 +1,168 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uwsgi
+PKG_VERSION:=2.0.18
+PKG_RELEASE:=1
+
+PKG_SOURCE:=uwsgi-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL=https://files.pythonhosted.org/packages/source/u/uwsgi/
+PKG_HASH:=4972ac538800fb2d421027f49b4a1869b66048839507ccf0aa2fda792d99f583
+PKG_BUILD_DIR:=$(BUILD_DIR)/uwsgi-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python3/host
+
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/python/python3-package.mk
+#for LINUX_UNAME_VERSION:
+include $(INCLUDE_DIR)/kernel.mk
+
+define Package/uwsgi
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=The uWSGI server
+  URL:=https://uwsgi-docs.readthedocs.io/en/latest/
+  DEPENDS:=+libpcre +libcap +libuuid
+  MENU:=1
+endef
+
+define Package/uwsgi-logfile-plugin
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=The Logfile plugin for the uWSGI server
+  DEPENDS:=uwsgi
+  MDEPENDS:=uwsgi
+endef
+
+define Package/uwsgi-syslog-plugin
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=The Syslog plugin for the uWSGI server
+  DEPENDS:=uwsgi
+  MDEPENDS:=uwsgi
+endef
+
+define Package/uwsgi-cgi-plugin
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=The CGI plugin for the uWSGI server
+  DEPENDS:=uwsgi
+  MDEPENDS:=uwsgi
+endef
+
+define Package/uwsgi-python3-plugin
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=The Python3 plugin for the uWSGI server
+  DEPENDS:=uwsgi +python3-light
+  MDEPENDS:=uwsgi
+endef
+
+define Package/uwsgi-luci-support
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=Support files for LuCI on Nginx
+  DEPENDS:=uwsgi +uwsgi-syslog-plugin +uwsgi-cgi-plugin
+  MDEPENDS:=uwsgi
+endef
+
+define Package/uwsgi/description
+       The uWSGI project (to be used together with nginx or nginx-ssl).
+endef
+
+define Package/uwsgi-logfile-plugin/description
+       The Logfile plugin for the uWSGI project.
+endef
+
+define Package/uwsgi-syslog-plugin/description
+       The Syslog plugin for the uWSGI project.
+endef
+
+define Package/uwsgi-cgi-plugin/description
+       The CGI plugin for the uWSGI project.
+endef
+
+define Package/uwsgi-python3-plugin/description
+       The Python3 plugin for the uWSGI project.
+endef
+
+define Package/uwsgi-luci-support/description
+       Support files for LuCI on Nginx
+endef
+
+MAKE_VARS+=\
+       CPP=$(TARGET_CROSS)cpp \
+       PYTHON=$(STAGING_DIR_HOSTPKG)/bin/python3 \
+       LINUX_UNAME_VERSION=$(LINUX_UNAME_VERSION)
+
+define Build/Compile
+       $(call Build/Compile/Default,PROFILE=openwrt)
+       $(call Build/Compile/Default,plugin.logfile PROFILE=openwrt)
+       $(call Build/Compile/Default,plugin.syslog PROFILE=openwrt)
+       $(call Build/Compile/Default,plugin.cgi PROFILE=openwrt)
+       $(call Build/Compile/HostPy3RunTarget, \
+               cd $(PKG_BUILD_DIR), \
+               uwsgiconfig.py --plugin plugins/python openwrt, \
+               CPP="$(TARGET_CROSS)cpp" \
+               LINUX_UNAME_VERSION=$(LINUX_UNAME_VERSION) \
+               CFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON3_INC_DIR) $(TARGET_CFLAGS)" \
+       )
+endef
+
+define Package/uwsgi/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/uwsgi $(1)/usr/sbin/
+
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/uwsgi.init $(1)/etc/init.d/uwsgi
+
+       $(INSTALL_DIR) $(1)/etc/uwsgi
+       $(INSTALL_CONF) ./files/emperor.ini $(1)/etc/uwsgi/emperor.ini
+
+       $(INSTALL_DIR) $(1)/etc/uwsgi/vassals
+endef
+
+define Package/uwsgi/conffiles
+/etc/uwsgi/emperor.ini
+endef
+
+define Package/uwsgi-logfile-plugin/install
+       $(INSTALL_DIR) $(1)/usr/lib/uwsgi
+       $(CP) $(PKG_BUILD_DIR)/logfile_plugin.so $(1)/usr/lib/uwsgi/
+endef
+
+define Package/uwsgi-syslog-plugin/install
+       $(INSTALL_DIR) $(1)/usr/lib/uwsgi
+       $(CP) $(PKG_BUILD_DIR)/syslog_plugin.so $(1)/usr/lib/uwsgi/
+endef
+
+define Package/uwsgi-cgi-plugin/install
+       $(INSTALL_DIR) $(1)/usr/lib/uwsgi
+       $(CP) $(PKG_BUILD_DIR)/cgi_plugin.so $(1)/usr/lib/uwsgi/
+endef
+
+define Package/uwsgi-python3-plugin/install
+       $(INSTALL_DIR) $(1)/usr/lib/uwsgi
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/python_plugin.so $(1)/usr/lib/uwsgi/
+endef
+
+define Package/uwsgi-luci-support/install
+       $(INSTALL_DIR) $(1)/etc/uwsgi/vassals
+       $(INSTALL_DATA) ./files-luci-support/luci-webui.ini $(1)/etc/uwsgi/vassals/luci-webui.ini
+       $(INSTALL_DATA) ./files-luci-support/luci-cgi_io.ini $(1)/etc/uwsgi/vassals/luci-cgi_io.ini
+endef
+
+$(eval $(call BuildPackage,uwsgi))
+$(eval $(call BuildPackage,uwsgi-logfile-plugin))
+$(eval $(call BuildPackage,uwsgi-syslog-plugin))
+$(eval $(call BuildPackage,uwsgi-cgi-plugin))
+$(eval $(call BuildPackage,uwsgi-python3-plugin))
+$(eval $(call BuildPackage,uwsgi-luci-support))
similarity index 56%
rename from net/uwsgi-cgi/files-luci-support/luci-cgi_io.ini
rename to net/uwsgi/files-luci-support/luci-cgi_io.ini
index af95d67d201d7f39675577e3e88594ff479d309a..da5ef76041c11e99b24b2c722aa25d6793c069e8 100644 (file)
@@ -1,7 +1,14 @@
 [uwsgi]
 strict = true
+if-not-env = UWSGI_EMPEROR_FD
+socket = /var/run/luci-cgi_io.socket
+chmod-socket = 666
+cheap = true
+end-if =
+plugin = cgi
 cgi-mode = true
 cgi = /www/
+chdir = /usr/lib/lua/luci/
 buffer-size = 10000
 reload-mercy = 8
 max-requests = 2000
@@ -12,11 +19,13 @@ no-orphans = true
 post-buffering = 8192
 socket-timeout = 120
 thunder-lock = true
-#logger = syslog:uwsgi-luci-cgi_io
+plugin = syslog
 disable-logging = true
+req-logger = syslog:uwsgi-luci-cgi_io
+log-format=%(method) %(uri) => return %(status) (%(rsize) bytes in %(msecs) ms)
 chmod-socket = 666
 cgi-safe = /usr/libexec/cgi-io
 cgi-dontresolve = true
 cgi-close-stdin-on-eof = true
 cheap = true
-idle = 360
\ No newline at end of file
+idle = 360
similarity index 58%
rename from net/uwsgi-cgi/files-luci-support/luci-webui.ini
rename to net/uwsgi/files-luci-support/luci-webui.ini
index 5371a108144256d536ec6b3172f7f81a27827850..04abfc82d678edb0f87ceb9e7fb11589a5f18835 100644 (file)
@@ -1,5 +1,11 @@
 [uwsgi]
 strict = true
+if-not-env = UWSGI_EMPEROR_FD
+socket = /var/run/luci-webui.socket
+chmod-socket = 666
+cheap = true
+end-if =
+plugin = cgi
 cgi-mode = true
 cgi = /www/
 chdir = /usr/lib/lua/luci/
@@ -13,16 +19,17 @@ enable-threads = true
 post-buffering = 8192
 socket-timeout = 120
 thunder-lock = true
-#logger = syslog:uwsgi-luci
+plugin = syslog
+logger = luci syslog:uwsgi-luci
+log-route = luci luci:
 disable-logging = true
-log-format = %(addr) %(method) %(uri) => generated %(rsize) bytes in %(msecs) msecs
+req-logger = syslog:uwsgi-luci
+log-format=%(method) %(uri) => return %(status) (%(rsize) bytes in %(msecs) ms)
 threads = 3
 processes = 3
-chmod-socket = 666
-cheap = true
 cheaper-algo = spare
 cheaper = 1
-cheaper-initial = 2
+cheaper-initial = 1
 cheaper-step = 1
 master = true
-idle = 360
\ No newline at end of file
+idle = 360
similarity index 67%
rename from net/uwsgi-cgi/files/emperor.ini
rename to net/uwsgi/files/emperor.ini
index 5baa11bf24e16c7900673a2a7e99fb79f2f8f87d..9c245af1d91f2aaceb7f0d867cd52cec44429cca 100644 (file)
@@ -1,10 +1,9 @@
 [uwsgi]
 strict = true
-pidfile        = /var/run/uwsgi.pid
+pidfile = /var/run/uwsgi.pid
 emperor = /etc/uwsgi/vassals/*.ini
-logger = syslog:uwsgi-emperor
+early-emperor = true
 vacuum = true
 emperor-on-demand-directory = /var/run/
 emperor-required-heartbeat = 99
 vassal-set = die-on-idle=true
-#disable-logging = true
\ No newline at end of file
similarity index 90%
rename from net/uwsgi-cgi/files/uwsgi.init
rename to net/uwsgi/files/uwsgi.init
index 98f2c839ccf723c25b7fdd38b38031e4a2879b51..20a1280e58210b50a869a735e0b4b0870cccabd4 100644 (file)
@@ -6,6 +6,7 @@ USE_PROCD=1
 start_service() {
        procd_open_instance
        procd_set_param command /usr/sbin/uwsgi --ini /etc/uwsgi/emperor.ini
+       procd_set_param stderr 1
        procd_set_param file /etc/uwsgi/emperor.ini
        procd_set_param respawn
        procd_close_instance
similarity index 85%
rename from net/uwsgi-cgi/patches/004-hard-code-Linux-as-compilation-os.patch
rename to net/uwsgi/patches/003-hard-code-Linux-as-compilation-os.patch
index 0459ed034890d762179d1ec99e91f7e682f8c91c..169a309f8f74409f426ca878c7f20664f9985c3c 100644 (file)
@@ -8,7 +8,7 @@
 -uwsgi_os_k = re.split('[-+_]', os.uname()[2])[0]
 -uwsgi_os_v = os.uname()[3]
 +uwsgi_os = "Linux"
-+uwsgi_os_k = "4.4.0"
++uwsgi_os_k = os.environ['LINUX_UNAME_VERSION']
 +uwsgi_os_v = "Linux"
  uwsgi_cpu = os.uname()[4]
  
diff --git a/net/uwsgi/src/buildconf/openwrt.ini b/net/uwsgi/src/buildconf/openwrt.ini
new file mode 100644 (file)
index 0000000..f9ea834
--- /dev/null
@@ -0,0 +1,30 @@
+[uwsgi]
+xml = false
+yaml = false
+json = false
+ssl = false
+pcre = true
+routing = auto
+debug = false
+unbit = false
+malloc_implementation = libc
+extras =
+plugins =
+bin_name = uwsgi
+append_version =
+plugin_dir = /usr/lib/uwsgi
+plugin_build_dir = .
+embedded_plugins =
+as_shared_library = false
+
+locking = auto
+event = auto
+timer = auto
+filemonitor = auto
+
+blacklist =
+whitelist =
+
+embed_files =
+
+embed_config =
git clone https://git.99rst.org/PROJECT