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

From: Jonathan Vasquez <jon_at_xyinn.org>
Date: Thu, 08 Dec 2022 03:28:26 UTC
Hey Tomoaki,

Thanks for the suggestion. Yup, there are definitely many different workarounds we could go with, but I'm definitely interested in knowing if this is a bug or intended behavior. If anything, I can open up a bug report.


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



------- Original Message -------
On Wednesday, December 7th, 2022 at 19:13, Tomoaki AOKI <junchoon@dec.sakura.ne.jp> wrote:


> Hi.
> How about using /usr/ports for poudriere?
> You can do it with
> 
> `poudriere ports -c -f none -M /usr/ports -m null`
> 
> As I've just started testing poudriere, I'm not 100% sure it's correct.
> But it seems working as intended (automatically null [loopback]
> mounted /usr/ports on build and unmounted when done).
> 
> Also, I've added "-m src=/usr/src" on creating poudriere jail,
> as I only build ports for the specific environment only and need
> keeping in sync. For that, updating poudriere jail on every base
> updating.
> 
> Or setting your configuration from /etc/make.conf to /etc/src.conf
> (or /etc/src-env.conf)?
> Possibly configuration on /etc/make.conf is somehow overridden by src
> build defaults.
> 
> 
> HTH.
> 
> On Wed, 07 Dec 2022 22:18:54 +0000
> Jonathan Vasquez jon@xyinn.org wrote:
> 
> > 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
> 
> 
> --
> Tomoaki AOKI junchoon@dec.sakura.ne.jp