[Bug 268299] PORTSDIR variable not being read from /etc/make.conf when building kernel.

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 10 Dec 2022 14:07:41 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=268299

            Bug ID: 268299
           Summary: PORTSDIR variable not being read from /etc/make.conf
                    when building kernel.
           Product: Base System
           Version: 13.1-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: jon@xyinn.org

This is a copy/paste of the message I sent to the stable mailing list. I wasn't
able to get an official confirmation of behavior, so I'm asking here:

TLDR: 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)

For now, I'm going with a suggested workaround of making a symlink from
/usr/ports to /usr/local/poudriere/ports/default.


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.


Thank you,

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