summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2014-09-19 13:59:14 +0200
committerJan Pokorný <jpokorny@redhat.com>2014-09-22 20:01:54 +0200
commitd0327feef5767566a36ecdd1a70bd73650070cfb (patch)
tree4502c0a4e14890c43fc6087d4788209927cec618
parentafb36c5d36b3798e20a3a87a4bf3df3802925f6e (diff)
downloadclufter-d0327feef5767566a36ecdd1a70bd73650070cfb.tar.gz
clufter-d0327feef5767566a36ecdd1a70bd73650070cfb.tar.xz
clufter-d0327feef5767566a36ecdd1a70bd73650070cfb.zip
setup.py: smarter self-discovery (how am I called as package)
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
-rw-r--r--__root__/setup.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/__root__/setup.py b/__root__/setup.py
index bc3a613..11a2665 100644
--- a/__root__/setup.py
+++ b/__root__/setup.py
@@ -391,8 +391,22 @@ def setup_pkg_prepare(pkg_name, pkg_prepare_options=()):
# =========================================================================
-pkg = {}
-pkg = __import__('__project__', globals=pkg, level=1)
+self_discovery_plan = ['__project__']
+while True:
+ pkg = {}
+ project = self_discovery_plan.pop()
+ try:
+ # XXX check relative import
+ pkg = __import__(project, globals=pkg, level=1)
+ break
+ except ImportError:
+ if project == '__project__':
+ from glob import iglob
+ self_discovery_plan.extend(p[:-len('.egg-info')].split('-', 1)[0]
+ for p in iglob('*.egg-info'))
+ if not self_discovery_plan:
+ print "Cannot find myself, please help me with __project__ symlink"
+ raise
#pkg_root = path_real('__project__')
pkg_name = pkg.package_name()