Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First try at a Fuserunner #60

Open
wants to merge 22 commits into
base: master
Choose a base branch
from

Conversation

matclab
Copy link

@matclab matclab commented Apr 21, 2015

This is a first try…
The rationale behind this pull request is to provide a more robust way to collect dependencies than by using other runners which all have shortcomings (I still have some problems with StraceRunner, which is understandable, as strace log format was probably not meant as an interface for other programs).

It works as described hereafter:

  • the working dir is fuse mounted on a subdirectory ./.fusefab/#pid,
  • the fuse filesystem is a proxy that record each action on the filesystem, for process that share the same process group id than fabricate (thus eliminating actions done by other daemons, or by user),
  • at the end of running a command, the deps and outputs are collected from the fuse proxy.

The idea mainly comes from TUP build system : http://gittup.org/tup/
The cons of such a method is that fabricate.py becomes a bit eavier as it incorporate the fuse.py binding to the fuse librayr (which obviously become a dependancy). I also for now didn't take parallel execution into account.

So… Tell me what you think about this pull request (which may certainly be improved).

I will now try to add some automated test cases (with py.test ?) in order to have a better confidence in its working properly. And I may perhaps generalize the use of logging instead of printing to stderr…

Note that part of this work was founded by my employer Systerel.

@matclab matclab force-pushed the fuserunner branch 2 times, most recently from 7edf4ad to 6c287aa Compare October 11, 2015 13:26
@chriscz
Copy link
Collaborator

chriscz commented Mar 16, 2017

Hi @matclab .
Thanks so much for the contribution.
This would be a really neat feature to integrate into fabricate.

As I am still new to this project and its code base,
it will take a while before I get around to merging it.

I will be merging #65 as soon as I have rights to the PyPI package.

@matclab
Copy link
Author

matclab commented Mar 17, 2017

I haven't work on it for a long time, but I think there are still some issues about the way the fuse and fabricate processes communicates. I'm not sure but it is possible that from time to time the build was unexpectedly failing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants