Linux emulation and pmake

I promised an entry about Gentoo/FreeBSD but I forgot to write it, so it’s time to do so 🙂

Ok I started working on FreeBSD’s linux compatibility; unfortunately it seems to be a quite problematic task for a couple of reasons: first of all I can’t reuse the emul-linux-x86-* packages from amd64 as they are compiled with optimisations, while FreeBSD linux emulation doesn’t work when you build binaries with something more than -pipe (-march=i386 breaks them, too). I prepared a local chroot to start working on this, and I’ve been able to run a simple hello world example compiled under Linux, but java refuses to work, and most of recent java programs uses SWT that doesn’t work as it should (remember that SWT uses native libraries, but java’s native != FreeBSd, so you get a lot of messed up dependencies). openoffice-bin doesn’t work, too, but I still don’t know why.

A part from that, today I found out that we have a pmake in portage, which is the NetBSD version of make, the “parent” of FreeBSD’s make. I’m then planning to just remove make from freebsd-ubin package and then just add pmake to profile.
This will make simpler to manage the make commands as we can just use pmake when we need to execute with bsdmake, removing all the references to ‘bsdmake’ alias in overlay.

The transition to pmake should be quite simple: if you’re using cvs overlay you’ll be asked to update freebsd-ubin and install pmake, that is enough 🙂
On a BSD system pmake symlinks to bsdmake, on a GNU system it installs mk files used by BSD-style makefiles. This is good as it allows to have a ‘pmake’ command working fine on Linux, FreeBSD and darwin (where the default is bsdmake actually, need to hope that OSX herd can get this working).

BTW, pmake is compiled from Debian’s sources with their patches, this makes it the second package doing that maintained by bsd herd. I really want to thanks Ciaran for versionator eclass, as it’s really simpler to handle debian patches as third version value when packaging them 🙂