def get_rdepend(self): """Get the contents of RDEPEND and parse it with self.parser.""" try: return self.parser(self.environment(('RDEPEND', ))[0]) except portage.exception.InvalidPackageName as err: raise errors.GentoolkitInvalidCPV(err)
def get_all_depends(self): """Get the contents of ?DEPEND and parse it with self.parser.""" env_vars = ('DEPEND', 'PDEPEND', 'RDEPEND') try: return self.parser(' '.join(self.environment(env_vars))) except portage.exception.InvalidPackageName as err: raise errors.GentoolkitInvalidCPV(err)
def _get_depend(self, env_vars, raw=False): raw_depend = " ".join(self.environment(env_vars)) if raw: return raw_depend try: return self.parser(raw_depend) except portage.exception.InvalidPackageName as err: raise errors.GentoolkitInvalidCPV(err)
def __init__(self, cpv, validate=False): self.cpv = cpv self._category = None self._name = None self._version = None self._revision = None self._cp = None self._fullversion = None self.validate = validate if validate and not self.name: raise errors.GentoolkitInvalidCPV(cpv)
def split_cpv(cpv, validate=True): """Split a cpv into category, name, version and revision. Modified from pkgcore.ebuild.cpv @type cpv: str @param cpv: pkg, cat/pkg, pkg-ver, cat/pkg-ver @rtype: tuple @return: (category, pkg_name, version, revision) Each tuple element is a string or empty string (""). """ category = name = version = revision = "" try: category, pkgver = cpv.rsplit("/", 1) except ValueError: pkgver = cpv if validate and category and not isvalid_cat_re.match(category): raise errors.GentoolkitInvalidCPV(cpv) pkg_chunks = pkgver.split("-") lpkg_chunks = len(pkg_chunks) if lpkg_chunks == 1: return (category, pkg_chunks[0], version, revision) if isvalid_rev(pkg_chunks[-1]): if lpkg_chunks < 3: # needs at least ('pkg', 'ver', 'rev') raise errors.GentoolkitInvalidCPV(cpv) rev = pkg_chunks.pop(-1) if rev: revision = rev if isvalid_version_re.match(pkg_chunks[-1]): version = pkg_chunks.pop(-1) if not isvalid_pkg_name(pkg_chunks): raise errors.GentoolkitInvalidCPV(cpv) name = "-".join(pkg_chunks) return (category, name, version, revision)