portmaster: problem with --packages-build?

Doug Barton dougb at FreeBSD.org
Sun Jun 13 02:19:14 UTC 2010

On 06/12/10 17:10, Alberto Villa wrote:
> On Sunday 13 June 2010 01:40:19 Doug Barton wrote:
>> No hurry for testing, I found some good test cases locally and was
> able
>> to confirm that the new code works to detect this problem so I
> committed
>> it to the ports version (2.29).
> i just saw the e-mail, so i wasn't able to test it before :)

No problem. I initially thought it would be more difficult to fix than 
it actually turned out to be, so I was able to devote some time to 
writing the fix and then regression testing it (the latter part is 
usually the complicated bit).

> i have only one question: what if the port is listed only in build
> dependencies but is installed because i want it installed (of course,
> portmaster cannot know why a port was installed)? will it get
> removed?

The list of ports for --delete-build-only and/or --packages-build (which 
use the same code to build the list, FWIW) is still calculated on each 
portmaster run. So let's say you have gmake installed already, and it is 
a build-only dependency on the current portmaster run. If gmake is up to 
date (i.e., portmaster doesn't need to do anything to it) then it will 
simply be used, and not deleted when you're done. The way the code 
stands now, if you already had it installed (or for that matter, if you 
did not have it installed, but it was a build-only dep for something 
else in the current run) then it would be installed/updated, then with 
--delete-build-only it would be deleted at the end of that portmaster 

To answer your question more directly, there is currently no provision 
for the idea of "this port is a build-only dependency but I do not want 
--delete-build-only to mess with it." The update today doesn't change 
this, it only addresses the issue of not treating something as a 
build-only dep on _this_ run if it is listed as a run dependency for 
something else that is already installed.

I'm not sure that the complexity of the extra code required to exempt 
ports from --delete-build-only is justified. If I were a typical FreeBSD 
user I would probably use the combination of --packages-build and 
--delete-build-only, perhaps along with a local package repo so that I 
could build my own custom versions of those tools that I cared about. As 
long as the packages are up to date, they don't have have to be 
refetched each time you build a port so there is only a small delay when 
the build dep is installed. The reason I don't do this personally is 
that when I'm working on updating the ports that I maintain it's more 
convenient for me to already have the typical tools installed.



[1] There is another case of multiple ports on the command line, such as 
'portmaster thing-that-has-gmake-as-a-build-dep gmake'. In that case, 
portmaster already has code to prevent gmake from being treated as a 
build dep.


	... and that's just a little bit of history repeating.
			-- Propellerheads

	Improve the effectiveness of your Internet presence with
	a domain name makeover!    http://SupersetSolutions.com/

More information about the freebsd-ports mailing list