[maemo-developers] Autobuilder repository priority ?

From: Attila Csipa maemo at csipa.in.rs
Date: Sat Oct 31 20:11:35 EET 2009
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).

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. 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.


More information about the maemo-developers mailing list