Re: avoiding "install" for dependencies with PORTS_MODULES

From: Gleb Popov <arrowd_at_freebsd.org>
Date: Wed, 04 May 2022 06:01:25 UTC
On Tue, May 3, 2022 at 11:59 PM G. Paul Ziemba <pz-freebsd-ports@ziemba.us>
wrote:

> An unfortunate property of building ports locally (as opposed to
> via poudriere) is that dependencies are often installed to the host
> file system during the build even when I am not doing "make install"
> to the target port.
>
> I normally sidestep this issue by using poudriere. However, I am trying
> to use PORTS_MODULES in conjunction with my kernel upgrade process to
> generate ports-based kernel modules matching the new kernel, to avoid the
> "disable kmods/reboot/build ports/reenable kmods" dance.
>
> It seems "make buildkernel" uses tool binaries from a prior "make
> buildworld".
>
> Is it possible to, in a like manner, cause the ports built via
> PORTS_MODULES
> to install and use their dependencies in this same "world" staging tree
> (or in some alternate place) instead of directly in the host's file system?
>
> --
> G. Paul Ziemba
> FreeBSD unix:
>  9:21AM  up 130 days, 17:23, 15 users, load averages: 0.33, 0.35, 0.35
>

This is exactly the situation in which Poudriere helps. You can create a
Poudriere jail out of /usr/src and /usr/obj and then build all the needed
ports in the isolated environment. Once you finish, upgrade the host with
installkernel & installworld and just do pkg upgrade -r
local_poudriere_repo.