soname change policy proposal

Ville Skyttä ville.skytta at iki.fi
Tue Jun 27 08:55:45 UTC 2006


On Tue, 2006-06-27 at 09:42 +0200, Hans de Goede wrote:

> I've been thinking about this for a while and I think its time for a 
> brain dump, so here is a first shot at a soname change policy:

My opinions/comments below:

0) Try hard to avoid incompatible upgrades within non-devel distro
branches.  Note: this is not limited to library sonames, but to all
packages!  If you're convinced that it doesn't make sense in the case at
hand, then:

> 1b) If an update causing a soname change will only be build for devel
>   a compat package is not mandatory. In this case however other packagers
>   must be warned, with the warning containing a way for them to get the
>   new version.

This warning must be posted in public, to the fedora-maintainers mailing
list.

>  After the warning one must wait 7 days minimum before the
>   new version may be build.

7 days is too much.  If Core devel is not in the post-last-testX freeze
before the next release, 1 day is enough.  If Core devel is in that
freeze, rules for released distro branches apply to devel too.
Example: according to the current
http://fedoraproject.org/wiki/Core/Schedule, the final post-last-testX
freeze would be 23 Aug - 27 Sep.

For released branches, we assume that a smoothly working compat-foo has
been already created before the incompatible upgrade is pushed and it
has stayed in a review for a little while anyway.  So there's no wait
period, but the notice must be posted to the fedora-maintainers list
when the new compat package is posted for review, and the review bug
number is included in that notice.

> 2) When a compat package must be created there are 2 possible scenarios.
>   When the soname is changed the ABI is changed, however sometimes the
>   API is not changed or kept compatible. When the API is not changed then
>   the compat package must not come with a -devel subpackage and the quick
>   and dirty method described below may be used. When the API is changed
>   the compat package is concidered a new package and must go through the
>   review process as usual, in this case the compat-package must come with
>   a -devel subpackage.

All compat-* need to go through a review.  Shipping compat-*-devel is
discouraged, and in addition to the above, may be done only if there are
existing packages in FC+FE which will actually have to use it (where
"have to" expands to "a simple rebuild against the new version is not
enough").

>   -other packages using the package can easily be fixed to compile and
>    run with the new version, then

Enumerating "other packages" is not possible.

> 2b) [...]

2c) Only one compat-foo per foo by default, no automatic compat-foo10,
compat-foo11, compat-foo12 proliferation.  More than one compat-foo<X>
per released distro branch requires FESCO approval.

>   * Create a Review request for this and approve it yourself

-1, all new packages need to go through the usual review process, and
compat-foo is a new package, even if it rises from the ashes and is
reintroduced in a new distro branch when it existed for earlier ones but
not yet for the new.

> Well thats it I hope verybody likes it and FESco can vote on this 
> sometime soon :)

Open issues:

- Q: How do compat-<foo> become purged on distro upgrades?  A: New
distros should under normal circumstances start with no compat-*
packages and packages that did have compat-* ones in earlier distros
must have appropriately versioned "Obsoletes: compat-foo<major> < V-R"
for each such compat (usually only one).  Ditto for
devel/compat-foo-devel.  If an obsoleted compat-foo has to be
reintroduced to the new branch, the corresponding Obsoletes needs to be
dropped at that point, and an update pushed for the new main package at
the same time as the new compat package.

- Should compat-foo<major> = $ver-$rel have "Provides: foo = $ver-$rel"?
What about "Provides: compat-foo = $ver-$rel"?  If not, breakage is
likely if packages need to use something else than the autogenerated
library/soname dependency (eg. for versioning not adequately
accomplished through sonames).  What about compat-foo<major>-devel <->
"Provides: foo-devel = $ver-$rel" and "Provides: compat-foo-devel =
$ver-$rel"?  There have been some depsolver issues in the past with
setups like this, dunno if the world has been fixed since.

> Notice that I have no direct interest in this,

Everyone does... ;)




More information about the fedora-extras-list mailing list