[Bug 264454] Do not build TEST_DEPENDS in case NO_TEST is set and do not run tests
Date: Fri, 10 Jun 2022 08:10:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264454 Stefan Eßer <se@FreeBSD.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|New |Open --- Comment #11 from Stefan Eßer <se@FreeBSD.org> --- (In reply to Bjoern A. Zeeb from comment #9) > You go by assumptions of what people are doing. Yes, given no further information I do have to make assumptions. > I do not do port upgrades; in fact I most often never do apart from select > individual bits which I do not handle this way. > I build coherent image (tailored distribution) after FreeBSD version bumps > on main at times (I am not even doing every one of them). You cannot expect bsd.port.mk to provide the high level functionality for every use case. I have managed the port management tools: they do exactly that - provide user oriented and configurable functionality. But you do not have to use a tool like portmaster. Something as simple as the following script should be sufficient to build packages for a specified set of ports without fetching or building anything not required: ---------------------------- #!/bin/sh -e WANTED=" shells/bash www/py-arxiv " make_wanted () { echo "$WANTED" | while read dir; do if [ -n "$dir" ]; then make -C $dir "$@" fi done } cd /usr/ports make_wanted clean REQUIRED=$(make_wanted run-depends-list | sort -u) for dir in $REQUIRED; do make -C $dir package done ---------------------------- This will create a consistent set of packages including all run dependencies. One possible issue with such a simple approach is that it expects all ports to be built for just the default flavor. FLAVOR support has been implemented in the ports system a way that is very unfriendly to any tool except poudriere. The port management tools provide the above shown functionality (and a lot more) in a way that optimizes the procedure and that can deal with non-default flavors. Trying to get all functionality for all possible non-standard use-cases into bsd.port.mk is the completely wrong approach. This Makefile provides a set of primitive functions that can be used in scripts like the example above to implement any special case. It is much easier to deal with such use-cases in shell scripts (or other script languages) than in a Makefile. Makefiles implements target driven functionality, scripts implement procedures. The *-recursive function in bsd.port.mk have been implemented at a time when there were no port management tools (and not even the pkg command and PKGDB). They do not serve your use case well and probably never will. I have shown other examples where functionality at that level is not provided by bsd.port.mk in a way that is useful for tasks like those you want it to achieve. What you are doing is a typical use-case for poudriere. It builds packages in a way that guarantees their consistency and always in a clean environment, not influenced by any ports already present on the base system. -- You are receiving this mail because: You are on the CC list for the bug.