[maemo-developers] Autobuilder repository priority ?

From: Ed Bartosh bartosh at gmail.com
Date: Sun Nov 1 00:35:08 EET 2009
2009/10/31 Attila Csipa <maemo at csipa.in.rs>:
> On Saturday 31 October 2009 14:49:24 Ed Bartosh wrote:
>> > is IMHO that the repository priorities seem to be wrong. The autobuilder
>> > should be using the highest version in the TOP PRIORITY repository that
>> > satisfies a dependency to avoid breakage because of unstable stuff in
>> > -devel and because otherwise a package can't be promoted without dragging
>> > other folks' packages with them. Thoughts ?
>> The reason of this is that apt designed so that it will always install
>> higher possible version of package. It's actually rather good than
>> bad. Imagine what would happen if it would work another way. No new
>> python-dbus ever :)
> This is not entirely correct (and definitely not recommended in our case of the
> autobuilder). Apt uses priorities (both repository and package level
> priorities can be defined, 'pinned') to decide which package to use to satisfy
> a dependency, and only if the priorities are equal does it base the choice on
> version number.
> Why is the current (same-priority, version only) approach bad ?
> Say, my app depends on python-dbus. I test it with version A, currently in the
> SDK and it works just fine. I upload and promote my app. All is well. However,
> later, the pymaemo team uploads a newer, experimental B version into -devel.
> From that point on I am NO LONGER ABLE to reliably update my application nor
> promote it (this actually happened to me, my stuff compiles in SDK, but not in
> the autobuilder for this very reason).

However there can be another situation: SDK version of python-dbus is
buggy and you can't use it with your application. You would have to
wait until new fixed version of python-dbus reaches high priority repo
to be able to build your application with it. Not so good for
application developer, either. I don't want to say that current
uproach is the best, just want to show you another side of the

> But you can specify a fixed version dependency (the one in SDK and extras), you
> say ?
> But THEN I get to the problem of no updates. If bugs get squashed in the
> -devel version of the library I'm using, the user will never be able to
> upgrade to it, as my package is insisting on the old version (and the package
> manager wisely rather skips updates than removing already installed packages).
> Ubuntu and Debian solve this problem by advising different repository
> priorities. Stable has a highest priority, Testing is lower and Unstable is
> lowest. If there is a package in Stable that satisfies my requirement, that's
> the one that should be used.
Are you sure it works this way? I thought that packages are built with
dependencies from unstable in Debian, just like they're built against
extras-devel in Maemo.

> But then it will never get updated, you say ?
> Wrong ! Remember what I said up there - if the priority is the same, the
> version decides. So, the moment a new version of the dependency reaches
> *Stable*, it will become the highest priority and will get updated. It's a
> recommendation that dependencies should be REALISTICALLY listed. You should
> not depend on a high version number just because it's new or even because it's
> the one bundled on the system (!). You should depend on the minimal version
> that provides the actual functionality you require.
> Hope my problem is a bit more clear now.
It was clear from your previous mail.

Actually python-dbus is not very good example. It's not only SDK
package. I might be wrong but I think it's included into PyMaemo
releases and is delivered through Extras. Nokia included it into SDK,
but this is a special case.

SDK packages shouldn't be uploaded to extras-devel at all. There are
plans to implement checks on autobuilder side to prevent this.

More information about the maemo-developers mailing list