summaryrefslogtreecommitdiffstats
path: root/__root__
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2015-01-13 13:24:46 +0100
committerJan Pokorný <jpokorny@redhat.com>2015-01-14 09:14:53 +0100
commit4a81c51f425db8fa9029c6e1a89dd6d6f8de407a (patch)
tree268c0ee31643df7361b813cf51e3548239ea99cd /__root__
parent381ccf813a49e9c07f48a0bfdc5134b3c0e9a26f (diff)
downloadclufter-4a81c51f425db8fa9029c6e1a89dd6d6f8de407a.tar.gz
clufter-4a81c51f425db8fa9029c6e1a89dd6d6f8de407a.tar.xz
clufter-4a81c51f425db8fa9029c6e1a89dd6d6f8de407a.zip
setup: handle case of local pkg aliasing w/ system-wide
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to '__root__')
-rw-r--r--__root__/setup.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/__root__/setup.py b/__root__/setup.py
index 1613ec9..6a8df6b 100644
--- a/__root__/setup.py
+++ b/__root__/setup.py
@@ -21,7 +21,7 @@ from os.path import (join as path_join, realpath as path_real,
isabs as path_isabs, isdir as path_isdir,
isfile as path_isfile, splitext as path_splitext)
from shutil import copy, copymode
-from sys import prefix as sys_prefix
+from sys import modules as sys_modules, prefix as sys_prefix
from distutils.cmd import Command
from distutils.errors import DistutilsSetupError
@@ -449,13 +449,19 @@ def setup_pkg_prepare(pkg_name, pkg_prepare_options=()):
self_discovery_plan = ['__project__']
while True:
- pkg = {}
- project = self_discovery_plan.pop()
+ pkg, backup_mod, project = {}, None, self_discovery_plan.pop()
try:
# XXX check relative import
- pkg = __import__(project, globals=pkg, level=1)
+ backup_mod = sys_modules.get(project)
+ if backup_mod:
+ if not hasattr(backup_mod, '__path__'): # not the case for builtins
+ continue
+ backup_mod = sys_modules.pop(project)
+ pkg = __import__(project, globals=pkg)
break
except ImportError:
+ if backup_mod:
+ sys_modules[project] = backup_mod
if project == '__project__':
from glob import iglob
self_discovery_plan.extend(p[:-len('.egg-info')].split('-', 1)[0]