[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Improving in-place upgrades of Ada packages from Lenny to Squeeze



Jacob Sparre Andersen writes:
> David Kalnischkies wrote:
>> 2010/5/31 Ludovic Brenta <ludovic@ludovic-brenta.org>:
>
>>> Option 1: upload a new package "gnat" that Breaks: all -dev
>>> packages that were present in Lenny but are no longer present in
>>> Squeeze. This however does not really help apt, or the user,
>>> discover the new replacement packages.
>>>
>>> Option 2: change each new -dev package so that it Breaks: its
>>> predecessor.  For example, let libgtkada2.14.2-dev Break:
>>> libgtkada2.8.1-dev.
>>
>> As far as i understand can the old lib-packages not be used with
>> the new gnat. Right?
>
> Yes.
>
>> If so i would say gnat should Break them.  Breaking them in the
>> new-libs will not help as the new-libs still need to be installed to
>> get the Breaks effect - and they are broken before.
>
> OK.
>
>> With the break you can force the update of old-libs, which
>> could depend in their new version on the new-libs.

OK, I just tried that (in a local repository).  Having gnat break all
the -dev packages in Lenny does not help; the broken packages are marked
as such in aptitude but not removed by default.  Worse, gnat is now
marked as broken too (without the Breaks: it is not).  Even if I press
'+' on gnat, this still does not cause any broken packages to be
removed; I must mark them all for removal manually with '-'.  So we're
back to square one.

>> I don't see another route to install the new-libs, but 1. Is this
>> really needed? If the user needs them they are an apt-get install (or
>> similar) away. new-lib isn't a drop-in replacement for old-lib (or?)
>> and (s)he therefore needs to learn a new way anway?

At the very least, the user must recompile their applications.  But you
are correct that since the aliversion changed, chances are high that the
user must also review the semantic changes between the old and the new
libs.  Luckily the compiler and the rules of the Ada language make it
very easy to discover incompatibilities at compile time.

> In most cases new-lib is a perfect replacement for old-lib, so getting
> new-lib installed where old-lib was installed is definitely preferable
> to have to install it manually.

I agree but having them uninstalled by default is less bad than having
them broken by default.

>> 2. the old-libs will stay installed in at least of the form of a
>> transitional package in oldlibs as at least apt/lenny has no support
>> for disappear packages so this trick can't be used (not sure about
>> dpkg, aptitude uses apt facility in this regard, so also no support).
> 
> This is ugly, but not horrible.

Does apt/squeeze have support for disappearing packages?

Thanks for your help so far; any other ideas anyone?

Currently I've resorted to writing a (yes unpublished) user's guide in
the Debian Policy for Ada that instructs how to mark all old Ada -dev
packages for removal and to mark all new ones for installation.
Manually :(

-- 
Ludovic Brenta.


Reply to: