Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
libexpat 2.0.0 ABI breakage
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2, 3 ... 7, 8, 9, 10, 11  Next  
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
Gergan Penkov
Veteran
Veteran


Joined: 17 Jul 2004
Posts: 1464
Location: das kleinste Kuhdorf Deutschlands :)

PostPosted: Sat Apr 08, 2006 10:56 am    Post subject: Reply with quote

Well, there is no other way around, the ABI changes or simply the version was changed (as I'm still unsure as if the ABI changed, API didn't change uncompatibly). Take a day or two (it could be also a simple matter, no one knows) and resolve this problem.
The easiest way is to use revdep-rebuild, if this does not work for you look at the script, which finds the packages, which link to libexpat.so.0 - rebuild at first fontconfig, (pango and gtk+ if they link against libexpat) and so on.
There is no general procedure, so you will probably need time.
If you want to risk it, I have posted somewhere in the middle a patch to expat-2.0.0 ebuild, which will leave the old library in place, but this could cause double linkage so it is not a good solution, but will keep your system functioning.
_________________
"I knew when an angel whispered into my ear,
You gotta get him away, yeah
Hey little bitch!
Be glad you finally walked away or you may have not lived another day."
Godsmack
Back to top
View user's profile Send private message
laurelin
Tux's lil' helper
Tux's lil' helper


Joined: 16 May 2005
Posts: 84
Location: Germany, Old Europe

PostPosted: Sat Apr 08, 2006 6:03 pm    Post subject: Reply with quote

I did so too - the problem was, that I had one or two ebuild, which were updated or gone from the portage tree.
If you do the update, be sure to run revdep-rebuild as described further up this thread.

If you encounter problems, then check this post. It is important to find the first package, that depends on libexpat.so.0. Then find the one or two following packages - the rest is more or less emerging automaticly.
I did it this way (had gnome and no kde installed. Check this post followed by this one by gergan.
  • emerge fontconfig
  • emerge pango
  • emerge gtk+
  • emerge the rest as given by revdep-rebuild
Back to top
View user's profile Send private message
SamuliSuominen
Retired Dev
Retired Dev


Joined: 30 Sep 2005
Posts: 2133
Location: Finland

PostPosted: Sun Apr 09, 2006 6:43 am    Post subject: Expat 2.0.0 breaks Gettext 0.14.5 too Reply with quote

ABI breakage? Sure, but also for programs not detectable by revdep rebuild. See https://bugs.gentoo.org/show_bug.cgi?id=128557 how ~x86 is currently broken for people
using USE="nls", gettext 0.14.5 doesn't work anymore and some fail to install, or .po language files
get installed wrongly.

Upstream provided a patch, which I've tested and it didn't work (see the bug.)

If you got a solution for this please do smthing cause it's out of my knowledge :?
Back to top
View user's profile Send private message
Gergan Penkov
Veteran
Veteran


Joined: 17 Jul 2004
Posts: 1464
Location: das kleinste Kuhdorf Deutschlands :)

PostPosted: Sun Apr 09, 2006 10:19 am    Post subject: Reply with quote

What happens when you use your own patch with
Code:
void *handle = dlopen ("libexpat.so", RTLD_LAZY);

well they are correct in one thing and wrong in another:
Quote:
There is a reason why they changed the major version number of the library:
Its binary API changed (functions were removed or function signatures changed
or function return types were changed). You cannot simply ignore these changes
and use whatever version of the library is found - except if by luck gettext
was not using the API portions that were changed (which is not the case).

yes the return value was changed from int to XML_Size, but XML_Size is
Code:
#ifdef XML_LARGE_SIZE  /* Use large integers for file/stream positions. */
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
typedef __int64 XML_Index;
typedef unsigned __int64 XML_Size;
#else
typedef long long XML_Index;
typedef unsigned long long XML_Size;
#endif
#else
typedef long XML_Index;
typedef unsigned long XML_Size;
#endif /* XML_LARGE_SIZE */

so it is a problem if you use sth very large, and looking at their patch they do not use the return value at all or they didn't make any corrections to it if they use it.
And it all looks as sth in gettext autotooling is broken and not in the program itself (as it says "This version was built without expat."), although in fact the only program, which fails in this way is the bmpx-svn here, so I didn't bother to explore the problem.
_________________
"I knew when an angel whispered into my ear,
You gotta get him away, yeah
Hey little bitch!
Be glad you finally walked away or you may have not lived another day."
Godsmack
Back to top
View user's profile Send private message
fehlfarbe
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2003
Posts: 81
Location: berlin

PostPosted: Mon Apr 10, 2006 7:54 pm    Post subject: Reply with quote

:(

currently recompiling kde, gnome....
after that, i will mask libexpat for a long time.

i hope i can start kde tomorrow.
_________________
Adopt an Unanswered Post
Back to top
View user's profile Send private message
Albert_Alligator
Apprentice
Apprentice


Joined: 12 May 2004
Posts: 193
Location: Okefenokee Swamp

PostPosted: Tue Apr 11, 2006 7:04 am    Post subject: Reply with quote

I basically had to uninstall the whole monolithic KDE as some modular packages of the new KDE had been installed and broke the libexpat links all up.

For me it was ok as my system lost some weight.... around 5 Gigs of weight.

But it was not ok in that there was virtually no warning when it happened.
_________________
As Socrates once said "I drank what?"
Back to top
View user's profile Send private message
fehlfarbe
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2003
Posts: 81
Location: berlin

PostPosted: Tue Apr 11, 2006 7:55 am    Post subject: browsing with links2 Reply with quote

still no X, browsing with links2.
revdep-rebuild round 2: emerging 2/39.
_________________
Adopt an Unanswered Post
Back to top
View user's profile Send private message
fehlfarbe
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2003
Posts: 81
Location: berlin

PostPosted: Tue Apr 11, 2006 1:36 pm    Post subject: everything is up and running Reply with quote

KDE is up and running. but gnome is still re-emerging.
_________________
Adopt an Unanswered Post
Back to top
View user's profile Send private message
antipod
Apprentice
Apprentice


Joined: 20 Mar 2003
Posts: 168
Location: Karlshamn, Sweden

PostPosted: Wed Apr 12, 2006 9:15 pm    Post subject: Reply with quote

Sorry how to sound like a complete newbie here but how do I use revdep-rebuild? There is no such command on my system so I'm wondering from where you get it?

After that, when I get that to work, I'll have my system work for quite some time it seems...
Back to top
View user's profile Send private message
laurelin
Tux's lil' helper
Tux's lil' helper


Joined: 16 May 2005
Posts: 84
Location: Germany, Old Europe

PostPosted: Wed Apr 12, 2006 9:36 pm    Post subject: Reply with quote

You have to emerge gentoolkit:

Code:
# emerge gentoolkit


Just look the Portage-Introduction in the Gentoo-handbook for a short overview.

You use it to check dependencies. If you have broken some libs - as in the whole topic here - it will find it for you and find the packages for you to emerge and pass it over to emerge itself. Did I get it right? *look around*
Back to top
View user's profile Send private message
antipod
Apprentice
Apprentice


Joined: 20 Mar 2003
Posts: 168
Location: Karlshamn, Sweden

PostPosted: Wed Apr 12, 2006 9:51 pm    Post subject: Reply with quote

I think you got it right... I have read the threads here and understands what it does etc. Just that I wasn't able to find it... don't think I have read that Portage-Introduction that well or well, it was quite some time ago and just installed the system from memory and the installation guide last time from scratch.

Thanks for your fast reply and help... :)
Back to top
View user's profile Send private message
IntergalacticWalrus
Guru
Guru


Joined: 07 Jan 2003
Posts: 513
Location: Montreal QC (Canada)

PostPosted: Thu Apr 13, 2006 8:24 pm    Post subject: Reply with quote

I still haven't heard an actual reason as to why expat changed it's ABI. Anyone? (it better be good...)
Back to top
View user's profile Send private message
pgrdsl
Tux's lil' helper
Tux's lil' helper


Joined: 29 Aug 2002
Posts: 93
Location: Southampton, UK

PostPosted: Fri Apr 14, 2006 3:06 pm    Post subject: Reply with quote

IntergalacticWalrus wrote:
I still haven't heard an actual reason as to why expat changed it's ABI. Anyone? (it better be good...)

How about reading the home page for expat? It tells you what they changed, and gave a rationale for it. You might not think it's a good rationale, but that's a different issue :wink:
_________________
pihl
Back to top
View user's profile Send private message
IntergalacticWalrus
Guru
Guru


Joined: 07 Jan 2003
Posts: 513
Location: Montreal QC (Canada)

PostPosted: Sat Apr 15, 2006 9:57 pm    Post subject: Reply with quote

pgrdsl wrote:
IntergalacticWalrus wrote:
I still haven't heard an actual reason as to why expat changed it's ABI. Anyone? (it better be good...)

How about reading the home page for expat? It tells you what they changed, and gave a rationale for it. You might not think it's a good rationale, but that's a different issue :wink:


I don't see any pertinent explanation as to why they broke ABI compatibility, causing major problems to all Linux distributions. Well, there is no good enough reason for breaking ABI compatibility anyway.
Back to top
View user's profile Send private message
Gergan Penkov
Veteran
Veteran


Joined: 17 Jul 2004
Posts: 1464
Location: das kleinste Kuhdorf Deutschlands :)

PostPosted: Sat Apr 15, 2006 10:36 pm    Post subject: Reply with quote

This was a general problem only on gentoo and not on any other major distribution (probably sourcemage, any other major source distributions ?). And it would not have been a major problem if gentoo had supported (and made the --as-needed linker flag a default or recommended).
This of course now has a positive outcome, as the ppl, who were against this flag now are forced to take it (there is an official bug-tracker for pkgs, which fail with it), as this version-change created a major uproar in the user base.
_________________
"I knew when an angel whispered into my ear,
You gotta get him away, yeah
Hey little bitch!
Be glad you finally walked away or you may have not lived another day."
Godsmack
Back to top
View user's profile Send private message
CyberFoxx
n00b
n00b


Joined: 31 Jan 2006
Posts: 25

PostPosted: Sat Apr 15, 2006 10:49 pm    Post subject: Reply with quote

So, exactly how many people had outright success with this? I admit that it was a bit shaky in the start for me, but I figured it out pretty quickly. And I didn't even check the forum.

Mind you, I sometimes do manually do upgrades. I just check the output of "emerge -pv --update --newuse --deep world" and will manually do the emerging myself instead of letting emerge step through each one automatically. Sure, this takes longer, but it lets me catch warnings and other notes during the emerge process.

Anyway, when I saw the note in emerging expat, I followed it's instructions and did a revdep-rebuild. Mind you, I did a "revdep-rebuild -X" without adding in the check for libexpat. Might as well catch anything else while I'm at it, right? Well, the revdep-rebuild failed. Why? Because it wanted to rebuild qt first, and qt depended on fontconfig, and fontconfig needed to be rebuilt against the new expat. So, I remerged fontconfig and I also did XML-Parser too. (Although, I can't remember right now what caused me to do XML-Parser. Might've been the fact that it was one of the rebuilds that revdep-rebuild caught, and I thought that some configure scripts do use Perl...)

Well, after fontconfig and XML-Parser were done, I did qt and re-ran the "revdep-rebuild -X". It ran through, rebuilt everything that was linked against the old expat, and I've yet to run into any further problems.

Now, I'm not trying to belittle this problem. I do understand that some people's setups are different from mine, like having packages installed that are sadly not in portage anymore, to revdep-rebuild just not catching a link. Also, I run Gentoo on my own desktop computer. It's not one of those "mission critical" servers or stuff like that, so I can take my time while trying to fix a problem. Although, the firewall/mail server/proxy I run in my basement could be considered "mission critical" considering that it provides net access to the other comps in my house. Still have yet to upgrade expat on it...

Anyway, just thought I'd share my success story. Been too many negitive posts, thought this thread needed a postive one. At least this didn't turn out to be as bad as when I accidently hosed my system upgrading to glibc 2.4. (I didn't see the warning...)

PS: Oh, and I kept X and KDE running while I revdep-rebuild'd. Hey, I wanted to watch some movies while ~100 packages were rebuilding. ^_^
Back to top
View user's profile Send private message
pgrdsl
Tux's lil' helper
Tux's lil' helper


Joined: 29 Aug 2002
Posts: 93
Location: Southampton, UK

PostPosted: Sun Apr 16, 2006 9:01 am    Post subject: Reply with quote

IntergalacticWalrus wrote:
pgrdsl wrote:
IntergalacticWalrus wrote:
I still haven't heard an actual reason as to why expat changed it's ABI. Anyone? (it better be good...)

How about reading the home page for expat? It tells you what they changed, and gave a rationale for it. You might not think it's a good rationale, but that's a different issue :wink:

I don't see any pertinent explanation as to why they broke ABI compatibility, causing major problems to all Linux distributions. Well, there is no good enough reason for breaking ABI compatibility anyway.

They broke ABI compatibility at this point in time in order to prevent the need to break it again in the future. They have, it appears, decided that they now know what the API is going to look like for the foreseeable future, and they appear to have wanted to get the change out of the way now. As I said, it is arguably not a good rationale, but it is a rationale.

I don't believe that any project should be hamstrung by a Linux distribution in terms of whether they can, or can't, change ABI's. They did everything right: in particular, they upped the major library version number. The fact that Gentoo does not have a clean way of rebuilding dependent projects after a change like this is a Gentoo problem, not an expat one. (If revdep-rebuild didn't do the job properly, then I would argue that it is in need of some enhancement.)

And, as has been pointed out, this does not cause problems for all Linux distributions; nor does it cause massive problems for everybody who had to do the upgrade (in my case, revdep-rebuild did the job just fine without any manual intervention - I was obviously lucky).
_________________
pihl
Back to top
View user's profile Send private message
fehlfarbe
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2003
Posts: 81
Location: berlin

PostPosted: Tue Apr 18, 2006 8:54 pm    Post subject: Reply with quote

thx for the explanation pgrdsl.
i trust gentoo, i trust the developers of expat and all the other great oss developers!
a system like gentoo is so complex, and since a few years i am running gentoo...i love it - no big problems, up to date....
i was a little bit upset about losing 2 days working on my machine ( i have another one, but it is only a media-pc, no good keyboard, no good mice... kubuntu)
when this happens, i where ready to work on my project, my head where full of ideas - and then: cames trouble. 2 days without GUI ( at this days i became drunken at 7p.m. :) )
anyway: i love gentoo, i love gnu and i trust them. but i have to be carefull with updates. that is what i have learned.

greetings :)
_________________
Adopt an Unanswered Post
Back to top
View user's profile Send private message
antipod
Apprentice
Apprentice


Joined: 20 Mar 2003
Posts: 168
Location: Karlshamn, Sweden

PostPosted: Thu Apr 20, 2006 3:27 pm    Post subject: Reply with quote

An addition to CyberFoxx post up above. I emerged those ebuilds as he wrote but XML-Parser did not want to emerge so what I want to add is:

Code:
emerge perl


...before XML-Parser. He mentioned perl but I just wanted to add that it was this that made it work for me.
Back to top
View user's profile Send private message
Rumzajs
n00b
n00b


Joined: 04 May 2005
Posts: 33

PostPosted: Thu Apr 20, 2006 10:14 pm    Post subject: Reply with quote

got a idea how to handle such things in the future
https://forums.gentoo.org/viewtopic-t-455639.html
Back to top
View user's profile Send private message
littleman
Tux's lil' helper
Tux's lil' helper


Joined: 17 Oct 2003
Posts: 114
Location: Paris

PostPosted: Sun Apr 23, 2006 10:28 am    Post subject: Reply with quote

Thank GOD for links2 and the gentoo forums :p
I've had to emerge fontconfig and pango too before rev-dep rebuild could work. My advice: create the symling to launch your X and gui and whatever you need to work (openoffice and firefox) then remove the link and lauch your rev-dep rebuild :) (mine should take about 2 days)
_________________
La différence entre la théorie et la pratique, c'est qu'en théorie, y'a pas de différence entre la théorie et la pratique.
Back to top
View user's profile Send private message
Eighen Indemnis
n00b
n00b


Joined: 18 Feb 2006
Posts: 22

PostPosted: Sun Apr 23, 2006 6:36 pm    Post subject: Reply with quote

I've tried to follow this thread and see if my question has been answered already, but it's all very confusing, so please excuse me if I'm asking a stupid question.

When I run `revdep-rebuild --library libexpat.so.0`, it gives me an emerge string and trys to run it. But it fails, saying:
Code:

emerge: there are no ebuilds to satisfy "=gnome-base/control-center-2.13.93".


I removed all my gnome and KDE packages - I can just install them later, after all this - but it still gives me that error. It thinks my gnome packages are still installed, when they're not. How can I set this right?
Back to top
View user's profile Send private message
Maedhros
Bodhisattva
Bodhisattva


Joined: 14 Apr 2004
Posts: 5511
Location: Durham, UK

PostPosted: Sun Apr 23, 2006 6:44 pm    Post subject: Reply with quote

Try using the --package-names option, which will emerge packages with just the name and not just a specific version. Something that's installed probably still depends on it, which is why revdep-rebuild wants to reinstall it.
_________________
No-one's more important than the earthworm.
Back to top
View user's profile Send private message
pgrdsl
Tux's lil' helper
Tux's lil' helper


Joined: 29 Aug 2002
Posts: 93
Location: Southampton, UK

PostPosted: Mon Apr 24, 2006 1:06 pm    Post subject: Reply with quote

Maedhros wrote:
Try using the --package-names option, which will emerge packages with just the name and not just a specific version. Something that's installed probably still depends on it, which is why revdep-rebuild wants to reinstall it.

Noting, of course, that --package-names doesn't always work properly with slotted packages... but it's worth a try.
_________________
pihl
Back to top
View user's profile Send private message
eae
Apprentice
Apprentice


Joined: 28 Dec 2004
Posts: 211

PostPosted: Mon May 01, 2006 12:39 pm    Post subject: Reply with quote

Hi, I'm on ~amd64 and I have just updated openoffice-bin, but if I run revdep-rebuild again (after deleting /root/.revdep*) it wants to reemerge it again (anyways oo seems to work)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Goto page Previous  1, 2, 3 ... 7, 8, 9, 10, 11  Next
Page 8 of 11

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum