Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
What is this ABI_X86 thing I keep hearing about?
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
NTICompass
Tux's lil' helper
Tux's lil' helper


Joined: 11 Jun 2008
Posts: 147
Location: /home/nticompass/

PostPosted: Fri Sep 06, 2013 2:34 pm    Post subject: What is this ABI_X86 thing I keep hearing about? Reply with quote

For one reason or another (I've been busy, I guess), it's been months since I've updated my Gentoo system. And, as you can imagine, this means there's a lot of packages (and USE changes) I need to go over. My system is "amd64" (multilib), but I have a lot of (manually keyworded) packages from "~amd64".

Anyway, in this update, I keep seeing "ABI_X86" USE flags. What is this? This is new. There's nothing in "eselect news list" about it.

Being the Gentooer I am, I did my research, and found this topic: http://forums.gentoo.org/viewtopic-t-953900-start-0.html. That seemed to show how to use it, but, are there any "real" docs for this? What does it do? What am I supposed to set "ABI_X86" to? I have a multilib system. I assume I want "64", but then what are "32" and "x32"? I'm confused at what I need to do here.

Emerge is yelling a lot about slot conflicts, and they seem to be related to "ABI_X86" (I forget the errors exactly, but I remember one was zlib).

So, is there any "official" docs about what "ABI_X86" is and how to use it? I'm surprised there isn't a sticky for this!

From the thread I linked, I found this page: http://kicherer.org/joomla/index.php/en/blog/liste/29-transition-of-emul-packages-to-true-multilib, but I want to know what I'm doing before I go keyword a bunch of stuff and edit my make.conf.

P.S. I have most of the "app-emulation/emul-linux-x86" packages (the ones I seemed to need at the time) in my "package.keywords" file.
Back to top
View user's profile Send private message
ascendant
n00b
n00b


Joined: 13 Nov 2008
Posts: 41
Location: / (USA)

PostPosted: Fri Sep 06, 2013 11:50 pm    Post subject: Reply with quote

I won't pretend to be an expert on this, but I can share my similar experience.

As you've noticed, the multilib migration is in a sorry state of affairs where it comes to documentation.

The most obvious reason why there's no announcement or sticky is because all of the multilib stuff is ~. If you pull in some ~ packages because you decided to, I don't think the portage devs can or even should try to account for your specific combination of ~ and non-~ packages. The problem here is that one or more of your ~ packages now depend on a multilib package which means you have to migrate to multilib or un-~ that package. To complete the migration, you're probably going to have to keep adding ~ packages to your keywords file and probably some packages to package.mask to help portage resolve the slot conflicts.

As far as syntax for ABI_X86, x32 is 32-bit architecture, 64 is 64-bit and 32 is 32-bit-on-64-bit. I have ABI_X86=32 however since I'm on amd64, ABI_X86=64 is selected as well automatically, I can't turn it off. You can verify this with emerge --info. Which ones are selected in ABI_X86 makes portage decide whether or not to compile libraries for that ABI and install them. For clarity, those libraries were previously supplied by emul-linux-x86-* ebuilds as precompiled binaries. That would be why everything is blocking everything else.
_________________
This post brought to you by a cheap router and various other networking hardware.
Back to top
View user's profile Send private message
Jaglover
Advocate
Advocate


Joined: 29 May 2005
Posts: 4667
Location: Saint Amant, Acadiana

PostPosted: Sat Sep 07, 2013 12:05 am    Post subject: Reply with quote

Quote:
x32 is 32-bit architecture
No it's not. I'm not pretending I could write a short but comprehensive post on it ... google ...
_________________
Please learn how to denote units correctly!
Back to top
View user's profile Send private message
ascendant
n00b
n00b


Joined: 13 Nov 2008
Posts: 41
Location: / (USA)

PostPosted: Sat Sep 07, 2013 12:26 am    Post subject: Reply with quote

https://en.wikipedia.org/wiki/X32_ABI

Yeah, it's something else. This is might be incompatible with ABI=32 and I haven't seen any ebuilds using it. Probably still safe to ignore though, at least for now.
_________________
This post brought to you by a cheap router and various other networking hardware.
Back to top
View user's profile Send private message
NTICompass
Tux's lil' helper
Tux's lil' helper


Joined: 11 Jun 2008
Posts: 147
Location: /home/nticompass/

PostPosted: Sat Sep 07, 2013 5:12 pm    Post subject: Reply with quote

ascendant, I think you hit the nail on the head here. I think certain packages (including emul-linux-x86-*) are trying to install newer versions that contain the ABI_X86 USE flags. Guess I gotta edit those package.* files to stop them from being updated or update the right ones.

Thanks :)

P.S. Is there a quick way to see which packages have the ABI_X86 USE flag?
Back to top
View user's profile Send private message
broken_chaos
Guru
Guru


Joined: 18 Jan 2006
Posts: 370
Location: Ontario, Canada

PostPosted: Sat Sep 07, 2013 6:13 pm    Post subject: Reply with quote

NTICompass wrote:
P.S. Is there a quick way to see which packages have the ABI_X86 USE flag?

`quse` or `equery hasuse` should do it -- check their manpages for more detail. The USE flags to look for are abi_x86_32, abi_x86_64, and abi_x86_x32.

As far as what to do with ABI_X86 in general (more once it's in arch, or if you're using ~arch, as mixing arch/~arch gets messy with transitions like this), it should be safe to ignore it and let your profile and package dependencies handle it (changing USE-flags as portage asks, at most). Everything should work properly, and any packages that explicitly require 32/64/x32 libraries will be depending on the correct USE flag on those packages. The only system-wide defaults you can change are on multilib (enable/disable 32-bit libraries by default) or on x32 (enable/disable 32-bit or 64-bit libraries by default) by setting ABI_X86 (to some appropriate combination of 64 or 32) in make.conf.

To comment on x32, if you're happily using multilib or no-multilib, don't worry about x32 at all. It's a completely separate profile, ABI_X86=x32 only works on that profile, and I believe the profile may still be considered experimental (or at least unstable).
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 2592
Location: The Peanut Gallery

PostPosted: Sat Sep 07, 2013 10:27 pm    Post subject: Reply with quote

NTICompass wrote:
ascendant, I think you hit the nail on the head here. I think certain packages (including emul-linux-x86-*) are trying to install newer versions that contain the ABI_X86 USE flags. Guess I gotta edit those package.* files to stop them from being updated or update the right ones.

Thanks :)

P.S. Is there a quick way..?

You can use '--autounmask-write y' for the specific emerge run.

I use update to handle it; there's output of an example unmasking texlive-2011 here (scroll past the portage output to see where hitting P unmasks everything needed. The display in the next post is very old: it uses --jobs now.) It means I can choose which packages to unmask (and it does the dependencies automatically), and i don't need to run dispatch-conf.

You can also use --recover if, for instance, you have lost your keywords file: that skips downgrades, and unmasks installed packages without asking. It was written for a friend who'd messed up his system: istr he'd lost his world file as well. In his honour, it's marked 'rehab' in the code. ;)

Disclaimer: I maintain it, for my sins.
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4152

PostPosted: Sun Sep 08, 2013 6:09 am    Post subject: Reply with quote

broken_chaos wrote:
NTICompass wrote:
P.S. Is there a quick way to see which packages have the ABI_X86 USE flag?

`quse` or `equery hasuse` should do it -- check their manpages for more detail. The USE flags to look for are abi_x86_32, abi_x86_64, and abi_x86_x32.

Quicker:
Code:
eix -cU "abi_x86_*"
To find out for a particular package which versions do have it, look at the output of
Code:
eix -vle clang
and look for ABI_X86=. Or a one-liner which gives you all versions:
Code:
DEFAULT_FORMAT=normal FORMAT='<availableversions:A>' A='<category>/<name>-<version>#<use*>\n' eix | sed -ne 's/#.*ABI_X86=.*//p'
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
Page 1 of 1

 
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