portmaster is not always recursive

CmdLnKid cmdlnkid at gmail.com
Mon Aug 31 06:09:58 UTC 2009


On Sun, 30 Aug 2009 16:17 -0000, dougb wrote:

> On Sun, 30 Aug 2009, Miroslav Lachman wrote:
>
>> Doug Barton wrote:
>>> Ok, I found the problem, but the bad news is that I don't know what the 
>>> solution is going to be. I've cc'ed ale since what I'm seeing is weird 
>>> behavior by the php5-mcrypt slave port.
>>> 
>>> What portmaster does by default when looking for dependencies is to run 
>>> 'make build-depends-list run-depends-list | sort -u' to get the list of 
>>> things to check. I used to just do all-depends-list by default but users 
>>> complained that it was creating problems by recursing so far down the 
>>> tree.
>> 
>> Does it mean that portmaster checks only first level dependencies unless -t 
>> is given? (Maybe it is good behavior, I am just asking it to be sure that I 
>> understand it well)
>
> That's not exactly right, but it's about 90% right so close enough. :) The 
> discrepancy relates to how individual ports report their dependencies, but 
> for almost all purposes that is correct, yes.
>
>> real world example:
>> If I do `portmaster amavisd-new-2.6.4_1,1` and there will be available 
>> update for archivers/p5-Compress-Raw-Bzip2 but not for dependencies 
>> between, it will not be updated, because it is too deep?
>
> Assuming that the latter is not listed as a dependency by amavisd-new, then 
> no, it will not be updated that way.
>
>> I don't know the exact definition of "slave port", but can it be that there 
>> are 2 types of slave ports?
>> Where one type is for example proftpd-mysql, which conflicts with master 
>> port proftpd (only one of them can be installed)
>> The second type is php5-mcrypt, which is only extension for master port and 
>> cannot be installed alone?
>
> I suspect that you are correct here, but I do not claim comprehensive 
> knowledge of slave ports. :)  I will add that there is at least one more 
> type, e.g., editors/pico-alpine and mail/alpine where the former is a slave 
> of the latter because it uses the same distfiles, same basic OPTIONS, etc; 
> although they install totally different programs.
>
>>> Miroslav, for your specific problem you can add the -t option to 
>>> portmaster to force it to do all-depends-list, which will cause portmaster 
>>> to "see" the apache dependency. Other than that I'm not sure how to 
>>> proceed. I suppose that I could force all-depends-list if MASTERDIR is set 
>>> in a Makefile, but I'm kind of hesitant to do that unless it becomes 
>>> obvious that the problem is more widespread.
>>> 
>>> 
>>> hope this helps,
>> 
>> Yes, it really helps. Now I know my favorite ports mgmt tool better then 
>> before and as more I think about {build|run}-depends-list versus 
>> all-depends-list it seems that current behavior is better. And if someone 
>> wants all-depends-list, there is -t options. So all is fine.
>
> FWIW, there is always the -a option to update everything that needs it.
>
>> Maybe this difference can be explained in portmasters manual. (stating that 
>> normally {build|run}-depends-list is used and only first level of 
>> dependencies are checked/updated and if someone wants really recursive 
>> check, the -t option must be used)
>
> I get two complaints about the manual. The first is that it does not cover 
> enough of the details, the second is that it's too long. I don't know how to 
> make both groups happy. :)  I will think about adding something to the man 
> page about this though.
>

Ideas & road-maps.

1). Make the manual shorter and geared toward uncommon non-technical 
users.
2).   a manual page for advanced topics portmaster-advanced(8)
3). Write a technical manual as you go around the functions in 
portmaster and what they do. portmaster-technical(3)

This would at least keep all groups happy while getting across the real 
features of the ports-mgmt tool in every area. Also allowing ( man -a
portmaster* ) to get it all.

> I should also point out that -t does not mean "really recursive check." 
> Portmaster is always recursive, the difference is not necessarily how deep it 
> goes, it can also be how "wide" it goes as well.
>
>> So the last thought is some new option for portmaster to force reinstall of 
>> all intermediate dependencies between A and E, even if there are no updates 
>> for them.
>
> The -f option already does this.
>
>> Thank you again for you explanation of the problem. It is really 
>> educational to me.
>
> Glad to help.
>
> Doug
>
>

-- 

  - (2^(N-1))


More information about the freebsd-ports mailing list