PORTSDIR not being read from /etc/make.conf when build /usr/src

From: Jonathan Vasquez <jon_at_xyinn.org>
Date: Wed, 07 Dec 2022 22:18:54 UTC
Hey all,

I'm currently trying to centralize my poudriere ports directory and my normal /usr/ports dir so that I can reduce the load on the central freebsd servers, and also to clean it up on my end.

Since I have PORTS_MODULES defined in my /etc/make.conf, building my kernel will properly automatically rebuild the modules listed properly. This requires your ports directory to exist and working (obviously). Since my ports dir was in the default location: /usr/ports, it was working properly. At the moment I have my poudriere ports directory and distfiles defined at:

/usr/local/poudriere/ports/default (The standard path for poudriere).
/usr/local/poudriere/distfiles

I went ahead and added the following to /etc/make.conf:

PORTSDIR=/usr/local/poudriere/ports/default
DISTDIR=/usr/local/poudriere/distfiles

However, when running a "make -j32 buildkernel", the PORTSDIR variable doesn't get read in properly and will default to /usr/ports. I tried placing in another variable (that I saw in the module rebuilding phase of buildkernel) in /etc/make.conf to see if that was working properly, I picked SRC_BASE as an example (I also wanted to test if variable substitution was working properly as well):

/etc/make.conf:

_TEST="/omega"
SRC_BASE="${_TEST}/lol"

Running make -j32 buildkernel again properly displayed the "/omega/lol" path for SRC_BASE, but the PORTSDIR still was ignored. I then tried inlining the variable to see if that worked:

make -j32 buildkernel PORTSDIR="/some/path"

and that worked. There was one or two times that I was able to non-deterministically get the PORTSDIR to be read in from /etc/make.conf, but for the most part, it was ignored 99% of the time. Running "make buildkernel" without any parallelization didn't help either.

So ultimately the question is, is it intended behavior for PORTSDIR to be ignored by the make for buildkernel when it's defined in /etc/make.conf? From what man ports says, /etc/make.conf is suppose to be used for all aspects of building doc, src, and ports.. or is this a bug?

If it helps, I'm running on stable/13-n253245-209ebfa26ec4/GENERIC amd64)

Thank you,

Jonathan Vasquez
PGP: 34DA 858C 1447 509E C77A D49F FB85 90B7 C4CA 5279
Sent with ProtonMail Secure Email