-
Notifications
You must be signed in to change notification settings - Fork 322
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
Proposal(lang-python): Use fuse-overlayfs instead of pyenv-hooks for persistence. #1071
Comments
Here's another proposed solution based on the discussion I had with @akosyakov on here. Uses At first I was trying to use pyenv-virtualenv plugin of Commit: axonasif@480fadd Experimental image: Try on a repo: https://github.com/axonasif/test/tree/python_fix_test_venv Implications
|
Using pyenv-hook for setting up python/pip persistence over pyenv bought in unwanted issues and increased a maintenance burden, something that I had not anticipated (#868).
Before going ahead with pyenv-hooks I had tried native kernel overlayfs but that didn't work1. Recently, I looked for alternative methods in an effort to simplify the pyenv setup, it seems that a fuse implementation of overlayfs works.
By using fuse-overlayfs, we can get rid of all the custom logic that was implemented via pyenv-hook bash scripts.
Implications:
/dev/fuse
, if not found it will simply skip mounting on$HOME/.pyenv
and things will keep working normally except they will lack persistence between prebuilds/reboots.Questions
gp validate
environment?$GITPOD_REPO_ROOT
exists. Means it will be mounted beforesupervisor
tasks are executed in a prebuild-workspace or user-workspace. Uses an atomic lock to avoid race conditions and makes all the terminals await for the completion.Proposed implementation
fuse-overlayfs
for easy use.You can check the following commit for an example implementation: axonasif@d9ec66a
A docker image with the above change is available as:
axonasif/workspace-python:debug2
fuse-overlayfs for solving Ruby issues
It could help with Ruby and nix as well with one simple command.
Some recent examples
Footnotes
https://gitpod.slack.com/archives/C02F19UUW6S/p1653321259722329 (internal) ↩
The text was updated successfully, but these errors were encountered: