sh_scripts/poudlist-all
2024-05-31 23:15:50 +09:00
..
poudlist-all.sh Add support for FLAVORs (trade-off between slowness and functionality. 2024-05-31 23:15:50 +09:00
README.md Add support for FLAVORs (trade-off between slowness and functionality. 2024-05-31 23:15:50 +09:00

poudlist-all.sh

Description

A small script to generate a list of all ports installed, excluding leaf ports which you don't want to be rebuilt in conjunction of others.
The author created this script because poudriere bulk -a -j jailname forces rebuilding ALL ports, which any of ports they depends on are updated, regardless it's too time-consuming or not.
This script recognizes FLAVORS. The logic to support FLAVORs are tricky, as pkg does not support providing to list all installed ports as category/origin[@flavor] format.
Currently, flavors of individual ports installed is listed only in annotations with other entries.

Usage

No command line arguments.Simply run it as a bourne shell script.
Once the resulting list is generated (default: /poudriere/pkglist.all), you can run poudriere bulk -f /poudriere/pkglist.all -j jailname and rebuild too huge monster leaves once it finishes.

Configuing the script

No configuration files are supported.
You need to edit the script and set variables in it.

Variables for configuration

BLOCKLISTS

Origins of ports you want to block from building.
Each origins must be the form poudriere can accept.
For ports having flavors, if you want to block specific flavor only, you can specify the flavor by adding @flavor like textproc/fcitx5-qt@qt6. Otherwise, all flavors installed for the origin are blocked from listing.
Note that poudriere does not block building listed ports if it is depended upon by any non-listed ports.

Beware! If the origin is NOT a leaf ports, you must specify ALL origins of the ports/pkgs which depends on it, for example, japanese/libreoffice as the actual leaf of editors/libreoffice must be specified in conjunction with editors/libreoffice.

PORTSDIR

The directory where ports tree to be used exists.
Default is where vanilla FreeBSD expects: /usr/ports

LISTDIR

The directory where the list is generated.
Default is: /poudriere

LISTFILE

The file name of the list to be generated.
Default is: pkglist.all

TMPDIR

The directory where temporary working file is generated.
Requires Read/Write permission for the user running this script.

TMPFILE

The file name of the temporary working file to be used.
Default is the string of LISTFILE appended uid, date and time.
So would be no need to modify.