Fix virtualenv creation when WORKON_HOME lives within a symlink dir #145
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For creating virtualenvs, pew used to cd into
WORKON_HOME
and then invokevirtualenv
. IfWORKON_HOME
happens to be in a symlinked directory, the path resolution will consider the real path, not the symlinked one. If the symlink target changes at a later time, all the shebangs that use the real path, which is now obsolete, will be broken.Eg. if
WORKON_HOME
is/home/user/.local/venvs
and/home/user/.local
is a symlink to/opt/local
,then current pew will create the virtualenv with
/opt/local
as the root, thus creating scripts with#!/opt/local/venvs/foo/bin/python
instead of#!/home/user/.local/venvs/foo/bin/python
Before:
This patch changes the
check_call()
for virtualenv to not cd anywhere and instead passes the absolute (but not resolved/real) path to the virtualenv home (eg./home/user/.local/venvs/foo
).After: