I'm working on porting Nix to a non-UNIX operating system and I'd like some advice.
I want to get Nix running on the Genode microkernel OS (http://genode.org/). Genode is not UNIX-based and the differences are very fundamental but so far I have managed to execute some simple builders using Bash and its UNIX emulator. Libnixexpr works without modification, but I've had to modify libnixutil and libnixstore. For now I have no plans on managing profiles yet. The issue I want to deal with now is how to make changes to libnixutil and libnixstore with the least amount of future maintenance. So far I have been taking source files and moving problem functions into a unix implementation file, then making a copy of that and doing a rewrite. Would this separation be useful to upstream? Is there a better method? Is there any sort of reorganization or refactoring that I could do at the same time that would be helpful? The big changes to be made in libnixstore are: - Builders are started in a completely different manner, there are no pipes or PIDs, the builder is monitored in a different way. I haven't implemented logging but it shouldn't be much of an issue. - There is no chrooting when you don't have a root, but a stacked virtual file system is readily available in the emulator. - Build hook support would need to be reimplemted. The minor changes elsewhere are: - No users or groups. Standard filesystems will be used, but the system has no concept of user, group or mode. - No getenv or argv for Nix, but no issues with setting these for builders. The native configuration method has been sufficient for Nix. - File locks: The file system interface does not yet support file locking. Permissions and file-locking isn't a big deal, I can probably deal with those using dummy libc functions. I ported SQLite first, so that is taken care of, though without file locking I'm using a different journal mode for the database. I suppose what I'm doing could make a windows port easier for someone else, not there would be a point in that. What do you guys think? Emery _______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
