[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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 included.

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.

Thanks,
Shachar


Reply to: