2009/8/31 Marius Vollmer <marius.voll...@nokia.com>:
> ext Ed Bartosh <bart...@gmail.com> writes:
>
>> As I already said building in a proper order is already solved task.
>> There is no need to upload packages in build order if it can be done
>> automatically. It will only create extra job for developers.
>
> Here is something to consider:
>
> Source packages produce binary packages and they have dependies on
> binary packages.  If you have a set of source packages, you need to
> order them so that any source package that has a dependency on a binary
> package is build after the source package that produces that binary.
> This is the obvious part.
>
> The interesting bit is this: Binary packages have dependencies on other
> binary packages.  If you depend on a binary package that depends on
> another binary package, you also indirectly depend on that other
> package.  This means that when ordering source packages, we need to look
> at all direct _and_indirect_ dependencies it has on binary packages, not
> just the direct dependencies.
>
True.

> I think our internal buildbot (who does order source packages by their
> dependencies) only looks at the direct dependencies.
>
Yes. And I'm going to use that code in autobuilder without
redesigning. At least now. Later on I might consider to implement
analyzing binary dependencies, but it will happen only if it's really
needed. I doubt that this can be showstopper for first implementation
of multiple package builds.

> Now, there is a slight complication: dependencies between binary
> packages are computed at build-time.  That is, they are not known before
> actually building the binary package.  The problem is still solveable if
> we interleave building with sorting: I.e., we start with an incomplete
> graph of dependencies (that contains all source packages and the binary
> packages they produce as nodes, the dependencies from source to binary
> as arrows, but not the dependencies between binary packages) and start
> building those source packages that do not have any dependencies on
> other packages in the graph.  Then we look at the packages that have
> just been built and update the graph with the new dependencies.
>
> Then there are cycles of dependencies, of course, or more correctly,
> stronly connected components in the dependency graph.  Absent any hints
> in the source packages themselves, these strongly connected components
> need to be broken up by humans, I think.
>
Thank you for the comments&suggstions. It definitely make sense to
implement if we're talking about perfect build system. However for me
it doesn't sound like thing to do right now.

-- 
BR,
Ed
_______________________________________________
maemo-developers mailing list
maemo-developers@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-developers

Reply via email to