Commit 8201f8c8 authored by Matt Harbison's avatar Matt Harbison
Browse files

pyoxidizer: add the user site to `sys.path` on macOS

This allows 3rd party extensions that are installed with `pip` to be picked up,
similar to what we do on Windows.  PyOxidizer has a bug that prevents this from
working without this extra help (see 95af358fcdfe), though it appears there's
another wrinkle here with `sys._framework` too.

I needed this to see if the problem[1] loading the keyring extension on Windows
also occurs on macOS (it doesn't).

[1] https://github.com/indygreg/PyOxidizer/issues/445

Differential Revision: https://phab.mercurial-scm.org/D11452
parent 7bc1beedd718
......@@ -58,6 +58,20 @@ if os.name == 'nt':
'site-packages',
)
)
elif sys.platform == "darwin":
vi = sys.version_info
def joinuser(*args):
return os.path.expanduser(os.path.join(*args))
# Note: site.py uses `sys._framework` instead of hardcoding "Python" as the
# 3rd arg, but that is set to an empty string in an oxidized binary. It
# has a fallback to ~/.local when `sys._framework` isn't set, but we want
# to match what the system python uses, so it sees pip installed stuff.
usersite = joinuser("~", "Library", "Python",
"%d.%d" % vi[:2], "lib/python/site-packages")
sys.path.append(usersite)
import hgdemandimport;
hgdemandimport.enable();
from mercurial import dispatch;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment