Bug#367853: libdb transition policy?

2006-05-30 Thread DINH Viêt Hoà

On 30 May 2006, at 12:50, Gerfried Fuchs wrote:


Hi!

 Sorry for late response.

* "Nikita V. Youshchenko" <[EMAIL PROTECTED]> [2006-05-24 12:10]:
However, contrary to what the NM templates suggest, symbol  
versioning
is not a cure-all for all ABI incompatibilities.  If libetpan  
returns
a DB_ENV * in its API, you need to port[1] all its dependencies  
to the

new Berkeley DB version.


No, libetpan uses libdb only internally, and does not export it.

So I guess the question is to people who maintain etpan-ng and
sylpheed-claws-gtk2 - is it safe for your packages if I will  
upload new
version of libetpan (without soname change or package name change)  
that

will link against libdb4.4?


 I don't know if anyone has tried to, but I spoke to Hoa (= upstream)
about the thing, and it was like I expected: libetpan uses libdb  
for its

cache files. If it can't read them (like, b0rked file, or incompatible
old db file) it would get regenerated anyway. So there is no
compatibility problem with changing the libdb in libetpan at all.


In fact, I checked the code and it does not this, the database won't  
be regenerated but that might be a enhancement to implement in  
libetpan. Do we need a release to fix this ?

That means that cache files must be deleted by the user.

--
DINH Viêt Hoà




Bug#367853: libdb transition policy?

2006-05-30 Thread Nikita V. Youshchenko
>  Have fun with updating the library, it won't affect depending packages.
> :) Some times are that easy to solve, you know?

Ok, will upload today :)


pgpIuC2az1vuQ.pgp
Description: PGP signature


Bug#367853: libdb transition policy?

2006-05-30 Thread Gerfried Fuchs
Hi!

 Sorry for late response.

* "Nikita V. Youshchenko" <[EMAIL PROTECTED]> [2006-05-24 12:10]:
>> However, contrary to what the NM templates suggest, symbol versioning
>> is not a cure-all for all ABI incompatibilities.  If libetpan returns
>> a DB_ENV * in its API, you need to port[1] all its dependencies to the
>> new Berkeley DB version.
> 
> No, libetpan uses libdb only internally, and does not export it.
> 
> So I guess the question is to people who maintain etpan-ng and 
> sylpheed-claws-gtk2 - is it safe for your packages if I will upload new 
> version of libetpan (without soname change or package name change) that 
> will link against libdb4.4?

 I don't know if anyone has tried to, but I spoke to Hoa (= upstream)
about the thing, and it was like I expected: libetpan uses libdb for its
cache files. If it can't read them (like, b0rked file, or incompatible
old db file) it would get regenerated anyway. So there is no
compatibility problem with changing the libdb in libetpan at all.

 Have fun with updating the library, it won't affect depending packages. :)
Some times are that easy to solve, you know?

 So long,
Alfie
-- 
So ist das Leben eben: Es muss Beben geben, ab und zu.
Noch eben standst Du in der Sonne -- uuh, da kommt der Regen
  -- Seeed, "Tide Is High"


signature.asc
Description: Digital signature


Bug#367853: libdb transition policy?

2006-05-24 Thread Steve Langasek
On Wed, May 24, 2006 at 07:59:48AM +0200, Florian Weimer wrote:

> > Why that? It would only affect packages that (correctly or wrongly) also
> > depend on libdb4.2. (And libdb4.2 unfortunatly doesn't have versioning,
> > otherwise, it wouldn't be any issue; lidb4.3 and libdb4.4 are better in
> > that regard.)

> Berkeley DB 4.2 was compiled such that every exported symbol ends with
> "_4002".  Have a look at:

>   $ readelf -sW /usr/lib/libdb-4.2.so  | grep -v _4002

> This means that even though it does not use symbol versioning, it can
> coexist with other versions in the same process image.

> However, contrary to what the NM templates suggest, symbol versioning
> is not a cure-all for all ABI incompatibilities.  If libetpan returns
> a DB_ENV * in its API, you need to port[1] all its dependencies to the
> new Berkeley DB version.

Then again, if libetpan returns a DB_ENV * in its API, it deserves a special
award for retarded library design.

Happily, it doesn't do this.

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
[EMAIL PROTECTED]   http://www.debian.org/


signature.asc
Description: Digital signature


Bug#367853: libdb transition policy?

2006-05-24 Thread Nikita V. Youshchenko

> * Andreas Barth:
> > Why that? It would only affect packages that (correctly or wrongly)
> > also depend on libdb4.2. (And libdb4.2 unfortunatly doesn't have
> > versioning, otherwise, it wouldn't be any issue; lidb4.3 and libdb4.4
> > are better in that regard.)
>
> Berkeley DB 4.2 was compiled such that every exported symbol ends with
> "_4002".  Have a look at:
>
>   $ readelf -sW /usr/lib/libdb-4.2.so  | grep -v _4002
>
> This means that even though it does not use symbol versioning, it can
> coexist with other versions in the same process image.
>
> However, contrary to what the NM templates suggest, symbol versioning
> is not a cure-all for all ABI incompatibilities.  If libetpan returns
> a DB_ENV * in its API, you need to port[1] all its dependencies to the
> new Berkeley DB version.

No, libetpan uses libdb only internally, and does not export it.

So I guess the question is to people who maintain etpan-ng and 
sylpheed-claws-gtk2 - is it safe for your packages if I will upload new 
version of libetpan (without soname change or package name change) that 
will link against libdb4.4?

Nikita


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#367853: libdb transition policy?

2006-05-24 Thread Florian Weimer
* Andreas Barth:

> Why that? It would only affect packages that (correctly or wrongly) also
> depend on libdb4.2. (And libdb4.2 unfortunatly doesn't have versioning,
> otherwise, it wouldn't be any issue; lidb4.3 and libdb4.4 are better in
> that regard.)

Berkeley DB 4.2 was compiled such that every exported symbol ends with
"_4002".  Have a look at:

  $ readelf -sW /usr/lib/libdb-4.2.so  | grep -v _4002

This means that even though it does not use symbol versioning, it can
coexist with other versions in the same process image.

However, contrary to what the NM templates suggest, symbol versioning
is not a cure-all for all ABI incompatibilities.  If libetpan returns
a DB_ENV * in its API, you need to port[1] all its dependencies to the
new Berkeley DB version.

[1] A simple recompilation may not be enough because a new Berkeley DB
version usually changes the API in slight ways.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#367853: libdb transition policy? (Was: Re: Bug#367853: libetpan: Please consider transitioning to libdb4.4)

2006-05-23 Thread Andreas Barth
* Nikita V. Youshchenko ([EMAIL PROTECTED]) [060523 17:22]:
> However, if I will build library against libdb4.4 instead of libdb4.2, this 
> will probably break any binaries built against the library - both packaged 
> and local.

Why that? It would only affect packages that (correctly or wrongly) also
depend on libdb4.2. (And libdb4.2 unfortunatly doesn't have versioning,
otherwise, it wouldn't be any issue; lidb4.3 and libdb4.4 are better in
that regard.)

AFAICS, this is only the case with etpan-ng. So, perhaps a conflict
between your new version and the current version of etpan-ng and an
upload of a changed version of etpan-ng (with a conflict to the current
version of libetpan) could help? Gerfried, what do you think?


Cheers,
Andi
-- 
  http://home.arcor.de/andreas-barth/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#367853: libdb transition policy?

2006-05-23 Thread Nikita V. Youshchenko

> * Nikita V. Youshchenko:
> > However, if I will build library against libdb4.4 instead of
> > libdb4.2, this will probably break any binaries built against the
> > library - both packaged and local.
>
> What kind of interface does libetpan expose?  Based on the package
> description, I wouldn't expect the library to export any Berkeley DB
> objects at all.

Library internally uses libdb (to maintain mail cache, and probably for 
other things also), and is currently linked against libdb4.2. So the issue 
exists.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#367853: libdb transition policy?

2006-05-23 Thread Florian Weimer
* Nikita V. Youshchenko:

>> * Nikita V. Youshchenko:
>> > However, if I will build library against libdb4.4 instead of
>> > libdb4.2, this will probably break any binaries built against the
>> > library - both packaged and local.
>>
>> What kind of interface does libetpan expose?  Based on the package
>> description, I wouldn't expect the library to export any Berkeley DB
>> objects at all.
>
> Library internally uses libdb (to maintain mail cache, and probably
> for other things also), and is currently linked against libdb4.2. So
> the issue exists.

Berkeley DB uses symbol versioning, so I don't think changing the DB
version will affect the library ABI.

You need to devise a procedure for upgrading the database
environments, of course.  But this is completely separate from soname
issues.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#367853: libdb transition policy?

2006-05-23 Thread Florian Weimer
* Nikita V. Youshchenko:

> However, if I will build library against libdb4.4 instead of
> libdb4.2, this will probably break any binaries built against the
> library - both packaged and local.

What kind of interface does libetpan expose?  Based on the package
description, I wouldn't expect the library to export any Berkeley DB
objects at all.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#367853: libdb transition policy? (Was: Re: Bug#367853: libetpan: Please consider transitioning to libdb4.4)

2006-05-23 Thread Nikita V. Youshchenko
[CCing to -devel and to people who maintain packages that depend on 
libetpan]

> Package: libetpan
> Severity: wishlist
>
>
> Hi,
> currently several versions of the berkeley db libraries are used in the
> archive: libdb[4.2,4.3,4.4].
> Please consider upgrading to libdb4.4 in order to ship etch with fewer
> versions of this library.

Thank you for pointing this.

However, if I will build library against libdb4.4 instead of libdb4.2, this 
will probably break any binaries built against the library - both packaged 
and local.

Asking upstream to change soname is IMO not an option in this case because 
libdb transition is debian internal activity, and upstream has nothing to 
do with it.

So how to handle this? Change soname (making it different from upstream)?

Reading Library Packaging guide [1] could not point me to any particular 
solution.

Btw, I guess the same situation is with other packages also - maybe there 
is some policy around this particular transition?

Nikita

[1] http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]