Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 413673 - dev-libs/icu does not disable function renaming
Summary: dev-libs/icu does not disable function renaming
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Arfrever Frehtes Taifersar Arahesis
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-04-26 21:43 UTC by Davide Pesavento (RETIRED)
Modified: 2012-10-25 19:35 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Davide Pesavento (RETIRED) gentoo-dev 2012-04-26 21:43:43 UTC
According to [1], icu can be used as a system-level library, maintaining binary compatibility between versions, if it's compiled with "--disable-renaming".

I'm not fully aware of the implications of enabling or disabling function renaming, so this is more a proposal than an actual bug and might require a bit of discussion.


[1] http://userguide.icu-project.org/design#TOC-ICU-Binary-Compatibility:-Using-ICU-as-an-Operating-System-Level-Library
Comment 1 Arfrever Frehtes Taifersar Arahesis 2012-04-27 01:06:27 UTC
--disable-renaming option does not affect filenames and sonames of libraries, so rebuilding of reverse dependencies would be still required after upgrading/downgrading major version of ICU.
It does not matter if functions are internally renamed in libraries.
I suggest to close this bug.
Comment 2 Davide Pesavento (RETIRED) gentoo-dev 2012-04-27 10:18:04 UTC
Oh yes it matters. If the functions are called foo_48, foo_49, etc... (where the _XX suffix is the version of icu) like it's happening now in gentoo, users of these libraries cannot use dlsym() to dynamically load their symbols, because the version suffix cannot be reliably known in advance. --disable-renaming suppresses that version suffix, making it possible to use dlsym("foo").

And since dev-libs/icu is not slotted, what's the point in "versioning" its symbols?
Comment 3 Davide Pesavento (RETIRED) gentoo-dev 2012-05-04 17:38:14 UTC
ping!

I'd like to reach consensus on a resolution as soon as possible.
Any arguments against --disable-renaming?
Comment 4 Arfrever Frehtes Taifersar Arahesis 2012-05-04 18:28:26 UTC
Such a change in given major version of ICU would be an incompatible change not detectable by revdep-rebuild, so it must be deferred to ICU 50.
Comment 5 Davide Pesavento (RETIRED) gentoo-dev 2012-05-05 10:33:19 UTC
That's true, however we could tell our users to rebuild all reverse deps via an ewarn message... we're talking about ~arch here after all.

Note that an ewarn should already be added for the qt-core issue (bug 413541) if we keep the status quo for icu-49, which would be avoided by disabling renaming, so we're basically trading one ewarn for another ewarn, with the "small" difference that one of them is going to hit stable users.

I'd like to hear the opinion of some other maintainers too.
Comment 6 Pacho Ramos gentoo-dev 2012-05-21 08:30:34 UTC
(In reply to comment #5)
> That's true, however we could tell our users to rebuild all reverse deps via
> an ewarn message... 

Regarding this, we have already broke stable systems, we should release a news item telling people to rebuild qt-core and libxml2, the problem is that I don't know if more random packages are affected :S

>we're talking about ~arch here after all.
> 
> Note that an ewarn should already be added for the qt-core issue (bug
> 413541) if we keep the status quo for icu-49, which would be avoided by
> disabling renaming, so we're basically trading one ewarn for another ewarn,
> with the "small" difference that one of them is going to hit stable users.
> 
> I'd like to hear the opinion of some other maintainers too.

About this, looks like there are no cons to disable renaming in icu-50... I would go for it
Comment 7 Mike Gilbert gentoo-dev 2012-05-21 15:28:05 UTC
(In reply to comment #6)
> Regarding this, we have already broke stable systems, we should release a
> news item telling people to rebuild qt-core and libxml2, the problem is that
> I don't know if more random packages are affected :S

To be clear: the qt-core issue did not break any systems. It simply caused a warning message to be displayed until qt-core was rebuilt.
Comment 8 Davide Pesavento (RETIRED) gentoo-dev 2012-05-21 16:10:34 UTC
(In reply to comment #7)
> (In reply to comment #6)
> > Regarding this, we have already broke stable systems, we should release a
> > news item telling people to rebuild qt-core and libxml2, the problem is that
> > I don't know if more random packages are affected :S
> 
> To be clear: the qt-core issue did not break any systems. It simply caused a
> warning message to be displayed until qt-core was rebuilt.

Some dupes of bug 413541 disagree. It seems that cmake or automoc were actually broken by this, and this implies that most cmake-based packages couldn't be emerged. Furthermore, ago reported that calligra failed to start until he rebuilt qt-core. So.. yes, there has been real breakage in the stable tree.
Comment 9 Mike Gilbert gentoo-dev 2012-05-21 21:34:07 UTC
(In reply to comment #8)
> Some dupes of bug 413541 disagree. It seems that cmake or automoc were
> actually broken by this, and this implies that most cmake-based packages
> couldn't be emerged. Furthermore, ago reported that calligra failed to start
> until he rebuilt qt-core. So.. yes, there has been real breakage in the
> stable tree.

I don't think qt-core had anything to do with that. It looks like libxml2 broke, which broke cmake. I think revdep-rebuild detects the breakage in libxml2, but emerge screws up the merge order.

Any time you change soname on a library, stable systems will break. The only thing that makes this special is that we seem to have some missing or circular deps which cause revdep-rebuild to fail.
Comment 10 Arfrever Frehtes Taifersar Arahesis 2012-10-25 19:29:52 UTC
Function renaming hath been disabled in dev-libs/icu-50_rc.