termux / proot

An chroot-like implementation using ptrace.
https://wiki.termux.com/wiki/PRoot
Other
783 stars 160 forks source link

Start refactoring so we can reasonably merge #37

Closed corbinlc closed 6 years ago

corbinlc commented 6 years ago

I would like to merge the PRoot used by GNURoot Debian and then UserLAnd with the termux one. This PR is just refining the termux code to get it in a better place for that. There will be more changes coming so you don't actually need to take this specific pull request, but I am using it as a place where we can start this conversation.

The biggest issue with merging is fake_id0 is big in termux and even bigger in UserLAnd (supports emulating file ownership and file permissions through meta files - there are other changes, but that is the big one). If both your and my code were broken up into more functions and many of those functions moved to other files...next change...then this would clean things up and make merging a lot easier.

corbinlc commented 6 years ago

Ok, so the next step is to break this up into multiple files as what is incoming from UserLAnd is very tightly coupled with fake_id0 but is big. Some refactoring will make this much easier to understand, review and merge. https://github.com/termux/proot/pull/37/commits/d3b20460741fdaab9582d675e477b075c6a0463d is the start of this.

corbinlc commented 6 years ago

I am doing this in pieces so you can respond if you don't like what you are seeing, but also so I can explain my steps.

michalbednarski commented 6 years ago

Nice, as I understand this isn't yet ready (I'll wait with merging until you say it's ready or I'll need to modify something in fake_id0 myself)

corbinlc commented 6 years ago

What all does the CI server do? How do I run your test suite to make sure this refactor didn't break anything important (really only doing compile right now since I am just moving this around)? What is in your test suite?

Once I know I am not hosing you, I think we can take the PR then. Your acceptance of the PR will already help us not trounce each other going forward. I will submit another one when I start adding in things from UserLAnd.

corbinlc commented 6 years ago

Just FYI... tell me if there is ever anything you need. Support, test devices, etc. I am merging with you and I hope that helps your work too, but it is not only altruistic as your work is very valuable to us.

michalbednarski commented 6 years ago

Thanks

The CI server was set up by @fornwall and isn't really used by me (Also it looks like there are less testing ran on pull requests than on commits in repository). The testsuite that exists was mostly inherited from upstream. To run tests you basically have to run make in src directory and then run make in tests directory. That being said there are currently failing tests: