Help with port dependencies

Hi everyone,

I'm trying to figure out the best way to handle port dependencies of a port (in this case ftp/curl) that I want to build and install through poudriere.

I was running this command:

poudriere options -j 141amd64 -p 2024Q4 -z test -c ftp/curl

That command walked me through a bunch of other ports:

converters/libiconv security/libssh2 dns/libpsl devel/py-coverage devel/py-pytest-xdist devel/git lang/ruby32 textproc/xmlto textproc/libxml2 devel/cmake-core textproc/expat2 textproc/libxslt security/libgcrypt textproc/docbook-xsl www/w3m devel/py-hypothesis math/py-numpy lang/gcc13 devel/binutils math/suitesparse-umfpack math/suitesparse-amd math/suitesparse-config math/openblas math/suitesparse-camd math/suitesparse-colamd math/suitesparse-ccolamd math/suitesparse-cholmod devel/py-mypy databases/gdbm x11-toolkits/tk86 print/freetype2 archivers/brotli graphics/png x11-fonts/fontconfig devel/py-Jinja2 lang/rust www/py-django42 www/py-werkzeug devel/mercurial devel/subversion security/gnupg devel/apr1 security/pinentry security/pinentry-curses www/serf security/py-cryptography devel/py-pytest-benchmark sysutils/py-py-cpuinfo textproc/py-elasticsearch net/py-urllib3 security/ca/root/nss www/py-requests textproc/py-docutils devel/py-prance devel/py-openapi-spec-validator devel/py-pyyaml www/py-aiohttp dns/py-pycares www/py-gunicorn www/py-pyjwt security/py-keyring devel/py-black devel/py-twisted devel/py-jaraco.packaging devel/glib20 devel/py-readme-renderer www/py-bleach devel/py-isort devel/py-lark math/py-pandas devel/py-versioneer databases/py-redis databases/redis graphics/lcms2 devel/zziplib graphics/cairo print/ghostscript10 graphics/gd graphics/webp sysutils/coreutils print/py-fonttools print/py-ufolib2 graphics/poppler devel/boost-libs security/gpgme graphics/libpotrace

I am at lost, why does ftp/curl need www/py-django42 as well as many others to begin with? I understand that it might be just ports on which curl depend to build correctly... but here are my questions:

1. How do you figure out which port requires, for example, www/py-django42 in order to build or run ftp/curl? I've used Freshports to check the build and runtime dependencies but ended up even more confused. I've also tested make build-depends-list and make run-depends-list as well, the lists were short but not that helpful. make all-depends-list spits out a long list, not pointing to anything specific.

2. Is there any way I can tell poudriere to accept default options for everything ftp/curl depends on to build and show dialog boxes only for ftp/curl as well as ports that ftp/curl depends on directly to install and run?

Thanks.
 
2. Is there any way I can tell poudriere to accept default options for everything ftp/curl depends on to build and show dialog boxes only for ftp/curl as well as ports that ftp/curl depends on directly to install and run?
Don't use poudriere-options(8). Make use of setting (or unsetting) options via make.conf. For poudriere that's /usr/local/etc/poudriere.d/make.conf, not /etc/make.conf.

Lets say you want BROTLI and LIBUV turned on:
Code:
ftp_curl_SET= BROTLI LIBUV
And disable DOCS and GOPHER
Code:
ftp_curl_UNSET= DOCS GOPHER
Make sure to remove any of those *-option directories, as they will overrule what you SET or UNSET in make.conf.

This is my make.conf for example:
Code:
devel_cmake_UNSET= DOCS
devel_git_UNSET= GITWEB SEND_EMAIL
devel_py-molecule_SET= DOCKER
editors_neovim_SET= PYNVIM
math_gmp_SET= CPU_OPTS
net_samba413_SET= MDNSRESPONDER
net_samba413_UNSET= AD_DC AVAHI CUPS FRUIT
net_samba416_SET= MDNSRESPONDER
net_samba416_UNSET= AD_DC AVAHI CUPS FRUIT
print_ghostscript10_UNSET= CUPS
security_strongswan_SET= CURL GCM KDF SWANCTL VICI
security_sudo_SET= INSULTS
sysutils_cpupdate_SET= INTEL
sysutils_vm-bhyve_SET= BHYVE_FIRMWARE GRUB2_BHYVE
textproc_py-docutils_SET= PYGMENTS
 
If you want to see dependencies of already installed port as tree, ports-mgmt/pkg_tree (depends on lang/perl5.36) would be your friend.

Code:
% pkg_tree curl       
curl-8.10.1
|\__ libnghttp2-1.63.0
|\__ libssh2-1.11.0_1,3
 \__ libpsl-0.21.5_1
gstreamer1-plugins-curl-1.24.8
|\__ libxml2-2.11.9
|\__ libssh2-1.11.0_1,3
|\__ freetype2-2.13.3
|\__ gstreamer1-plugins-bad-1.24.8
|\__ gstreamer1-plugins-1.24.8
|\__ gstreamer1-1.24.8
|\__ iso-codes-4.15.0
|\__ curl-8.10.1
|\__ orc-0.4.40
|\__ glib-2.80.5,2
 \__ gettext-runtime-0.22.5
linux-c7-curl-7.29.0_13
|\__ linux-c7-nss-3.90.0
|\__ linux-c7-libssh2-1.8.0_2
|\__ linux-c7-openldap-2.4.44_3
 \__ linux-c7-nspr-4.35.0

As shown above, pkg_tree curl displays for all ports including curl in its package name.

Code:
% pkg_tree -v curl
curl-8.10.1
|\__ libnghttp2-1.63.0
|\__ libssh2-1.11.0_1,3
 \__ libpsl-0.21.5_1
      |\__ libidn2-2.3.7
      |     |\__ indexinfo-0.3.1
      |      \__ libunistring-1.2
      |            \__ indexinfo-0.3.1
       \__ libunistring-1.2
             \__ indexinfo-0.3.1
gstreamer1-plugins-curl-1.24.8
|\__ libxml2-2.11.9
|      \__ readline-8.2.13_2
|            \__ indexinfo-0.3.1
|\__ libssh2-1.11.0_1,3
|\__ freetype2-2.13.3
|      \__ brotli-1.1.0,1
|\__ gstreamer1-plugins-bad-1.24.8
|     |\__ libX11-1.8.9,1

     (snip)

And option -v invokes displaying indirect dependencies (by default, direct dependencies only are displayed.
 
Thanks for your reply, although I don't get the answers that I originally thought I needed, it is obvious now that I'm chasing down the wrong path.

I made poudriere unnecessarily complex.

Most of the tutorials out there recommend running poudriere options for a list of ports that we want. That automatically leads to the rabbit hole where dialog box upon dialog box appear, prompting for options most of them I have no clue about. Call me dense, but that's how I've been doing this for some time. I thought options should be there for ports to build. :D

My options directory not only consisted of the ports that I wanted, but also every port that the former depended on to build and run. There were a lot of directories in there, and that didn't include ports that don't have options, i.e. not creating directory inside the options directory.

Now that I have gone through my first build without all that, I can't be more delighted.

Let me summarize my poudriere workflow here. Hopefully I can gather feedbacks for how I can make this even better. Also hopefully no one else has to go through this mistake ever again.

So I started with a list of ports.

Then from the list, I looked at the available options and turned off and on things. Only those against the default options should go into the SET and UNSET variables in make.conf.

I found that running poudriere options per port presents a better-looking options list. But rather than going to the dependencies after the first screen, I just cancelled the process once I got the option list for the port. Then I repeated the command for the rest of the ports in the list.

Once it is done, I delete all directories in the options directory.

From this exercise I also added some options to the OPTIONS_SET and OPTIONS_UNSET variables in make.conf.

Finally I run poudriere bulk to start the build process.

Everything went well so far.

Thoughts?
 
poudriere

Code:
root@mowa219-gjp4-zbook-freebsd:~ # poudriere bulk -j main -nv ftp/curl
[00:00:00] [Dry Run] Creating the reference jail... done
[00:00:00] [Dry Run] Mounting system devices for main-default
[00:00:00] [Dry Run] Warning: Using packages from previously failed, or uncommitted, build: /usr/local/poudriere/data/packages/main-default/.building
[00:00:01] [Dry Run] Mounting ccache from: /internalssd/var/cache/ccache
[00:00:01] [Dry Run] Mounting ports from: /usr/local/poudriere/ports/default
[00:00:01] [Dry Run] Mounting packages from: /usr/local/poudriere/data/packages/main-default
[00:00:01] [Dry Run] Mounting distfiles from: /usr/ports/distfiles
[00:00:01] [Dry Run] Copying /var/db/ports from: /usr/local/etc/poudriere.d/main-options
[00:00:01] [Dry Run] Appending to make.conf: /usr/local/etc/poudriere.d/make.conf
/etc/resolv.conf -> /usr/local/poudriere/data/.m/main-default/ref/etc/resolv.conf
[00:00:01] [Dry Run] Starting jail main-default
Updating /var/run/os-release done.
[00:00:01] [Dry Run] Will build as nobody:nobody (65534:65534)
[00:00:02] [Dry Run] Ports supports: FLAVORS SUBPACKAGES SELECTED_OPTIONS
[00:00:02] [Dry Run] Inspecting /usr/local/poudriere/data/.m/main-default/ref//usr/ports for modifications to git checkout... no
[00:00:04] [Dry Run] Ports top-level git hash: 9be805e6e9c
[00:00:04] [Dry Run] Acquiring build logs lock for main-default... done
[00:00:04] [Dry Run] Logs: /usr/local/poudriere/data/logs/bulk/main-default/2024-10-13_19h45m46s
[00:00:04] [Dry Run] Loading MOVED for /usr/local/poudriere/data/.m/main-default/ref/usr/ports
[00:00:04] [Dry Run] Loading MOVED from /usr/local/poudriere/data/.m/main-default/ref/usr/ports/MOVED
[00:00:04] [Dry Run] Gathering ports metadata
[00:00:04] [Dry Run] ftp/curl depends on devel/ccache
[00:00:04] [Dry Run] ftp/curl depends on devel/pkgconf
[00:00:04] [Dry Run] ftp/curl depends on dns/libpsl
[00:00:04] [Dry Run] ftp/curl depends on lang/perl5.36
[00:00:04] [Dry Run] ftp/curl depends on ports-mgmt/pkg
[00:00:04] [Dry Run] ftp/curl depends on security/libssh2
[00:00:04] [Dry Run] ftp/curl depends on www/libnghttp2
[00:00:04] [Dry Run] devel/pkgconf depends on devel/ccache
[00:00:04] [Dry Run] devel/pkgconf depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/ccache depends on ports-mgmt/pkg
[00:00:04] [Dry Run] dns/libpsl depends on devel/ccache
[00:00:04] [Dry Run] dns/libpsl depends on devel/libunistring
[00:00:04] [Dry Run] dns/libpsl depends on devel/meson
[00:00:04] [Dry Run] dns/libpsl depends on devel/ninja
[00:00:04] [Dry Run] dns/libpsl depends on devel/pkgconf
[00:00:04] [Dry Run] dns/libpsl depends on dns/libidn2
[00:00:04] [Dry Run] dns/libpsl depends on dns/public_suffix_list
[00:00:04] [Dry Run] dns/libpsl depends on lang/python311
[00:00:04] [Dry Run] dns/libpsl depends on ports-mgmt/pkg
[00:00:04] [Dry Run] lang/perl5.36 depends on devel/ccache
[00:00:04] [Dry Run] lang/perl5.36 depends on ports-mgmt/pkg
[00:00:04] [Dry Run] www/libnghttp2 depends on devel/ccache
[00:00:04] [Dry Run] www/libnghttp2 depends on devel/pkgconf
[00:00:04] [Dry Run] www/libnghttp2 depends on ports-mgmt/pkg
[00:00:04] [Dry Run] security/libssh2 depends on devel/ccache
[00:00:04] [Dry Run] security/libssh2 depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/libunistring depends on devel/ccache
[00:00:04] [Dry Run] devel/libunistring depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/libunistring depends on print/indexinfo
[00:00:04] [Dry Run] devel/meson depends on devel/ccache
[00:00:04] [Dry Run] devel/meson depends on devel/ninja
[00:00:04] [Dry Run] devel/meson depends on devel/py-build@py311
[00:00:04] [Dry Run] devel/meson depends on devel/py-installer@py311
[00:00:04] [Dry Run] devel/meson depends on devel/py-setuptools@py311
[00:00:04] [Dry Run] devel/meson depends on devel/py-wheel@py311
[00:00:04] [Dry Run] devel/meson depends on lang/python311
[00:00:04] [Dry Run] devel/meson depends on ports-mgmt/pkg
[00:00:04] [Dry Run] dns/libidn2 depends on devel/ccache
[00:00:04] [Dry Run] dns/libidn2 depends on devel/libunistring
[00:00:04] [Dry Run] dns/libidn2 depends on misc/help2man
[00:00:04] [Dry Run] dns/libidn2 depends on ports-mgmt/pkg
[00:00:04] [Dry Run] dns/libidn2 depends on print/indexinfo
[00:00:04] [Dry Run] dns/libidn2 depends on print/texinfo
[00:00:04] [Dry Run] devel/ninja depends on devel/ccache
[00:00:04] [Dry Run] devel/ninja depends on lang/python311
[00:00:04] [Dry Run] devel/ninja depends on ports-mgmt/pkg
[00:00:04] [Dry Run] dns/public_suffix_list depends on ports-mgmt/pkg
[00:00:04] [Dry Run] lang/python311 depends on devel/ccache
[00:00:04] [Dry Run] lang/python311 depends on devel/gettext-runtime
[00:00:04] [Dry Run] lang/python311 depends on devel/gettext-tools
[00:00:04] [Dry Run] lang/python311 depends on devel/libffi
[00:00:04] [Dry Run] lang/python311 depends on devel/pkgconf
[00:00:04] [Dry Run] lang/python311 depends on devel/readline
[00:00:04] [Dry Run] lang/python311 depends on math/mpdecimal
[00:00:04] [Dry Run] lang/python311 depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/gettext-runtime depends on devel/ccache
[00:00:04] [Dry Run] devel/gettext-runtime depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/gettext-runtime depends on print/indexinfo
[00:00:04] [Dry Run] devel/gettext-tools depends on devel/ccache
[00:00:04] [Dry Run] devel/gettext-tools depends on devel/gettext-runtime
[00:00:04] [Dry Run] devel/gettext-tools depends on devel/libtextstyle
[00:00:04] [Dry Run] devel/gettext-tools depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/gettext-tools depends on print/indexinfo
[00:00:04] [Dry Run] devel/libffi depends on devel/ccache
[00:00:04] [Dry Run] devel/libffi depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/libffi depends on print/indexinfo
[00:00:04] [Dry Run] math/mpdecimal depends on devel/ccache
[00:00:04] [Dry Run] devel/readline depends on devel/ccache
[00:00:04] [Dry Run] math/mpdecimal depends on devel/gmake
[00:00:04] [Dry Run] devel/readline depends on ports-mgmt/pkg
[00:00:04] [Dry Run] math/mpdecimal depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/readline depends on print/indexinfo
[00:00:04] [Dry Run] print/indexinfo depends on devel/ccache
[00:00:04] [Dry Run] print/indexinfo depends on ports-mgmt/pkg
[00:00:04] [Dry Run] misc/help2man depends on devel/ccache
[00:00:04] [Dry Run] misc/help2man depends on devel/gettext-runtime
[00:00:04] [Dry Run] misc/help2man depends on devel/gettext-tools
[00:00:04] [Dry Run] misc/help2man depends on devel/gmake
[00:00:04] [Dry Run] misc/help2man depends on devel/p5-Locale-gettext
[00:00:04] [Dry Run] misc/help2man depends on lang/perl5.36
[00:00:04] [Dry Run] misc/help2man depends on ports-mgmt/pkg
[00:00:04] [Dry Run] misc/help2man depends on print/indexinfo
[00:00:04] [Dry Run] print/texinfo depends on converters/libiconv
[00:00:04] [Dry Run] print/texinfo depends on converters/p5-Text-Unidecode
[00:00:04] [Dry Run] print/texinfo depends on devel/ccache
[00:00:04] [Dry Run] print/texinfo depends on devel/gettext-runtime
[00:00:04] [Dry Run] print/texinfo depends on devel/gettext-tools
[00:00:04] [Dry Run] print/texinfo depends on devel/gmake
[00:00:04] [Dry Run] print/texinfo depends on devel/p5-Locale-libintl
[00:00:04] [Dry Run] print/texinfo depends on lang/perl5.36
[00:00:04] [Dry Run] print/texinfo depends on misc/help2man
[00:00:04] [Dry Run] print/texinfo depends on ports-mgmt/pkg
[00:00:04] [Dry Run] print/texinfo depends on print/indexinfo
[00:00:04] [Dry Run] print/texinfo depends on textproc/p5-Unicode-EastAsianWidth
[00:00:04] [Dry Run] converters/p5-Text-Unidecode depends on devel/ccache
[00:00:04] [Dry Run] converters/p5-Text-Unidecode depends on lang/perl5.36
[00:00:04] [Dry Run] converters/p5-Text-Unidecode depends on ports-mgmt/pkg
[00:00:04] [Dry Run] converters/libiconv depends on devel/ccache
[00:00:04] [Dry Run] converters/libiconv depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/gmake depends on devel/ccache
[00:00:04] [Dry Run] devel/gmake depends on devel/gettext-runtime
[00:00:04] [Dry Run] devel/gmake depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/gmake depends on print/indexinfo
[00:00:04] [Dry Run] devel/libtextstyle depends on devel/ccache
[00:00:04] [Dry Run] devel/libtextstyle depends on ports-mgmt/pkg
[00:00:04] [Dry Run] devel/libtextstyle depends on print/indexinfo
[00:00:05] [Dry Run] devel/p5-Locale-gettext depends on devel/ccache
[00:00:05] [Dry Run] devel/p5-Locale-gettext depends on devel/gettext-runtime
[00:00:05] [Dry Run] devel/p5-Locale-gettext depends on devel/gettext-tools
[00:00:05] [Dry Run] devel/p5-Locale-gettext depends on lang/perl5.36
[00:00:05] [Dry Run] devel/p5-Locale-gettext depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/p5-Locale-libintl depends on converters/libiconv
[00:00:05] [Dry Run] devel/p5-Locale-libintl depends on devel/ccache
[00:00:05] [Dry Run] devel/p5-Locale-libintl depends on devel/gettext-runtime
[00:00:05] [Dry Run] devel/p5-Locale-libintl depends on devel/gettext-tools
[00:00:05] [Dry Run] devel/p5-Locale-libintl depends on lang/perl5.36
[00:00:05] [Dry Run] devel/p5-Locale-libintl depends on ports-mgmt/pkg
[00:00:05] [Dry Run] textproc/p5-Unicode-EastAsianWidth depends on devel/ccache
[00:00:05] [Dry Run] textproc/p5-Unicode-EastAsianWidth depends on lang/perl5.36
[00:00:05] [Dry Run] textproc/p5-Unicode-EastAsianWidth depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-build depends on devel/ccache
[00:00:05] [Dry Run] devel/py-build depends on devel/py-flit-core@py311
[00:00:05] [Dry Run] devel/py-build depends on devel/py-installer@py311
[00:00:05] [Dry Run] devel/py-build depends on devel/py-packaging@py311
[00:00:05] [Dry Run] devel/py-build depends on devel/py-pyproject_hooks@py311
[00:00:05] [Dry Run] devel/py-build depends on lang/python311
[00:00:05] [Dry Run] devel/py-build depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-installer depends on devel/ccache
[00:00:05] [Dry Run] devel/py-installer depends on devel/py-flit-core@py311
[00:00:05] [Dry Run] devel/py-installer depends on lang/python311
[00:00:05] [Dry Run] devel/py-installer depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-setuptools depends on devel/ccache
[00:00:05] [Dry Run] devel/py-setuptools depends on lang/python311
[00:00:05] [Dry Run] devel/py-setuptools depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-wheel depends on devel/ccache
[00:00:05] [Dry Run] devel/py-wheel depends on devel/py-build@py311
[00:00:05] [Dry Run] devel/py-wheel depends on devel/py-flit-core@py311
[00:00:05] [Dry Run] devel/py-wheel depends on devel/py-installer@py311
[00:00:05] [Dry Run] devel/py-wheel depends on lang/python311
[00:00:05] [Dry Run] devel/py-wheel depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-packaging depends on devel/ccache
[00:00:05] [Dry Run] devel/py-packaging depends on devel/py-flit-core@py311
[00:00:05] [Dry Run] devel/py-packaging depends on devel/py-installer@py311
[00:00:05] [Dry Run] devel/py-packaging depends on lang/python311
[00:00:05] [Dry Run] devel/py-packaging depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-flit-core depends on devel/ccache
[00:00:05] [Dry Run] devel/py-flit-core depends on lang/python311
[00:00:05] [Dry Run] devel/py-flit-core depends on ports-mgmt/pkg
[00:00:05] [Dry Run] devel/py-pyproject_hooks depends on devel/ccache
[00:00:05] [Dry Run] devel/py-pyproject_hooks depends on devel/py-flit-core@py311
[00:00:05] [Dry Run] devel/py-pyproject_hooks depends on devel/py-installer@py311
[00:00:05] [Dry Run] devel/py-pyproject_hooks depends on lang/python311
[00:00:05] [Dry Run] devel/py-pyproject_hooks depends on ports-mgmt/pkg
[00:00:05] [Dry Run] Calculating ports order and dependencies
[00:00:05] [Dry Run] Sanity checking the repository
[00:00:05] [Dry Run] Trimming IGNORED and blacklisted ports
[00:00:05] [Dry Run] Package fetch: Looking for missing packages to fetch from pkg+https://pkg.freebsd.org/${ABI}/latest
[00:00:05] [Dry Run] Package fetch: No eligible missing packages to fetch
[00:00:05] [Dry Run] Checking packages for incremental rebuild needs
[00:00:08] [Dry Run] Checking packages for missing dependencies
[00:00:09] [Dry Run] Deleting stale symlinks... done
[00:00:09] [Dry Run] Deleting empty directories... done
[00:00:09] [Dry Run] Checking for stale cache files
[00:00:10] [Dry Run] Unqueueing existing packages
[00:00:10] [Dry Run] Unqueueing orphaned build dependencies
[00:00:10] [Dry Run] Sanity checking build queue
[main-default] [2024-10-13_19h45m46s] [pkgqueue_sanity_check] Queued: 10 Built: 0  Failed: 0  Skipped: 0  Ignored: 0  Fetched: 0  Tobuild: 10  Time: 00:00:06
[00:00:10] [Dry Run] Dry run mode, cleaning up and exiting
[00:00:10] [Dry Run] Would build 10 packages using 2 builders
[00:00:10] [Dry Run] Ports to build: ftp/curlZdns/libpslZdns/libidn2Zlang/python311Zdevel/gettext-toolsZmisc/help2manZprint/texinfoZdevel/gmakeZdevel/p5-Locale-gettextZdevel/p5-Locale-libintl
[main-default] [2024-10-13_19h45m46s] [done] Queued: 10 Built: 0  Failed: 0  Skipped: 0  Ignored: 0  Fetched: 0  Tobuild: 10  Time: 00:00:06
[00:00:10] [Dry Run] Logs: /usr/local/poudriere/data/logs/bulk/main-default/2024-10-13_19h45m46s
[00:00:10] [Dry Run] Cleaning up
main-default: removed
main-default-n: removed
[00:00:10] [Dry Run] Unmounting file systems
root@mowa219-gjp4-zbook-freebsd:~ #
 
With a run that's not dry, ten ports are ignored:

Code:
root@mowa219-gjp4-zbook-freebsd:~ # grep ALLOW_MAKE_JOBS\= /usr/local/etc/poudriere.conf
ALLOW_MAKE_JOBS=no
root@mowa219-gjp4-zbook-freebsd:~ # sed -i '' s/ALLOW_MAKE_JOBS=no/ALLOW_MAKE_JOBS=yes/g /usr/local/etc/poudriere.conf
root@mowa219-gjp4-zbook-freebsd:~ # poudriere bulk -j main ftp/curl
[00:00:00] Creating the reference jail... done
[00:00:00] Mounting system devices for main-default
[00:00:00] Warning: Using packages from previously failed, or uncommitted, build: /usr/local/poudriere/data/packages/main-default/.building
[00:00:00] Mounting ccache from: /internalssd/var/cache/ccache
[00:00:00] Mounting ports from: /usr/local/poudriere/ports/default
[00:00:00] Mounting packages from: /usr/local/poudriere/data/packages/main-default
[00:00:00] Mounting distfiles from: /usr/ports/distfiles
[00:00:00] Copying /var/db/ports from: /usr/local/etc/poudriere.d/main-options
[00:00:00] Appending to make.conf: /usr/local/etc/poudriere.d/make.conf
/etc/resolv.conf -> /usr/local/poudriere/data/.m/main-default/ref/etc/resolv.conf
[00:00:00] Starting jail main-default
Updating /var/run/os-release done.
[00:00:00] Will build as nobody:nobody (65534:65534)
[00:00:01] Ports supports: FLAVORS SUBPACKAGES SELECTED_OPTIONS
[00:00:01] Inspecting /usr/local/poudriere/data/.m/main-default/ref//usr/ports for modifications to git checkout... no
[00:00:03] Ports top-level git hash: 9be805e6e9c
[00:00:03] Acquiring build logs lock for main-default... done
[00:00:03] Logs: /usr/local/poudriere/data/logs/bulk/main-default/2024-10-13_19h50m09s
[00:00:03] Loading MOVED for /usr/local/poudriere/data/.m/main-default/ref/usr/ports
[00:00:03] Gathering ports metadata
[00:00:04] Calculating ports order and dependencies
[00:00:04] Sanity checking the repository
[00:00:05] Trimming IGNORED and blacklisted ports
[00:00:05] Package fetch: Looking for missing packages to fetch from pkg+https://pkg.freebsd.org/${ABI}/latest
[00:00:05] Package fetch: No eligible missing packages to fetch
[00:00:05] Checking packages for incremental rebuild needs
[00:00:08] Deleting stale symlinks... done
[00:00:08] Deleting empty directories... done
[00:00:08] Unqueueing existing packages
[00:00:08] Unqueueing orphaned build dependencies
[00:00:08] Sanity checking build queue
[main-default] [2024-10-13_19h50m09s] [pkgqueue_sanity_check] Queued: 10 Built: 0  Failed: 0  Skipped: 0  Ignored: 0  Fetched: 0  Tobuild: 10  Time: 00:00:06
[00:00:08] Recording filesystem state for prepkg... done
[00:00:09] Processing PRIORITY_BOOST
[00:00:09] Building 10 packages using up to 2 builders
[00:00:09] Hit CTRL+t at any time to see build progress and stats
[00:00:09] [01] [00:00:00] Builder starting
[00:00:09] [01] [00:00:00] Builder started
[00:00:09] [02] [00:00:00] Builder starting
[00:00:09] [01] [00:00:00] Inspecting devel/gmake | gmake-4.4.1: determining shlib requirements
[00:00:09] [02] [00:00:00] Builder started
[00:00:10] [02] [00:00:01] Inspecting devel/gettext-tools | gettext-tools-0.22.5: determining shlib requirements
[00:00:10] [01] [00:00:00] Inspecting devel/p5-Locale-gettext | p5-Locale-gettext-1.07: determining shlib requirements
[00:00:10] [02] [00:00:00] Inspecting lang/python311 | python311-3.11.10: determining shlib requirements
[00:00:10] [01] [00:00:00] Inspecting misc/help2man | help2man-1.49.3_1: determining shlib requirements
[00:00:10] [02] [00:00:00] Inspecting devel/p5-Locale-libintl | p5-Locale-libintl-1.33: determining shlib requirements
[00:00:11] [01] [00:00:00] Inspecting print/texinfo | texinfo-7.1_6,1: determining shlib requirements
[00:00:11] [01] [00:00:00] Inspecting dns/libidn2 | libidn2-2.3.7: determining shlib requirements
[00:00:11] [01] [00:00:00] Inspecting dns/libpsl | libpsl-0.21.5_1: determining shlib requirements
[00:00:11] [01] [00:00:00] Inspecting ftp/curl | curl-8.10.1: determining shlib requirements
[00:00:12] Stopping 2 builders
main-default-job-01: removed
main-default-job-02: removed
main-default-job-01-n: removed
main-default-job-02-n: removed
[00:00:12] Creating pkg repository
Creating repository in /tmp/packages: 100%
Packing files for repository: 100%
[00:00:21] Committing packages to repository: /usr/local/poudriere/data/packages/main-default/.real_1728845430 via .latest symlink
[00:00:21] Removing old packages
[00:00:21] Ignored ports: devel/gmake devel/gettext-tools devel/p5-Locale-gettext lang/python311 misc/help2man devel/p5-Locale-libintl print/texinfo dns/libidn2 dns/libpsl ftp/curl
[main-default] [2024-10-13_19h50m09s] [committing] Queued: 10 Built: 0  Failed: 0  Skipped: 0  Ignored: 10 Fetched: 0  Tobuild: 0   Time: 00:00:18
[00:00:21] Logs: /usr/local/poudriere/data/logs/bulk/main-default/2024-10-13_19h50m09s
[00:00:21] Cleaning up
main-default: removed
main-default-n: removed
[00:00:21] Unmounting file systems
root@mowa219-gjp4-zbook-freebsd:~ # pkg iinfo poudriere
poudriere-devel-3.4.99.20240811
root@mowa219-gjp4-zbook-freebsd:~ #
 
… running poudriere options per port presents a better-looking options list. …

Compare the results of these two commands:
  • poudriere options -ns ftp/curl
  • poudriere options -s ftp/curl


1728847047919.pngIgnore the direction to use make config.


pkg_tree curl displays for all ports including curl in its package name.

Hint:

^

Code:
% pkg_tree -v ^curl
curl-8.10.1
|\__ libnghttp2-1.63.0
|\__ libssh2-1.11.0_1,3
 \__ libpsl-0.21.5_1
      |\__ libidn2-2.3.7
      |     |\__ indexinfo-0.3.1
      |      \__ libunistring-1.2
      |            \__ indexinfo-0.3.1
       \__ libunistring-1.2
             \__ indexinfo-0.3.1
%
 
… delete all directories in the options directory.



Thoughts?

If you truly want to remove options, use poudriere-options(8) option -r.

The curl example:

Code:
root@mowa219-gjp4-zbook-freebsd:~ # poudriere options -r ftp/curl
[00:00:00] Working on options directory: /usr/local/etc/poudriere.d/options
[00:00:00] Using ports from: /usr/local/poudriere/ports/default
[00:00:00] Appending to make.conf: /usr/local/etc/poudriere.d/make.conf
[00:00:01] Ports supports: FLAVORS SUBPACKAGES SELECTED_OPTIONS
===> No user-specified options configured for curl-8.10.1
===> Removing user-specified options for curl-8.10.1 and its dependencies
===> No user-specified options configured for curl-8.10.1
===> No user-specified options configured for pkg-1.21.3
…
===> No user-specified options configured for py311-django42-4.2.16
…
===> No user-specified options configured for tex-dvipsk-20240312
===> No user-specified options configured for lua54-5.4.7
root@mowa219-gjp4-zbook-freebsd:~ #

… why does ftp/curl need www/py-django42

I don't know, yet.

It's:
  • present above (no user-specified options configured)
  • present in output from poudriere options -s ftp/curl
  • not present in the dry run at <https://forums.freebsd.org/posts/675748> above
  • not present in a debug dry run poudriere bulk -j main -nvv ftp/curl
 
Code:
% pkg query %ro ftp/curl | grep www/py-django42
%

Would be any of
  • EXTRACT_DEPENDS
  • PATCH_DEPENDS
  • FETCH_DEPENDS
  • BUILD_DEPENDS
  • TEST_DEPENDS
  • indirect dependencies

pkg query %ro shows the origins of below for specified ports/pkgs.
  • LIB_DEPENDS
  • RUN_DEPENDS
 
A step closer, GnuTLS-related:

Code:
root@mowa219-gjp4-zbook-freebsd:/usr/local/poudriere/ports/default/security/p11-kit # make all-depends-list | wc -l
     818
root@mowa219-gjp4-zbook-freebsd:/usr/local/poudriere/ports/default/security/p11-kit # make all-depends-list | grep django
/usr/local/poudriere/ports/default/www/py-django42
root@mowa219-gjp4-zbook-freebsd:/usr/local/poudriere/ports/default/security/p11-kit # cd
root@mowa219-gjp4-zbook-freebsd:~ # poudriere options -ns ftp/curl | grep -e GNUTLS= -e OPENSSL= -e WOLFSSL=
     GNUTLS=off: SSL/TLS support via GnuTLS
     OPENSSL=on: SSL/TLS support via OpenSSL
     WOLFSSL=off: SSL/TLS support via wolfSSL
root@mowa219-gjp4-zbook-freebsd:~ #
 
Back
Top