diff options
author | Jan Pokorný <jpokorny@redhat.com> | 2014-09-19 13:59:14 +0200 |
---|---|---|
committer | Jan Pokorný <jpokorny@redhat.com> | 2014-09-22 20:01:54 +0200 |
commit | d0327feef5767566a36ecdd1a70bd73650070cfb (patch) | |
tree | 4502c0a4e14890c43fc6087d4788209927cec618 | |
parent | afb36c5d36b3798e20a3a87a4bf3df3802925f6e (diff) | |
download | clufter-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.py | 18 |
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() |