On 2018-03-11 10:57 -0300, Herbert Fortes wrote:

> Em 10-03-2018 15:24, Sven Joachim escreveu:
>> On 2018-03-10 09:31 -0300, Herbert Fortes wrote:
>>> Em 09-03-2018 17:03, Sven Joachim escreveu:
>>>> On 2018-03-09 15:18 -0300, Herbert Fortes wrote:
>>>>> Hi Sven Joachim,
>>>>>>> My conclusion is that it is very risky to allow such combinations, and
>>>>>>> to rule them out I propose to change the package name of the cdk
>>>>>>> library, say to libcdk5a.  It would then have to build-depend on
>>>>>>> libncurses-dev (>= 6.1+20180210) to ensure that it is linked against
>>>>>>> libncurses6 and not libncurses5.  Of course this can only be uploaded
>>>>>>> to experimental for now, but should go to unstable when the ncurses
>>>>>>> transition starts there.
>>>>> I am OK with changing the name. But libcdk5a does not say 
>>>>> much about why the change.
>>>>> Since the package name will change because of SONAME of 
>>>>> libncurses, I thought to follow the SONAME of the library.
>>>> Well, the SONAME of the cdk library does not change with my proposal.
>>>>> libcdk5-6
>>>> If you like that better than libcdk5a, choose it.  Or any other name,
>>>> it's rather arbitrary anyway.
>>>>> But maybe this will cause misunderstanding. The change is
>>>>> on version 6.1+20180210.
>>>> That's why the build-dependency on libncurses-dev (>= 6.1+20180210) is
>>>> needed.
>>>> I am not sure we understand each other yet, but I'm happy to answer
>>>> questions.
>>> Good! I am searching for a name. And talk about it could
>>> help.
>>> cdk library had problems before (about name), and I belive
>>> the number "5" (cdk SONAME) was the choice to differ from the
>>> other package. That's what I remember.
>>>  - libcdk-java
>>>  - libcdk-perl
>>>  - libcdk5
>>> The "5" was accepted because the SONAME does not change much.
>> The "5" is there because it is the standard convention for shared
>> library packages: if you ship libfoo.so.5 in your package, the package
>> is supposed to be called libfoo5.  See the chapter in the Policy about
>> shared libraries.[1]
>> Now, the "chtype" change in ncurses changes the ABI of the cdk library,
>> and hence the package name must change to not break reverse dependencies
>> (e.g. gphoto2).  Ideally, the SONAME would also change, but this means
>> you would have to invent your own SONAME since upstream did not take it
>> into account.  Therefore I proposed to only change the package name,
>> from libcdk5 to libcdk5a (or any other name, it's really arbitrary).
>> This means that the reverse dependencies have to be upgraded in
>> lock-step, but since there are only three of them (cpm, libcdk-perl and
>> gphoto2), that looks manageable.
> OK. I read what I wanted (SONAME part) and understood why the 
> change. Thanks for that!
> I only managed one SONAME change (libgphoto2), more than a year ago.
> After change the name I must email the reverse_dependencies and
> ask them to use the new package and let the old one die. Is that
> it?

No, reverse dependencies just have to be binNMU'ed.  For cpm and gphoto2
this will happen anyway as part of the ncurses transition, for
libcdk-perl we'll have to ask the release team separately.  But I can
take care of that.

> (new package - add break, replaces)

Or Conflicts+Replaces as in my original patch.

> I also have to deal with the repo name. I created it two years ago.
> Named libcdk5 (libcdk5.git).

It probably should have been named cdk instead, but I would postpone
renaming the source package until the SONAME actually changes.  But
that's up to you.  The downside (if you rename the source package now)
is that the FTP masters may take longer to review it than if there's
just a new binary package.
>>> The number "6" is from libncurses. If the two projects have
>>> a strong link, it could be used. But seeing the two numbers,
>>> which of them refers to what. I can put an explanation on 
>>> debian/README.Debian file. But maybe the name will be changed
>>> more than expected.
>> Well, you could use libcdk5nc6 or something like that to indicate that
>> the package name change is related to libncurses6, but there is no need
>> to explain this in a README.Debian, since shared libraries are usually
>> automatically installed as a dependency of some other package and not
>> for their own merits.
> libcdk5nc6 sounds good to me.

Fine with me, I have attached an updated patch for that new name.


>From 201a8f92b2bfacdc912096a60777693937f3007f Mon Sep 17 00:00:00 2001
From: Sven Joachim <svenj...@gmx.de>
Date: Wed, 7 Mar 2018 19:02:30 +0100
Subject: [PATCH] Rename the library package to libcdk5nc6

The change of the "chtype" data type in libncurses6 means that it is
not safe to have the cdk library and applications using it linked
against different ncurses versions.

To ensure that both the library and the application are linked against
libncurses6 rather than libncurses5, rename the library package and
bump the build-dependency.

Add a lintian override for the resulting
package-name-doesnt-match-sonames warning.
 debian/control                                 | 8 +++++---
 debian/{libcdk5.install => libcdk5nc6.install} | 0
 debian/libcdk5nc6.lintian-overrides            | 3 +++
 debian/{libcdk5.symbols => libcdk5nc6.symbols} | 2 +-
 4 files changed, 9 insertions(+), 4 deletions(-)
 rename debian/{libcdk5.install => libcdk5nc6.install} (100%)
 create mode 100644 debian/libcdk5nc6.lintian-overrides
 rename debian/{libcdk5.symbols => libcdk5nc6.symbols} (99%)

diff --git a/debian/control b/debian/control
index 194ad46..85dd433 100644
--- a/debian/control
+++ b/debian/control
@@ -3,15 +3,17 @@ Section: libs
 Priority: optional
 Maintainer: Herbert Parentes Fortes Neto <h...@debian.org>
 Standards-Version: 4.1.3
-Build-Depends: debhelper (>= 9), libncurses5-dev, pkg-config
+Build-Depends: debhelper (>= 9), libncurses-dev (>= 6.1+20180210), pkg-config
 Homepage: http://invisible-island.net/cdk
 Vcs-Git: https://salsa.debian.org/debian/libcdk5.git
 Vcs-Browser: https://salsa.debian.org/debian/libcdk5
-Package: libcdk5
+Package: libcdk5nc6
 Architecture: any
 Multi-Arch: same
 Depends: ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libcdk5
+Replaces: libcdk5
 Description: C-based curses widget library
  CDK stands for "Curses Development Kit". CDK sits on top of the curses
  library and provides 22 ready to use widgets for rapid application
@@ -22,7 +24,7 @@ Description: C-based curses widget library
 Package: libcdk5-dev
 Architecture: any
 Section: libdevel
-Depends: libcdk5 (= ${binary:Version}), libncurses5-dev, ${misc:Depends}
+Depends: libcdk5nc6 (= ${binary:Version}), libncurses5-dev, ${misc:Depends}
 Description: C-based curses widget library (development files)
  CDK stands for "Curses Development Kit". CDK sits on top of the curses
  library and provides 22 ready to use widgets for rapid application
diff --git a/debian/libcdk5.install b/debian/libcdk5nc6.install
similarity index 100%
rename from debian/libcdk5.install
rename to debian/libcdk5nc6.install
diff --git a/debian/libcdk5nc6.lintian-overrides b/debian/libcdk5nc6.lintian-overrides
new file mode 100644
index 0000000..487f722
--- /dev/null
+++ b/debian/libcdk5nc6.lintian-overrides
@@ -0,0 +1,3 @@
+# library package had to be renamed for libncurses6 transition
+# see https://bugs.debian.org/892280
+libcdk5nc6: package-name-doesnt-match-sonames libcdk5
diff --git a/debian/libcdk5.symbols b/debian/libcdk5nc6.symbols
similarity index 99%
rename from debian/libcdk5.symbols
rename to debian/libcdk5nc6.symbols
index 962abd4..5608631 100644
--- a/debian/libcdk5.symbols
+++ b/debian/libcdk5nc6.symbols
@@ -1,4 +1,4 @@
-libcdk.so.5 libcdk5 #MINVER#
+libcdk.so.5 libcdk5nc6 #MINVER#
  Beep@Base 5.0.20161120
  CDKDEBUG@Base 5.0.20161120
  CDKVersion@Base 5.0.20161120

Reply via email to