[Bug 269172] www/uwsgi: refactor to bui ld a “server core” and plugins as loadabl e modules

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 26 Jan 2023 19:03:32 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269172

            Bug ID: 269172
           Summary: www/uwsgi: refactor to build a “server core” and
                    plugins as loadable modules
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: Individual Port(s)
          Assignee: amdmi3@FreeBSD.org
          Reporter: yds@Necessitu.de
             Flags: maintainer-feedback?(amdmi3@FreeBSD.org)
          Assignee: amdmi3@FreeBSD.org

Created attachment 239727
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=239727&action=edit
refactor www uwsgi to build a server core and plugins patch

this patch refactors the port to follow a “Modular builds” approach recommended
for distributions and “commercial service over uWSGI”:
https://uWSGI-Docs.ReadTheDocs.io/en/latest/Install.html#modular-builds

This will build a uWSGi “server core” binary without any embedded plugins. Then
builds the python plugin along with all the plugins in the WRKSRC/plugins/
directory which do not require a dependency on an external port. this includes
all the plugins embedded into the monolithic binary by the previous [default]
build method and many more.

new pkg-plist file added to the port. for future port maintenance to add or
remove plugins built by the master port simply add or delete the apropos plugin
entry in the pkg-plist file.

the PSGI and Core::AnyEvent plugins are broken out into child plugin ports
which in turn pull in the requisite dependencies.  This way the main port does
not need to have optional dependencies for these plugins.

a baker's dozen of new plugin ports created, if a plugin needs to pull in a
extra *_DEPENDS not already DEPENDed by the CORE then the plugin gets a
separate child port.

the new www/uwsgi-lua child port has `FLAVORS= lua luajit openresty`, only one
FLAVOR can be installed at a time. FLAVORS allow for building all three as
binary pkgs for the end user to chose which one to install. each FLAVOR gets an
apropos SUFFIX.

this whole refactor follows the idea of having a predictable set of binary pkgs
where an end user who only uses pre-built binary pkgs could be sure to have all
the same functionality available as when installing the ports from src.

care has been taken to not violate POLA, the only breaking change is each
plugin used now MUST be loaded via the `plugin` option in the config files.
e.g.:

    plugin = python,html

-- 
You are receiving this mail because:
You are the assignee for the bug.