Re: Can `pkg prime-origins` be "trained" to pick up flavors?
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