Difference between revisions of "News:ABI X86 64 and 32"

From Funtoo
Jump to navigation Jump to search
Line 33: Line 33:
This will remove all 32-bit binary libraries and tools, and thus temporarily break support for things like Skype and other 32-bit apps.
This will remove all 32-bit binary libraries and tools, and thus temporarily break support for things like Skype and other 32-bit apps.


Once this is done, enable {{c|ABI_X86="32 64"}} in {{f|/etc/make.conf}}, and rebuild system:
Once this is done, enable {{c|ABI_X86}} in {{f|/etc/make.conf}}, and rebuild system:


{{console|body=
{{console|body=
Line 39: Line 39:
}}
}}


This should result in a lot of ebuilds being rebuilt with 32-bit support included.
This should result in a lot of ebuilds being rebuilt with 32-bit support included, which you should notice in the USE variable changes in the merge list.


Then, update world to catch anything else you may need:
Then, update world to catch anything else you may need:

Revision as of 03:29, June 18, 2015

ABI X86 64 and 32

Funtoo Linux has new 32-bit compatibility libraries inherited from Gentoo. Learn about them here.

By Drobbins / June 18, 2015

Hey everyone,

Many of you have noticed a change in 32-bit compatibility support in Funtoo Linux, which is being inherited from Gentoo Linux.

In the past, Gentoo Linux has provided 32-bit support on regular 64-bit Funtoo Linux systems (which have "multilib" support by default) by providing pre-built binary 32-bit versions of various libraries. These ebuilds have had names started with app-emulation/emul-linux-x86*. This has been a long-standing feature of Gentoo Linux, since about 2005 when multilib support was integrated into Gentoo. These 32-bit compatibility libraries are useful for pre-built binary 32-bit applications like Skype and other things, which depend on them.

Recently, Gentoo has switched away from these pre-built binary compatibility libraries. Instead of having pre-built binary 32-bit libraries, certain ebuilds have been upgraded so that they have the ability to install two versions of themselves at once -- a 64-bit version and a 32-bit version. Thus, rather than use the pre-built binaries, an ebuild can build these 32-bit libraries from source, even on 64-bit systems.

This feature is controlled in certain ebuilds by the use of the abi_x86_32 USE variable. This USE flag can be enabled on a per-package basis, or you can simply enable all 32-bit compatibility for any ebuilds that support it by adding the following to /etc/make.conf:

   /etc/make.conf
ABI_X86="32 64"

This is one of those handy USE-expand variables, which will result in abi_x86_32 and abi_x86_64 USE flags being enabled globally. Note that this will only work on "regular" Funtoo 64-bit installs, i.e. x86-64bit, not pure64 builds, which do not have any 32-bit compatibility to begin with.

I really apologize that I have not been on top of this issue as much as I would have liked. I really wanted to provide the Funtoo community with a seamless transition to the new system. Unfortunately, I can't control what happens in Gentoo land, and I also happened to get extremely busy in real life at the moment when all these changes started happening. On my TODO list is an imminent overhaul of a lot of the guts of Gentoo in order to make issues like this more manageable in the future.

In the mean time, many of you have systems that are using the emul-linux-x86 packages. Unfortunately, some manual intervention is required in order to upgrade a system to the new way of doing things. This is covered [this news item], but I will repeat here. First, you will need to unmerge all emul-linux-x86 packages:

root # emerge -C 'app-emulation/emul-linux-x86*'

This will remove all 32-bit binary libraries and tools, and thus temporarily break support for things like Skype and other 32-bit apps.

Once this is done, enable ABI_X86 in /etc/make.conf, and rebuild system:

root # emerge -auDN @system

This should result in a lot of ebuilds being rebuilt with 32-bit support included, which you should notice in the USE variable changes in the merge list.

Then, update world to catch anything else you may need:

root # emerge -auDN @world

At this point, your 32-bit apps will work again using freshly built 32-bit compatibility libraries.

Many apologies for the sloppy handling of this by Gentoo (upstream) that affected Funtoo systems.