RFH: porting fakeroot-ng to more platforms
Fakeroot-ng is a clean reimplementation of fakeroot, using a totally
different technology. Fakeroot-ng uses the ptrace interface to track the
syscalls performed by the fooled program. This means fakeroot-ng is
immune to problems that may happen as a result of races, cross-library
interactions, different versions of glibc and statically compiled
executables. As a result, tracking "difficult" syscalls, such as
open(2), is possible. For example, as of version 0.12 (the latest
version), fakeroot-ng has complete support for chroot, symlink resolving
Obviously, there is a down side. Due to the low level interaction with
the kernel, fakeroot-ng has to be specifically ported to each new
platform. This porting is a non-trivial process, involving parsing of
the register arguments as they are being passed to the kernel. It is a
more complicated process than merely extracting the sources on a new
platform and running "make".
That said, the porting is not an extremely complicated process either.
There is a README.porting file that explains most of the tasks required.
Every attempt has been made to place all platform dependent code into a
separate library, and many of that library's functions apply to all
Linux platforms and need not be rewritten. I have personally ported
fakeroot-ng to x86, amd64 and PowerPC, with the later two being
platforms that I have access to, but have never learned before the
porting effort. The PowerPC port took me about three hours, and the
AMD64 port took not much longer.
I would like to receive help in either one of two ways. Either someone
with platform access and the know how can do the porting, or someone can
provide me with access to a development machine running one of the other
platforms, and I can perform the porting there. I have tried to shell
machines Debian currently has, and they proved insufficient. Either they
were far too slow for repeated compilations (or any interactive work,
for that matter), or they lack some of the tools needed (objdump,
compilation tools, etc.)
Any help would be greatly appreciated.