launchpad-dev team mailing list archive
-
launchpad-dev team
-
Mailing list archive
-
Message #00425
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