On Friday, 6 January 2017 03:51:42 IST Kevin Kofler wrote:

> ...

> * I do not see any practical advantage of Debian multiarch over FHS

> multilib.

 

Good question, multiarch is a huge win for *embedded* developers.

 

Let me give real life example from my $day job:

* We build stuff for arm and x86_64 (I ignore our legacy platforms

like x86, ppc, whatnot...)

 

* We cross compile most stuff (faster), but not everything is easily

cross-compilable:

- Notorious examples are libraries with their own code-generation tools.

- Examples: thrift, dbus-c++ (you need to *run* built tools)

- So we build some packages natively (either on real ARM or in chroot with qemu-user-static).

 

* With old, non-multiarch scheme:

- Library packages compiled natively on ARM would be under /usr/lib.

- But they cannot be installed on the build machine, so I can cross-compile

applications against them.

- The workaround was to unpack them, relocate the libraries, headers, etc

to the prefix expected by cross compiler (e.g: /opt/toolchain/....) and

repack the result into an "all" architecture package.

 

* With multiarch distribution (Debian/jessie in my case):

- Everything is symetric. ARM libraries goes to /usr/lib/arm-linux-gnu

*regardless* if they were built natively or cross-compiled.

- These packages may be co-installed on my development host and be used

by the cross compiler.

- So I have an ARM repository, everything built (natively + cross) is uploaded

there and I can pull library dependencies into my build environment.

- And the *exact* same binary packages installed on the ARM target are

installed and being used by the cross compilers.

 

This is by far better and cleaner than the multilib, but:

* It is a very big change, far wider in scope than just library directories.

(pkg-config, cross-compilers, dynamic linking, rpath, packaging tools, etc.)

* Debian introduced it in Debian/wheezy (~2012) but the real benefits were

reaped only since Debian/jessie (~2015) when many libraries were already

pre-built as multiarch and Debian shipped a multiarch aware cross-compilers.

* So, I'm ambivalent here -- multiarch is great, but it's a big change and

I'm not sure it's worth it *for Fedora users*.

* Meanwhile, I'll keep using Fedora (KDE) as my personal workstation/server OS

but develop everything at $day job on Debian (KDE) and for Debian (targets).

 

Long live Linux ;-)

 

--

Oron Peled Voice: +972-4-8228492

oron@actcom.co.il http://users.actcom.co.il/~oron

 

"Debugging is at least twice as hard as writing the program in the

first place. So if your code is as clever as you can possibly make

it, then by definition you're not smart enough to debug it."

-- Brian Kernighan