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

From: Tomoaki AOKI <junchoon_at_dec.sakura.ne.jp>
Date: Thu, 08 Dec 2022 00:13:17 UTC
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>