Example #1
0
def dep_expand(mydep, mydb=None, use_cache=1, settings=None):
	'''
	@rtype: Atom
	'''
	if not len(mydep):
		return mydep
	if mydep[0]=="*":
		mydep=mydep[1:]
	orig_dep = mydep
	if isinstance(orig_dep, Atom):
		mydep = orig_dep.cp
	else:
		mydep = orig_dep
		has_cat = '/' in orig_dep
		if not has_cat:
			alphanum = re.search(r'\w', orig_dep)
			if alphanum:
				mydep = orig_dep[:alphanum.start()] + "null/" + \
					orig_dep[alphanum.start():]
		try:
			mydep = Atom(mydep)
		except InvalidAtom:
			# Missing '=' prefix is allowed for backward compatibility.
			if not isvalidatom("=" + mydep):
				raise
			mydep = Atom('=' + mydep)
			orig_dep = '=' + orig_dep
		if not has_cat:
			null_cat, pn = catsplit(mydep.cp)
			mydep = pn
		else:
			mydep = mydep.cp
	expanded = cpv_expand(mydep, mydb=mydb,
		use_cache=use_cache, settings=settings)
	return Atom(orig_dep.replace(mydep, expanded, 1))
def dep_expand(mydep, mydb=None, use_cache=1, settings=None):
	'''
	@rtype: Atom
	'''
	if not len(mydep):
		return mydep
	if mydep[0]=="*":
		mydep=mydep[1:]
	orig_dep = mydep
	if isinstance(orig_dep, Atom):
		mydep = orig_dep.cp
	else:
		mydep = orig_dep
		has_cat = '/' in orig_dep
		if not has_cat:
			alphanum = re.search(r'\w', orig_dep)
			if alphanum:
				mydep = orig_dep[:alphanum.start()] + "null/" + \
					orig_dep[alphanum.start():]
		try:
			mydep = Atom(mydep)
		except InvalidAtom:
			# Missing '=' prefix is allowed for backward compatibility.
			if not isvalidatom("=" + mydep):
				raise
			mydep = Atom('=' + mydep)
			orig_dep = '=' + orig_dep
		if not has_cat:
			null_cat, pn = catsplit(mydep.cp)
			mydep = pn
		else:
			mydep = mydep.cp
	expanded = cpv_expand(mydep, mydb=mydb,
		use_cache=use_cache, settings=settings)
	return Atom(orig_dep.replace(mydep, expanded, 1))
Example #3
0
File: core.py Project: axujen/eflag
def get_atom(package):
	"""Return the atom for a specified package name."""

	try:
		atom = cpv_expand.cpv_expand(package, mydb=porttree.portdbapi())
	except AmbiguousPackageName as e:
		print('Found several matches for "%s": %s' % (package, e))
		return None
	return atom if not atom.startswith('null/') else None
Example #4
0
def dep_expand(mydep, mydb=None, use_cache=1, settings=None):
    '''
	@rtype: Atom
	'''
    orig_dep = mydep
    if isinstance(orig_dep, Atom):
        has_cat = True
    else:
        if not mydep:
            return mydep
        if mydep[0] == "*":
            mydep = mydep[1:]
            orig_dep = mydep
        has_cat = '/' in orig_dep.split(':')[0]
        if not has_cat:
            alphanum = re.search(r'\w', orig_dep)
            if alphanum:
                mydep = orig_dep[:alphanum.start()] + "null/" + \
                 orig_dep[alphanum.start():]
        try:
            mydep = Atom(mydep, allow_repo=True)
        except InvalidAtom:
            # Missing '=' prefix is allowed for backward compatibility.
            if not isvalidatom("=" + mydep, allow_repo=True):
                raise
            mydep = Atom('=' + mydep, allow_repo=True)
            orig_dep = '=' + orig_dep
        if not has_cat:
            null_cat, pn = catsplit(mydep.cp)
            mydep = pn

    if has_cat:
        # Optimize most common cases to avoid calling cpv_expand.
        if not mydep.cp.startswith("virtual/"):
            return mydep
        if not hasattr(mydb, "cp_list") or \
         mydb.cp_list(mydep.cp):
            return mydep
        # Fallback to legacy cpv_expand for old-style PROVIDE virtuals.
        mydep = mydep.cp

    expanded = cpv_expand(mydep,
                          mydb=mydb,
                          use_cache=use_cache,
                          settings=settings)
    return Atom(orig_dep.replace(mydep, expanded, 1), allow_repo=True)
Example #5
0
def dep_expand(mydep, mydb=None, use_cache=1, settings=None):
	'''
	@rtype: Atom
	'''
	orig_dep = mydep
	if isinstance(orig_dep, Atom):
		has_cat = True
	else:
		if not mydep:
			return mydep
		if mydep[0] == "*":
			mydep = mydep[1:]
			orig_dep = mydep
		has_cat = '/' in orig_dep.split(':')[0]
		if not has_cat:
			alphanum = re.search(r'\w', orig_dep)
			if alphanum:
				mydep = orig_dep[:alphanum.start()] + "null/" + \
					orig_dep[alphanum.start():]
		try:
			mydep = Atom(mydep, allow_repo=True)
		except InvalidAtom:
			# Missing '=' prefix is allowed for backward compatibility.
			if not isvalidatom("=" + mydep, allow_repo=True):
				raise
			mydep = Atom('=' + mydep, allow_repo=True)
			orig_dep = '=' + orig_dep
		if not has_cat:
			null_cat, pn = catsplit(mydep.cp)
			mydep = pn

	if has_cat:
		# Optimize most common cases to avoid calling cpv_expand.
		if not mydep.cp.startswith("virtual/"):
			return mydep
		if not hasattr(mydb, "cp_list") or \
			mydb.cp_list(mydep.cp):
			return mydep
		# Fallback to legacy cpv_expand for old-style PROVIDE virtuals.
		mydep = mydep.cp

	expanded = cpv_expand(mydep, mydb=mydb,
		use_cache=use_cache, settings=settings)
	return Atom(orig_dep.replace(mydep, expanded, 1), allow_repo=True)