GSoC Project: Making Redox Self-hosting, Status Report 2
By ids1024 on
As previously reported, I am working on making Redox self hosting for the Google Summer of Code.
Based on how far I was at the time of my last report, I was hoping cargo would be working on Redox by now. But that is not yet the case.
It took a while to find one bug that was interfering with cargo; an issue with the implementation of
Convdar on Redox. The remaining issue seems to be in jobserver-rs; the modifications I made to it to run on Redox were incorrect. It should be possible to port that properly once Redox has full support for signals and signal handlers.
Cargo also is unable to fetch the registry; I’m not sure why, but hopefully it will work better once Redox switches to a network stack based on smoltcp.
readlink() are two functions I’ve had to comment out of C code I’ve ported, and the
dash packages needed to use scripts for
/bin/sh since symlinks weren’t available, so it seemed about time to implement symlinks. To be able to create symlinks when building Redox, I also had to make symlinks work in redoxfs’s fuse mount, and improve support for symlinks in upstream tar-rs.
There were various other small things to address, like adjusting libstd and newlib, and adding a readlink command.
Other libc functions
I added the
getppid() system call (which was trivial), and sent a PR adding that function to Redox’s newlib, along with
inet_ntop(). And later I added
gethostname(). The goal here is mainly to reduce the amount of patching needed for C programs.
One issue with git was caused by a bug in Redox’s pipe scheme. With some dificulty, I managed to create a recipe for git that includes support for http(s) via curl; it was somewhat dificult tricking it into finding the dependencies and linking correctly. I added a way to specify build dependencies for static libraries needed by C programs in the cookbook, which helps with git since it depends on several libraries.
Git still doesn’t work yet.
I’ve created an initial patch and recipe for python, which now runs although it is not fully functional. This was partially because LLVM and Rust require Python to build, so it should be available for full self-hosting; although it looks like they require Python 2… but I makes a good screenshot anyway.