[clbuild-devel] Recursive search for dependencies

budden budden-lisp at mail.ru
Tue Dec 16 23:55:16 UTC 2008


Hallo David, list

Tuesday, December 16, 2008, 9:30:20 PM, you wrote:

DL> Quoting budden (budden-lisp at mail.ru):
>>   Am I right that "sh clbuild install/update system" will update only
>> direct dependencies of that system and do not recurse dependency tree?
Well, I see I didnt' specify the problem with a sufficient details.
I'm talking about adding new projects which are currently not listed
in clbuild at all and can depend on some yet unlisted libraries.
In the situation, I look at .asd file, see dependencies, try
to identify projects, load the projects (I'm extremely reluctant
to load everything as I'm narrow in time and storage).

DL> "clbuild install" doesn't install systems, it installs projects.
DL> Projects can contain multiple systems.  System dependencies are
DL> transitive and acyclic; project dependencies are not necessarily
DL> transitive and can be cyclic.  Project dependencies always agree with
DL> system dependencies if every project contains only one system.

DL> Please refer to the FAQ at:
DL> http://common-lisp.net/project/clbuild/#faq_dependency_details
The only thing that is unclear (for me) is that this project of calculating
dependencies is runned when we invoke "rebuild-dependencies" (am I
right?). So, if I don't have all projects installed and I am reluctant to install
everything, I have to specify dependencies for my new system manually.
And I can not do it automatically until system is loaded.

So if I have .asd file and dependencies file, I have to traverse one level
of project dependency tree manually.

Well, I see I might confuse you completely. But I tried hard to
explain myself :)

DL> Please explain what your intention is.

DL> If project FOO has a system file foo.asd, and you do 

DL>   $ clbuild install foo
DL> followed by
DL>   CL-USER> (asdf:operate 'asdf:load-op :foo)

DL> the first step is meant to install all projects required for the second
DL> step to work.
You see now that it holds only for system/project which was processed by
rebuild-dependencies already, but not for my new project. So, I can't
know dependencies until I installed project and I can't install
project until I know dependencies.

DL> From your mail I'm not sure whether you are
DL>   a) reporting a bug (i.e. our dependency guessing logic got something
DL>      wrong and the design goal above was violated)
DL> or
DL>   b) requesting a feature (you think that the design goal above isn't
DL>      sufficient)
b)

DL> If you are requesting a change in behaviour, I suggest a command line
DL> argument (say, --follow-auxiliary-dependencies) that joins the
DL> dependencies.  This could be implemented in the shell script.
Yeah, but I didn't want to bother you asking and I was rushing, so I implemented it in
lisp which I know better than shell. Of course, command line switch would be better.

Thanks for fast reply!

-- 
Best regards,
 budden                            mailto:budden-lisp at mail.ru






More information about the clbuild-devel mailing list