USES_LOCAL will allow adding your own USES files that can be used
to add your own features. Primarily it is intended to be used from make.conf
to apply to all or a match subset of ports via ${CURDIR} checking. This is a
replacement for using bsd.port.local.mk as touching that file is problematic
due to it being tracked in the repository and can become quite polluted
depending on level of customization.
One such example of this is a custom hook I am using for work to remove manpages,
symbols and static libraries from plists. They are moved into a separate packaging
mechanism that we already had in place for such files. This broke when I moved
our build to a sandbox poudriere build.
Another example we've done at work is to designate certain ports as being part of
our SDK. If a port is part of the SDK it is installed into a different PREFIX,
with its own MTREE ran before install, and special handling of where some files
are installed such as pkgconfig files so they still go into LOCALBASE.
Having a USES_LOCAL makes it simpler to maintain customizations in the ports tree
without modifying various ports or the framework.
This also allows for "plugins" in Poudriere, which I am still experimenting
with. A plugin would be a collection of hooks and Uses.local files that are
synced into the ports tree before build. My reasoning for this is that I've
been writing hooks to do part of something that is also partially handled by
a checked in Mk/ file. Keeping them in the same location makes maintenance of them
simpler. Example implementation at https://github.com/bdrewery/poudriere-private/compare/release-3.1...plugins?expand=1