2014-04-18

Multilib support becomes a reality

Some of our readers thought we were dead due to the previous April’s Fool post… well, we are not dead (yet) and after 5 years since the first xbps-0.1 release I’m still improving the package system and making the Void distribution more stable than ever. Now let’s move on to the real post…

The Void distribution now contains a full multilib environment to be able to compile and run 32-bit code on 64-bit systems. The xbps-packages collection automatically builds 32-bit packages for x86_64, if xbps-src runs on 32-bit environments.

While others might say that it has been supported for years in other distributions, I can only say that we are not a fork of any existing distribution and we had to improve the xbps-packages collection to achieve it in the least troublesome way.

Software on x86 is now configured to use /usr/lib32 and by making this a symlink to /usr/lib we were able to make all packages work on x86_64 with the minimal effort. Lots of 32-bit packages are now available for x86_64 named as <pkgname>-32bit.

The following example illustrates how to compile xbps (the native void package manager) for 32-bit by using the gcc-multilib package:

# xbps-install -Sy libarchive-devel-32bit gcc-multilib
...

$ cd xbps
$ CC="cc -m32" PKG_CONFIG_LIBDIR=/usr/lib32/pkgconfig ./configure && make
...
$ file bin/xbps-query/xbps-query
bin/xbps-query/xbps-query: ELF 32-bit LSB shared object, Intel 80386 ...
$

I’d like to thank Gottox for the initial implementation and ideas in allowing us to achieve this feature in a relative short time.