← Back to team overview

launchpad-dev team mailing list archive

how can we clean up the confusion of sourcecode vs. buildout?

 

Hi all. I've seen a number of developers confused about what packages were managed in sourcecode and what were managed in buildout. I suspect what I see is the tip of the iceberg.

I'd like to offer some immediate help so everyone knows where to look to clarify things for yourself; and I'd like to ask for ideas to make things better.

First the help, in a Q/A format.

Q:
Where do I read about how we set up our buildout stuff for Launchpad?

A:
As of this writing, look in the launchpad source, in doc/buildout.txt.

-------

Q:
How can I find out what we are using via buildout?

A:
- For direct dependencies, look in setup.py (in the top directory of Launchpad). If it is in the "install_requires" argument, then we are getting it from buildout. - For direct and indirect dependencies, look in bin/run (many scripts will do, but I recommend this one). The sys.path will show you everything that we get from eggs (that is, via buildout).

-------

Q:
How can I find out what we are using via sourcecode?

A:
This is a tough one--see the second part of this email, where I ask for help. You SHOULD be able to look at utilities/sourcedeps.conf. This controls what is updated when sources are updated (for instance, via rocketfuel-get). It is maintained manually, so could be behind the times if someone makes a mistake. You CAN recursively find all symlinks in lib/ . They are the canonical answer. Does someone have a quick incantation to do this? You do NOT answer this question by looking in the sourcecode directory. sourcecode is typically a shared resource for all your branches, so it does not necessarily reflect what the current branch is using. It is also not cleaned out by any of our scripts.

I'm happy to put that in a wiki page somewhere or in doc/buildout.txt or wherever. Lemme know.


OK, I'm so nice, I helped you!  Now you help me. :-)

So the second part is this. How can we make this easier to understand and remember? Here are thoughts I've had. I'm not thrilled with them so I'm asking for help.

- We can change link-external-dependencies so that the current behavior of how sourcecode is made is changed to make a .sourcecode. Then it makes a sourcecode, if it doesn't exist, and *only* links in packages there from .sourcecode if they are identified in utilities/ sourcedeps.conf . This makes sourcecode a more canonical representation of what the branch uses.

- We can make ec2test complain if you try to override a branch (-b) that is not known by sourcedeps.conf. That would be very nice, but this feature is not used very often.

- We can continue to make sourcecode have fewer and fewer branches so people don't think about it much if ever. I'm working on this--the branch to put all the zope branches in buildout is in review!--but maybe we shouldn't be waiting for this?

Thanks,

Gary



Follow ups