Commit 488b2dfd authored by Julien Muchembled's avatar Julien Muchembled

Ignore directory containing the Python library

This is useful when using OS Python & eggs.

Useless for SlapOS.
parent b668a6cd
......@@ -1952,7 +1952,8 @@ def _dists_sig(dists):
continue
seen.add(dist)
location = dist.location
if dist.precedence == pkg_resources.DEVELOP_DIST:
if (dist.precedence == pkg_resources.DEVELOP_DIST
and location != zc.buildout.easy_install.python_lib):
result.append(dist.project_name + '-' + _dir_hash(location))
else:
result.append(dist.project_name + '-' + dist.version)
......
......@@ -19,6 +19,7 @@ installed.
"""
import distutils.errors
import distutils.sysconfig
import errno
import glob
import logging
......@@ -105,6 +106,8 @@ buildout_and_setuptools_path = [
setuptools_pythonpath,
]
python_lib = distutils.sysconfig.get_python_lib()
FILE_SCHEME = re.compile('file://', re.I).match
DUNDER_FILE_PATTERN = re.compile(r"__file__ = '(?P<filename>.+)'$")
......@@ -1258,6 +1261,10 @@ def scripts(reqs, working_set, executable, dest=None,
if p not in unique_path:
unique_path.append(p)
path = list(map(realpath, unique_path))
try:
path.remove(python_lib)
except ValueError:
pass
generated = []
......@@ -1408,6 +1415,12 @@ join = os.path.join
base = os.path.dirname(os.path.abspath(os.path.realpath(__file__)))
"""
def _initialization(path, initialization):
return """sys.path[0:0] = [
%s,
]
""" % path + initialization if path else initialization
def _script(module_name, attrs, path, dest, arguments, initialization, rsetup):
if is_win32:
dest += '-script.py'
......@@ -1416,11 +1429,10 @@ def _script(module_name, attrs, path, dest, arguments, initialization, rsetup):
contents = script_template % dict(
python = python,
path = path,
module_name = module_name,
attrs = attrs,
arguments = arguments,
initialization = initialization,
initialization = _initialization(path, initialization),
relative_paths_setup = rsetup,
)
return _create_script(contents, dest)
......@@ -1453,8 +1465,7 @@ def _distutils_script(path, dest, script_content, initialization, rsetup):
contents = distutils_script_template % dict(
python = python,
path = path,
initialization = initialization,
initialization = _initialization(path, initialization),
relative_paths_setup = rsetup,
before = before,
after = after
......@@ -1522,9 +1533,6 @@ script_template = script_header + '''\
%(relative_paths_setup)s
import sys
sys.path[0:0] = [
%(path)s,
]
%(initialization)s
import %(module_name)s
......@@ -1536,9 +1544,6 @@ distutils_script_template = script_header + '''
%(before)s
%(relative_paths_setup)s
import sys
sys.path[0:0] = [
%(path)s,
]
%(initialization)s
%(after)s'''
......@@ -1551,14 +1556,12 @@ def _pyscript(path, dest, rsetup, initialization=''):
dest += '-script.py'
python = _safe_arg(sys.executable)
if path:
path += ',' # Courtesy comma at the end of the list.
contents = py_script_template % dict(
python = python,
path = path,
relative_paths_setup = rsetup,
initialization=initialization,
initialization = _initialization(path, initialization),
)
changed = _file_changed(dest, contents)
......@@ -1588,9 +1591,6 @@ py_script_template = script_header + '''\
%(relative_paths_setup)s
import sys
sys.path[0:0] = [
%(path)s
]
%(initialization)s
_interactive = True
......
......@@ -687,9 +687,9 @@ An interpreter can also be generated without other eggs:
<BLANKLINE>
import sys
<BLANKLINE>
sys.path[0:0] = [
<BLANKLINE>
]
<BLANKLINE>
_interactive = True
...
An additional argument can be passed to define which scripts to install
......
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