On 12/5/06, Jonas Karlsson <[EMAIL PROTECTED]> wrote:
> On Tue, 05 Dec 2006 23:39:47 +0100, Hisham Muhammad <[EMAIL PROTECTED]>
> wrote:
>
> > On 12/5/06, André Detsch <[EMAIL PROTECTED]> wrote:
> >> On 12/5/06, Jonas Karlsson <[EMAIL PROTECTED]> wrote:
> >> > I'm just trying to build Xorg 7.1 and one thing that strikes me is
> >> that I
> >> > think that Compile spend more time at symlinking (and running
> >> ldconfig)
> >> > after each sub app has compiled then actully compiling the apps.
> >> Wouldn't
> >> > it be possible to set PATH and LD_LIBRARY_PATH to include the actual
> >> > directory, /Programs/Foo/1.2/bin and /Programs/Foo/1.2/lib
> >> respectively,
> >> > during the compilation of a meta recipe, instead of running
> >> symlinkprogram
> >> > each time?
> >>
> >> Sounds a good idea. Can you implement this and test with the Xorg
> >> recipe? Please ensure the changes do not affect regular (non-meta)
> >> recipes.
> >
> > Won't work. PATH and LD_LIBRARY_PATH won't be enough. The proto stuff
> > installs headers. Then you'll have to handle C_INCLUDE_PATH. And if
> > something uses C++, then CPLUS_INCLUDE_PATH and so on and so on and so
> > on. It's hackish. And then some other recipe in the future may look
> > for share/ stuff which won't work unless properly symlinked. Doing
> > this is asking for meta-recipes to break in mysterious ways.
> >
> "and so on and so on and so on."
> I can only see that there are six variables to take care of (PATH,
> MANPATH, INFOPATH, LD_LIBRARY_PATH, C_INCLUDE_PATH and CPLUS_INCLUDE_PATH)
> of which two have to have two entries bin/sbin and lib/libexec.

No, the set of variables is unbounded: think of PkgConfig, Python,
etc. Potentially, any program can create an environment variable that
establishes a path dependency that can be necessary in a later step.

> Of cource shared messes things up, but one can choose only to symlink that.
>
> > Instead, add a new flag "do_symlink=no" and set that on sub-recipes
> > that you can test and ensure that they don't need to be symlinked in
> > an intermediate step. This is the safest approach and will result in
> > the desired speedups. For example, you can skip symlinking on all
> > proto's and only symlink in the last one, so that when libs are
> > compiled, the proto headers are linked (yes, this depends on a proper
> > order for includes in the main recipe, but order is already relevant).
> >
> You're funny. :)
> You want me to go through 200+ recipes one by one and see which don't need
> symlinking and which needs it? Perhaps if I got paid ;)

No, I don't. Sorry if I phrased it badly -- I should have said "the
best approach would be for one to set that on sub-recipes (etc.)". I
didn't mean to say "go and do it", I meant to say "if one were to do
it, this is how I think it's the right way to be done".

In another email, you suggested for sub-recipes to have 200+
hand-maintained Dependencies files, while we removed Dependencies
files from sub-recipes precisely because of the maintenance burden.
That's the difference between a "wouldn't it be nice if" idea and
something that can be managed in practical terms. Working on the Xorg
recipe set is a huge amount of work and I'm well aware of that -- I
hold memories of writing custom scripts that read the HTML from
x.org's directory listings and created the original recipes. André has
also put a lot of work on them. Speeding up the compilation, while not
essential, would be a nice addition, but any tweak made to those
recipes really is a lot of work. The do_symlink=no feature I suggested
could be used even if it was not applied to the maximal valid set of
subrecipes (using it in protos alone could be a noticeable speed-up).
But like I said, it's a non-essential optimization (and the
variable-tweaking approach, on the other hand, is error-prone). Your
general observation that some of the symlinking can be skipped,
though, remains a valid one.

-- Hisham
_______________________________________________
gobolinux-devel mailing list
gobolinux-devel@lists.gobolinux.org
http://lists.gobolinux.org/mailman/listinfo/gobolinux-devel

Reply via email to