On Mon, Jul 11, 2022 at 01:12:23PM +0100, Stuart Henderson wrote:
> On 2022/07/11 11:33, Klemens Nanni wrote:
> > Here's something I currently do to ports-framework changes I need on the
> > machine I work on from actual port changes that ought to be committed.
> >
> > The way it works is that I just fill
> > /usr/ports/category/port/site-local-config.mk with someting like
> >
> > USE_CCACHE = Yes
> > or
> > DEBUG_PACKAGES = # empty, machine too slow/not enough space
> >
> > so I can easily carry required changes without mixing them up in
> > Makefile with other changes.
> >
> > If the file does not exist nothing happens.
> > If if exists it is sourced after Makefile (obviously) but any
> > bsd.port.mk logic uses variables, thus site-local-config.mk is free to
> > change every aspect of the port.
> >
> > What do others think?
> > Is this too much of a special use-case to be supported?
> > Too much shoot-yourself-in-the-foot potential?
>
> Looks like you can add the -include line to /etc/mk.conf locally
> without touching bsd.port.mk, would it make more sense to do that
> or is that in the wrong place for some variables?
I *think* there was something about mk.conf when I first looked into it.
Either way, bsd.port.mk seems more appropiate to me.
>
> > If porters pollute this file and commit stuff that depends on the site
> > local config so that bulk builds fail we certainly have a net-loss, but
> > I somewhat trust committers to take care of this.
>
> I think the main risk would be from people accidentally doing a
> commit which adds a site-local-config.mk file to the repo.
> Not that bad a risk.
>
> > Afterall, it's similar to /etc/mk.conf already where local configs do
> > effect builds and yet it seems fine.
> >
> > Index: bsd.port.mk
> > ===================================================================
> > RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
> > retrieving revision 1.1576
> > diff -u -p -r1.1576 bsd.port.mk
> > --- bsd.port.mk 6 Jul 2022 09:30:41 -0000 1.1576
> > +++ bsd.port.mk 11 Jul 2022 11:22:41 -0000
> > @@ -44,6 +44,11 @@
> > #
> >
> > #
> > +# Include site-local port-specific configuration iff it exists.
> > +#
> > +-include site-local-config.mk
This would search in all include directories but we really want it to
only look under /usr/ports/category/port/.
`-include "site-local-config.mk"` won't work so reuse the existing idiom
from bsd.port.mk (diff below) to only get the port's local file.
Just noticed this when looking at `make -dA` output.
> > +
> > +#
> > # tests and variable definitions come first, THEN targets
> > #
> > .for forbidden in FLAVOR SUBPACKAGE SUBDIR SUBDIRLIST
> >
>
Index: bsd.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
retrieving revision 1.1576
diff -u -p -r1.1576 bsd.port.mk
--- bsd.port.mk 6 Jul 2022 09:30:41 -0000 1.1576
+++ bsd.port.mk 11 Jul 2022 12:50:29 -0000
@@ -44,6 +44,13 @@
#
#
+# Include site-local port-specific configuration iff it exists.
+#
+.if exists(${.CURDIR}/site-local-config.mk)
+. include "${.CURDIR}/site-local-config.mk"
+.endif
+
+#
# tests and variable definitions come first, THEN targets
#
.for forbidden in FLAVOR SUBPACKAGE SUBDIR SUBDIRLIST