Re: Poudriere: when fetching a package with porttree from a git source, the generation of logs is slow
Mark Millard <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.ports |
|---|---|
| Message-ID | <[email protected]> |
On 4/11/26 08:50, Mark Millard wrote:
> On 4/11/26 08:06, Roger Marquis wrote:
>> On Thu, 9 Apr 2026, Mark Millard wrote:
>>> My understanding was that when the ports tree ( /usr/ports/ above ) does
>>> not match the upstream version that can be fetched, including for any
>>> dependency mismatches or option mismatches ...
>>
>> Is this new behavior for 'make fetch'? Asking because we recently have
>> had a relatively large number of poudriere fetch failures, most without
>> sufficient logging of the cause. As we reuse /usr/ports/distfiles
>> across architectures and versions it would be helpful if these
>> intentional but unnecessary conditional failures could be overridden.
>>
>> Roger Marquis
>>
>>
Sorry that I forgot to also deal with your switch to a "make fetch"
context, which is not a poudriere context.
Direct use of make was not being covered by my notes.
"man ports" reports:
QUOTE
fetch Fetch all of the files needed to build this port from the
sites listed in MASTER_SITES and PATCH_SITES. See
FETCH_CMD,
MASTER_SITE_OVERRIDE and MASTER_SITE_BACKUP.
END QUOTE
It is not the same as "make install-missing-packages" that will attempt
package installs of missing dependencies instead of building them, after
which a "make install" can build and install the port (presuming
everything required was available):
QUOTE
install-missing-packages
Install missing dependencies from packages instead of
building
them.
. . .
Example 2: Installing Dependencies with pkg(8)
The following example shows how to build and install a port without
having to build its dependencies. Instead, the dependencies are
downloaded via pkg(8).
# make install-missing-packages
# make install
It is especially useful, when the dependencies are costly in time and
resources to build (like lang/rust). The drawback is that pkg(8)
offers only packages built with the default set of OPTIONS.
END QUOTE
Direct use of make does not do as much as poudriere(-devel) to keep
builds coherent, including for such mixes.
poudriere also reports more about the existence of local differences
from the commits in the ports tree it is using (vs. not having such
differences), which is what the original message was requesting it to do
less of because it takes some time to do that. (Wording simplified.)
>
> poudriere has no way of keeping the build coherent unless it follows
> such rules --and with its existing rules may not always be able to do so.
>
> (Note, poudriere-devel context used:)
> poudriere bulk-s -b documentation in the poudriere-bulk man page reports:
>
> QUOTE
> poudriere will only use packages that:
> • come from a repository having the same or older version of
> pkg.
> • do not have a locally fetched package already.
> • are not IGNORED.
> • match the expected local version.
> • match the expected ABI.
> • match the expected runtime and library dependencies.
> • match the expected OPTIONS when CHECK_CHANGED_OPTIONS is
> enabled (default: on).
> • is NOT listed in PACKAGE_FETCH_BLACKLIST.
> • is NOT listed with -C, or -c, when -t is used.
> The -v flag can be used to show these decisions during build.
> Specifing twice will show more details on why some are
> skipped.
>
>
> WARNING: poudriere has no way of determining differences
> outside
> of the above list. That is, if the local ports framework, or
> port, has custom patches or special WITH_FOO knobs (not
> OPTIONS)
> then it is required to add its name into
> PACKAGE_FETCH_BLACKLIST. Otherwise a package may be
> fetched and
> used that lacks the custom patch or knob.
>
> See PACKAGE_FETCH_BRANCH, PACKAGE_FETCH_URL,
> PACKAGE_FETCH_BLACKLIST, and PACKAGE_FETCH_WHITELIST in
> poudriere.conf.sample. The entries in the lists will be
> matched
> against package names without versions.
> END QUOTE
>
--
===
Mark Millard
marklmi at yahoo.com