make run-depends-list-recursive?

Jonathan McKeown j.mckeown at ru.ac.za
Thu Apr 16 12:53:00 UTC 2009


On Thursday 16 April 2009 12:27:04 Mel Flynn wrote:
> But yes, all-depends-list is exactly that, with the provision
> that it does not take changed OPTIONS into account.

That's what I suspected you were saying yesterday, and it seems to be wrong.

Try this (assuming you haven't already configured/installed net/freeradius2 
and security/krb5)

cd /usr/ports/net/freeradius2
make all-depends-list
make config    # select Kerberos
make all-depends-list
make -C /usr/ports/security/krb5 config    # unselect documentation for krb5
make all-depends-list
make -C /usr/ports/security/krb5 rmconfig
make rmconfig

You will get three different lists of dependencies: in the first case, the 
main port (net/freeradius2) has the default OPTIONS and doesn't depend on 
security/krb5 or its dependencies.

In the second case you will find teTeX and its dependencies in the list as 
they are dependencies of krb5 in its default setting.

In the third case, you have changed an OPTION of security/krb5 to remove its 
dependency on teTeX, and net/freeradius2 correctly removes the teTeX 
dependency from its all-depends-list.

This certainly looks like all-depends-list correctly taking account of the 
changed OPTIONS in the target port and all its dependencies.

What *is* a problem is make config-recursive, which doesn't take account of 
any dependencies added as a result of OPTIONS changes made during the 
config-recursive process.

This is relatively easily fixed, as make config-recursive actually runs make 
config-conditional for everything in all-depends-list, so if you keep running 
make config-recursive until nothing happens you can be reasonably sure you've 
dealt with all the unexpected dialogues that might otherwise pop up.

This is worth knowing if you like doing overnight unattended installs and 
don't want to accept default settings (so can't use BATCH=yes). Until I 
discovered it I had immense frustration setting an installation/upgrade 
running only to come back the next day and find a dialogue sitting on the 
screen.

Jonathan


More information about the freebsd-questions mailing list