[oe] Staging - time to end the current mess?

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Mon Nov 2 15:12:24 UTC 2009


2009/11/2 Koen Kooi <k.kooi at student.utwente.nl>:
> On 02-11-09 14:43, Richard Purdie wrote:
>>
>> At OEDEM two years ago I proposed radically altering the way staging
>> worked. For those that don't remember the bad old days, the staging
>> directory layout didn't match that of the target file system meaning
>> every recipe needed a custom do_stage and things were a mess.
>>
>> We changed the layout allowing the use of the gcc/binutils sysroot
>> options and also started widespread use of autotools_stage_all and I'd
>> say things look much improved compared to how they were.
>>
>> Anyone who has looked at the packaged-staging code will probably agree
>> there is still a way to go though - its horrendously complicated. We
>> also do a lot of duplication. I'd like to propose a new simple way of
>> doing things. We'd have the following work flow:
>>
>>
>> [...]
>> do_compile - up to here all as usual
>> do_install - Everything installs into a DESTDIR (including -native)
>> do_package - Takes a copy of the DESTDIR, applies any .la/.pc mangling
>>              then splits into packages as usual
>> do_populate_staging - Takes a copy of the DESTDIR, mangles, installs
>>              into staging and creates staging packages from this
>>
>> Firstly, does any disagree with this approach or can we all agree its a
>> nice objective?
>
> Can we make the mangling a seperate tasks? I tend to do the mangling in
> do_compile_append to be able to do builds *on* the target as well.
>
>> Pros:
>>
>> * Only one "make install"
>> * We can start to work out the differences between do_install and
>>   do_stage and minimise them (there should be none bar .la mangling)
>> * Cleaner and simpler do_stage step
>> * Packaged-Staging becomes much simpler
>> * Builds should be faster as staging timestamp snapshots are not
>>   required and staging lock taking should be minimal.
>>
>> Cons:
>>
>> * Very different to what we have now - how to get there?
>> * Likely to be some breakage in any transition
>
> And
>
> * 'make install' doesn't actually work properly for lots of packages (you
> know, the ones with handcrafted makefiles)
>
> But we can solve that by putting the custom do_stage() methods for those in
> do_install(), right?

I'm in favour of the proposal.
If not breaking things is important maybe we can call the stage
differently and transfer packages from the old to the new.
Perhaps not too desirable as this gives a transition period that
probably never ends.

Wrt the packages were make install does not properly work:
I would expect for packages where it mostly matters (libs etc) the
install to be proper.

And if make install does not work properly the desired solution is
(imho) not to repair it in do_stage or do_install, but instead come up
with a patch for the Makefile (and preferably submit it to the package
to get it repaired more permanently.

Frans.

>
>
>> I really like the idea in principle, in practise its hard to get there
>> incrementally without breaking things. I'm trying to come up with some
>> code which does that and I'm hoping to have something for OEDEM.
>>
>> For now I'd like to ask if there is agreement we need to do this and
>> support to make this happen?
>
> You have my agreement.
>
> regards,
>
> Koen
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>




More information about the Openembedded-devel mailing list