Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-07-24 Thread Adam D. Barratt
On Fri, 2010-07-16 at 15:59 +0100, Julien Cristau wrote:
> On Thu, Jul  1, 2010 at 10:01:27 +0200, Bastien ROUCARIES wrote:
> 
> > tags 587227 + upstream
> > tags 587227 + fixed-upstream
> > thanks
> > 
> > Upstream do a patch and commit will appear on svn this week end
> > 
> What's up with this?  Should we revert to 6.6.0.x with an epoched upload
> in sid?

Ping?

Adam



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-07-16 Thread Julien Cristau
On Thu, Jul  1, 2010 at 10:01:27 +0200, Bastien ROUCARIES wrote:

> tags 587227 + upstream
> tags 587227 + fixed-upstream
> thanks
> 
> Upstream do a patch and commit will appear on svn this week end
> 
What's up with this?  Should we revert to 6.6.0.x with an epoched upload
in sid?

Cheers,
Julien


signature.asc
Description: Digital signature


Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-07-01 Thread Bastien ROUCARIES
tags 587227 + upstream
tags 587227 + fixed-upstream
thanks

Upstream do a patch and commit will appear on svn this week end

Thank

Bastien



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Julien Cristau
On Mon, Jun 28, 2010 at 19:32:28 +0200, Bastien ROUCARIES wrote:

> Do you know how to mangle name ? upstream whish to get a list of clear
> name symbol
> 
*sigh* I don't really have time for c++ 101 and libraries 101.

Cheers,
Julien


signature.asc
Description: Digital signature


Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Julien Cristau
On Mon, Jun 28, 2010 at 18:45:31 +0200, Bastien ROUCARIES wrote:

> On Mon, Jun 28, 2010 at 4:51 PM, Julien Cristau  wrote:
> > On Mon, Jun 28, 2010 at 16:14:23 +0200, Bastien ROUCARIES wrote:
> >
> >> upstream does not seems how to use libtools in order to create a publi
> >> private list of symbols using the procedure described in
> >> http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=12841
> >>
> > Oh and fwiw libtool does not create a list.  It takes a list (or regexp)
> > and ensures that only the matching symbols are exported.  You can
> > achieve the same with a linker script or adding visibility attributes in
> > the source code.  But neither of those prevent ABI breakage if public
> > functions or symbols change signature or are removed, which is what
> > happened here.  The only way to prevent this is to either bump SONAME
> > when that happens, or not do those changes in the first place.
> 
> yes but with a list of symbols publically exported we could use a
> script to detect change between version, and ask to bump soname in
> case of missmatch.
> 
> We used with kind of stuff a long time ago, but upstream does not
> always bump soname saying it is a private symbols. We therefore ask to
> only export public symbols and they do not know how to use libtool
> facility. So if you post a patch, we could create a list and after a
> few iteration only export abi stable symbols.
> 
You can get a basic list with:
$ objdump -T /usr/lib/libMagick++.so.3 | grep -v UND

For a demangled list:
$ objdump -T /usr/lib/libMagick++.so.3 | grep -v UND | \
  awk '/Base/ { print $NF }' | c++filt

You can use this as input to a symbols file, see dpkg-gensymbols(1) and
deb-symbols(5).

e.g.:
$ echo 'libMagick++.so.3 libmagick++3 #MINVER#' > libmagick++3.symbols
$ objdump -T /usr/lib/libMagick++.so.3 | grep -v UND | \
  awk '/Base/ { print $NF }'| c++filt | sed -e 's/.*/ (c++)&@Base 0/' \
  >> libmagick++3.symbols

Then adjust for the unavoidable architecture differences.  subsequent
builds of the package will fail if any of those symbols disappear (and
if any new ones appear, you should update the file (so that you'll
notice if they are removed again).  You can do the same with the mangled
symbols if you prefer, just remove the c++filt step and the '(c++)' tag
from the symbols file.

Cheers,
Julien


signature.asc
Description: Digital signature


Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Bastien ROUCARIES
On Mon, Jun 28, 2010 at 4:51 PM, Julien Cristau  wrote:
> On Mon, Jun 28, 2010 at 16:14:23 +0200, Bastien ROUCARIES wrote:
>
>> upstream does not seems how to use libtools in order to create a publi
>> private list of symbols using the procedure described in
>> http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=12841
>>
> Oh and fwiw libtool does not create a list.  It takes a list (or regexp)
> and ensures that only the matching symbols are exported.  You can
> achieve the same with a linker script or adding visibility attributes in
> the source code.  But neither of those prevent ABI breakage if public
> functions or symbols change signature or are removed, which is what
> happened here.  The only way to prevent this is to either bump SONAME
> when that happens, or not do those changes in the first place.

yes but with a list of symbols publically exported we could use a
script to detect change between version, and ask to bump soname in
case of missmatch.

We used with kind of stuff a long time ago, but upstream does not
always bump soname saying it is a private symbols. We therefore ask to
only export public symbols and they do not know how to use libtool
facility. So if you post a patch, we could create a list and after a
few iteration only export abi stable symbols.

Bastien


> Cheers,
> Julien
>
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iQIcBAEBCAAGBQJMKLcDAAoJEDEBgAUJBeQMGnAP/RL1vrqk31c1+e0N2sqh6+7R
> EpzXe+NyTRCTR/fmvLE7L+VBcqI0SDMDjdbWHgzd848he7qmHF7Z2i3xyOsU9DEI
> XZ+ejfA6n3YXyGpwtfpYDQAEtzuxEBiimxAJG6ZIK0FGtg67OwY0BOFPSTNAA77L
> BrPK+umBoMSnyhJyvKdJORBbqrJPxe1tl5OE90Q7dA2v4hO9sGvtkilSMyNdbWSs
> ASRCq69ET7a3PVkpZY/cWO9y+IaVRzlL0yrUo9FmSmyIQhdd4L64BMTr+AWUhJU7
> 6wKjqnghcj4IVnbOfViej/mrC0O1pvEnUNEuMyVsy/5wpa5vWZFzdPN4pXiANrWG
> UI/S+0emQaOV7J+V4j/LwlycurgleMMBcN50yXrs49QccjuX0+FhxFrSpL2quDTh
> A7JMz8yq5WHCJISn32k69IPBObWZHJz6HSY8+2j4QpozFJDs9G4pg3DYjRlsBTrN
> HZRVi4WsKTG0R/oev7amDhhQ/unB4prkGbuBARTBfK17Ozo73ewbP3vjau5eusah
> Y1jXbgr8hb+XiwaewuZBjLFssxePIJ7iFObeaUJX3ChP6vkOq7U7jHpgCjgZvWvy
> DIG9RLIFnxgDpATbZu9rqCUgNl32YxNrD0GVAgow/A5k3CE7u2y04ZsFA4peanQO
> ORwJ/7xf525ldWe6xC+5
> =jqks
> -END PGP SIGNATURE-
>
>



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Julien Cristau
On Mon, Jun 28, 2010 at 16:14:23 +0200, Bastien ROUCARIES wrote:

> upstream does not seems how to use libtools in order to create a publi
> private list of symbols using the procedure described in
> http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=12841
> 
Oh and fwiw libtool does not create a list.  It takes a list (or regexp)
and ensures that only the matching symbols are exported.  You can
achieve the same with a linker script or adding visibility attributes in
the source code.  But neither of those prevent ABI breakage if public
functions or symbols change signature or are removed, which is what
happened here.  The only way to prevent this is to either bump SONAME
when that happens, or not do those changes in the first place.

Cheers,
Julien


signature.asc
Description: Digital signature


Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Julien Cristau
On Mon, Jun 28, 2010 at 16:14:23 +0200, Bastien ROUCARIES wrote:

> Dear julian
> 
> upstream does not seems how to use libtools in order to create a publi
> private list of symbols using the procedure described in
> http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=12841
> 
> I could not post a patch until a month (overwork) so if you beat me,
> it will be really nice.
> 
I don't know which of the 2000 or so symbols exported by libMagick++ are
intended as public, and I don't really feel like going through the list
and make wild guesses.

Cheers,
Julien


signature.asc
Description: Digital signature


Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Bastien ROUCARIES
Dear julian

upstream does not seems how to use libtools in order to create a publi
private list of symbols using the procedure described in
http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=12841

I could not post a patch until a month (overwork) so if you beat me,
it will be really nice.

Bastien

On Sat, Jun 26, 2010 at 2:50 PM, Julien Cristau  wrote:
> On Sat, Jun 26, 2010 at 13:10:26 +0100, Julien Cristau wrote:
>
>> Package: libmagick++3
>> Version: 7:6.6.2.6-1
>> Severity: serious
>>
>> libMagick++.so.3 in squeeze exports a _ZN6Magick5Image8contrastEj
>> symbol.  The version in sid doesn't.  This breaks (at least)
>> python-imagemagick.  Please be more careful about ABI compatibility...
>>
> So on amd64 I count 130 removed symbols.  It's likely there are others
> that only affect 32bit archs.  Checking that kind of things should be
> the *first* thing you do on a new upstream release, especially when you
> know upstream is unable to maintain their ABI properly.  And it's not
> like these things are well-hidden, a debdiff shows e.g. for
> lib/Magick++/Drawable.h:
>
> @@ -2055,8 +2055,8 @@
>  class MagickDLLDecl DrawableViewbox : public DrawableBase
>  {
>  public:
> -  DrawableViewbox(unsigned long x1_, unsigned long y1_,
> -                  unsigned long x2_, unsigned long y2_)
> +  DrawableViewbox(ssize_t x1_, ssize_t y1_,
> +                  ssize_t x2_, ssize_t y2_)
>     : _x1(x1_),
>       _y1(y1_),
>       _x2(x2_),
>
> which is quite trivially not going to fly.
>
> Cheers,
> Julien
>
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iQIcBAEBCAAGBQJMJfd+AAoJEDEBgAUJBeQMmnAP/3sCUJqNMIEhXisCzSRXusnR
> NHDAE2yTZPmOxs50up3bpAsex7AdkJZr9DscVvpsOU3rXL4Sn+5QJ1QoaSl4V9oy
> iJ4GXW52C43kbZhEMhj7U6glvEAizehfxlnY8tLCfsxrx0fzhCg+KObGqienlEf+
> XMxFk3rdUSE7xYka5pD4eIwP/oHmcyRkboo/3k+NdKR2Eqo1Fjz6ma/nLvCiZIoH
> 74R8GCyLIUl7gBjEw6eMPxye8w9rJS/jol+9Oe188KN6n1uwTQchKuSt/87/HKwK
> XdMfAETJd1Q56n688iQo920ow8k6XlRZc3VBG76TRu/xEL+sWn8qvF6XTUA5piuN
> NYaNGO7kfkdpYx4lOBPrhJPZSRJonnG4vZp94F/w03Clfvr7974OIKdHc/dl/Qlz
> fIuQ7MgF4ZfxIuHnYDJ43uckbydknp5p0vGZEaPM65j+GwpDuOYcdPNb2n3+kgs2
> gUlwqo674F/hVuVEly9lsSifIszNfKzEU1Vk4vDONKXUADcV170Qpntr5PqsjgWQ
> joqLFQ21YLQHHj1QbhHcpM+9UtIyB6lvWhymfKbdWREksnSlCUDI+2hx9iBFvivH
> tUsTUlJ5D3d7AdFW96+569QZ+6TJ+b+UhF1xW++NbvpBs1tzuOtfcSrHjgl6q9FN
> MrQ3DikB/hR3dTuAUpTC
> =V6qy
> -END PGP SIGNATURE-
>
>



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-28 Thread Bastien ROUCARIES
I have open a new bug about the reccurent problem.

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=587393

Please add comment on upstream forum.

Bastien



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-26 Thread Julien Cristau
On Sat, Jun 26, 2010 at 13:10:26 +0100, Julien Cristau wrote:

> Package: libmagick++3
> Version: 7:6.6.2.6-1
> Severity: serious
> 
> libMagick++.so.3 in squeeze exports a _ZN6Magick5Image8contrastEj
> symbol.  The version in sid doesn't.  This breaks (at least)
> python-imagemagick.  Please be more careful about ABI compatibility...
> 
So on amd64 I count 130 removed symbols.  It's likely there are others
that only affect 32bit archs.  Checking that kind of things should be
the *first* thing you do on a new upstream release, especially when you
know upstream is unable to maintain their ABI properly.  And it's not
like these things are well-hidden, a debdiff shows e.g. for
lib/Magick++/Drawable.h:

@@ -2055,8 +2055,8 @@
 class MagickDLLDecl DrawableViewbox : public DrawableBase
 {
 public:
-  DrawableViewbox(unsigned long x1_, unsigned long y1_,
-  unsigned long x2_, unsigned long y2_)
+  DrawableViewbox(ssize_t x1_, ssize_t y1_,
+  ssize_t x2_, ssize_t y2_)
 : _x1(x1_),
   _y1(y1_),
   _x2(x2_),

which is quite trivially not going to fly.

Cheers,
Julien


signature.asc
Description: Digital signature


Bug#587227: libmagick++3: ABI breakage without SONAME change (yet again)

2010-06-26 Thread Julien Cristau
Package: libmagick++3
Version: 7:6.6.2.6-1
Severity: serious

libMagick++.so.3 in squeeze exports a _ZN6Magick5Image8contrastEj
symbol.  The version in sid doesn't.  This breaks (at least)
python-imagemagick.  Please be more careful about ABI compatibility...

Cheers,
Julien


signature.asc
Description: Digital signature