Пример #1
0
 def analyze(self, pkginfo, tar):
     filenames = set(s.name for s in tar)
     depfilenames = set()
     for d in pkginfo['depends']:
         p = load_from_db(d)
         if not p:
             continue
         depfilenames |= set(name for name, _, _ in p['files'])
     filenames |= depfilenames
     for i in tar:
         if i.issym():
             self.infos.append(
                 ("symlink-found %s points to %s", (i.name, i.linkname)))
             linktarget = i.linkname
             linklead = os.path.dirname(i.name)
             # os.path.join drops the 1st arg if the 2nd one is absolute
             linkdest = os.path.join(linklead, linktarget)
             linkdest = os.path.normpath(linkdest).lstrip('/')
             if linkdest not in filenames:
                 self.errors.append(("dangling-symlink %s points to %s",
                                     (i.name, i.linkname)))
         if i.islnk():
             self.infos.append(
                 ("hardlink-found %s points to %s", (i.name, i.linkname)))
             if i.linkname not in filenames:
                 self.errors.append(("dangling-hardlink %s points to %s",
                                     (i.name, i.linkname)))
Пример #2
0
def getprovides(depends, provides):
	for i in depends:
		pac = package.load_from_db(i)

		if pac != None and "provides" in pac and pac["provides"] != None and len(pac["provides"]) > 0:
			provides[i] = pac["provides"]
		else:
			provides[i] = []
Пример #3
0
def getprovides(depends):
	provides = {}
	for i in depends:
		provides[i] = set()
		if i in implicit_provides:
			provides[i].update(implicit_provides[i])
		pac = package.load_from_db(i)
		if pac is None:
			continue
		if not pac["provides"]:
			continue
		provides[i].update(pac["provides"])
	return provides
Пример #4
0
def single_covered(depend):
	"Returns full coverage tree of one package, with loops broken"
	covered = set()
	todo = set([depend])
	while todo:
		i = todo.pop()
		covered.add(i)
		pac = package.load_from_db(i)
		if pac is None:
			continue
		todo |= set(pac["depends"]) - covered

	return covered - set([depend])
Пример #5
0
def getcovered(dependlist, covereddepend = None):
	"""
	Fills covereddepend with the full dependency tree
	of dependlist (iterable of package names)
	"""
	if covereddepend is None:
		covereddepend = set()

	for i in dependlist:
		pac = package.load_from_db(i)
		if pac != None and "depends" in pac:
			newdeps = [j for j in pac["depends"]
					if j != None and j not in covereddepend]
			covereddepend.update(newdeps)
			getcovered(newdeps, covereddepend)

	return covereddepend