Re: Can `pkg prime-origins` be "trained" to pick up flavors?

From: DutchDaemon - FreeBSD Forums Administrator <DutchDaemon_at_FreeBSD.org>
Date: Mon, 01 Jul 2024 18:42:47 UTC
On 1-7-2024 19:22, Tomoaki AOKI wrote:
> On Mon, 1 Jul 2024 15:46:18 +0200
> DutchDaemon - FreeBSD Forums Administrator<DutchDaemon@FreeBSD.org>
> wrote:
>
>> Hey,
>>
>> I use `pkg prime-origins` on my servers to pick up the ports that
>> Poudriere needs to build for that (cluster of) server(s).
>>
>> This doesn't work for flavors, or I'm missing a trick.
>>
>> E.g.: I have installed the "guestagent" flavor of emulators/qemu
>> ("qemu-guest-agent" in pkg terms), which gets built in Poudriere as
>> "emulators/qemu@guestagent".
>>
>> All good and well.
>>
>> But `pkg prime-origins` picks it up as "emulators/qemu", which, of
>> course, triggers Poudriere to build the whole thing,
>> "emulators/qemu@default".
>>
>> Which I don't need.
>>
>> So either pkg needs to be amended to be able to recognize and report a
>> flavor, or I have to put this in the jail's make.conf on Poudriere.
>>
>> I'm not sure if there's a place for that in a generic make.conf for all
>> ports in that specific jail; you know, one that contains
>> all-encompassing lines like
>>
>> DEFAULT_VERSIONS= php=82 apache=2.4 mysql=80 ssl=openssl python=3.9
>> python3=3.9
>>
>> Anyone?
> Hi.
> pkg records informations about FLAVORs in annotations only.
> You should search output from `pkg -A <packagename>` for each pkg.
>
> Does the script on brew.bsd.cafe [1] help understanding/usable?
>
> [1]
> https://brew.bsd.cafe/TomAoki/sh_scripts/src/branch/main/poudlist-all
>
> Regards.

That actually put me on a path forward, but I decided to sort of 
brute-force it, so I could run the script anywhere.

In fact, Ansible runs it on all servers (grouped by build jail names on 
Poudriere) and gathers/sorts the output to populate the build lists for 
Poudriere, which then fires up the jails and builds the associated repos.

for port in $( /usr/local/sbin/pkg prime-origins )
do
flavor=$( /usr/local/sbin/pkg info -A "${port}" | /usr/bin/grep "flavor" 
| /usr/bin/awk '{print $NF}' | /usr/bin/grep -v "default" )
[ "x${flavor}" = "x" ] && echo "${port}" || echo "${port}@${flavor}"
done

That gives me exactly the output I need.

Thanks!

DD