diff options
author | Corentin Chary <corentin.chary@gmail.com> | 2012-05-24 23:44:05 +0200 |
---|---|---|
committer | Corentin Chary <corentin.chary@gmail.com> | 2012-05-24 23:44:05 +0200 |
commit | 177d77842f41e21566a6dc6d9aa9c6a97576a550 (patch) | |
tree | 1bcc86afe295e89f0224b5c6429e7c19b1ae21bf /pym/euscan/helpers.py | |
parent | htdocs: add static symlink (diff) | |
download | euscan-177d77842f41e21566a6dc6d9aa9c6a97576a550.tar.gz euscan-177d77842f41e21566a6dc6d9aa9c6a97576a550.tar.bz2 euscan-177d77842f41e21566a6dc6d9aa9c6a97576a550.zip |
euscan: allow to use .ebuild files in any directory
Even outside PORTDIR_OVERLAY !
Signed-off-by: Corentin Chary <corentin.chary@gmail.com>
Diffstat (limited to 'pym/euscan/helpers.py')
-rw-r--r-- | pym/euscan/helpers.py | 91 |
1 files changed, 3 insertions, 88 deletions
diff --git a/pym/euscan/helpers.py b/pym/euscan/helpers.py index 7af055b..ab0fcda 100644 --- a/pym/euscan/helpers.py +++ b/pym/euscan/helpers.py @@ -3,10 +3,12 @@ import sys import re import pkg_resources import errno -import imp import urllib2 +import portage +from portage import dep + try: from urllib import robotparser from urllib import urlparse @@ -14,13 +16,6 @@ except ImportError: import robotparser import urlparse -import portage -from portage import dep -from portage.const import VDB_PATH -from portage import _encodings -from portage import _shell_quote -from portage import _unicode_decode -from portage import _unicode_encode from euscan import CONFIG, BLACKLIST_VERSIONS, ROBOTS_TXT_BLACKLIST_DOMAINS import euscan @@ -546,7 +541,6 @@ def generate_scan_paths(url): return steps - def parse_mirror(uri): from random import shuffle @@ -573,82 +567,3 @@ def parse_mirror(uri): return None return uri - - -# Stolen from ebuild -def query_from_ebuild(ebuild): - pf = None - if ebuild.endswith(".ebuild"): - pf = os.path.basename(ebuild)[:-7] - else: - return False - - if not os.path.isabs(ebuild): - mycwd = os.getcwd() - # Try to get the non-canonical path from the PWD evironment variable, - # since the canonical path returned from os.getcwd() may may be - # unusable in cases where the directory stucture is built from - # symlinks. - pwd = os.environ.get('PWD', '') - if sys.hexversion < 0x3000000: - pwd = _unicode_decode(pwd, encoding=_encodings['content'], - errors='strict') - if pwd and pwd != mycwd and \ - os.path.realpath(pwd) == mycwd: - mycwd = portage.normalize_path(pwd) - ebuild = os.path.join(mycwd, ebuild) - - ebuild = portage.normalize_path(ebuild) - # portdbapi uses the canonical path for the base of the portage tree, but - # subdirectories of the base can be built from symlinks (like crossdev - # does). - ebuild_portdir = os.path.realpath( - os.path.dirname(os.path.dirname(os.path.dirname(ebuild)))) - ebuild = os.path.join(ebuild_portdir, *ebuild.split(os.path.sep)[-3:]) - vdb_path = os.path.join(portage.settings['ROOT'], VDB_PATH) - - # Make sure that portdb.findname() returns the correct ebuild. - if ebuild_portdir != vdb_path and \ - ebuild_portdir not in portage.portdb.porttrees: - if sys.hexversion >= 0x3000000: - os.environ["PORTDIR_OVERLAY"] = \ - os.environ.get("PORTDIR_OVERLAY", "") + \ - " " + _shell_quote(ebuild_portdir) - else: - os.environ["PORTDIR_OVERLAY"] = \ - os.environ.get("PORTDIR_OVERLAY", "") + \ - " " + _unicode_encode(_shell_quote(ebuild_portdir), - encoding=_encodings['content'], errors='strict') - - portage.close_portdbapi_caches() - imp.reload(portage) - del portage.portdb.porttrees[1:] - if ebuild_portdir != portage.portdb.porttree_root: - portage.portdb.porttrees.append(ebuild_portdir) - - if not os.path.exists(ebuild): - return False - - ebuild_split = ebuild.split("/") - cpv = "%s/%s" % (ebuild_split[-3], pf) - - if not portage.catpkgsplit(cpv): - return False - - if ebuild.startswith(os.path.join(portage.root, portage.const.VDB_PATH)): - mytree = "vartree" - - portage_ebuild = portage.db[portage.root][mytree].dbapi.findname(cpv) - - if os.path.realpath(portage_ebuild) != ebuild: - return False - - else: - mytree = "porttree" - - portage_ebuild = portage.portdb.findname(cpv) - - if not portage_ebuild or portage_ebuild != ebuild: - return False - - return cpv |