summaryrefslogtreecommitdiffstats
path: root/pym/portage/_sets/security.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/_sets/security.py')
-rw-r--r--pym/portage/_sets/security.py89
1 files changed, 0 insertions, 89 deletions
diff --git a/pym/portage/_sets/security.py b/pym/portage/_sets/security.py
deleted file mode 100644
index a2630fe6f..000000000
--- a/pym/portage/_sets/security.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-import os
-import portage.glsa as glsa
-from portage.util import grabfile, write_atomic
-from portage._sets.base import PackageSet
-from portage.versions import catpkgsplit, pkgcmp
-from portage._sets import get_boolean
-
-__all__ = ["SecuritySet", "NewGlsaSet", "NewAffectedSet", "AffectedSet"]
-
-class SecuritySet(PackageSet):
- _operations = ["merge"]
- _skip_applied = False
-
- description = "package set that includes all packages possibly affected by a GLSA"
-
- def __init__(self, settings, vardbapi, portdbapi, least_change=True):
- super(SecuritySet, self).__init__()
- self._settings = settings
- self._vardbapi = vardbapi
- self._portdbapi = portdbapi
- self._least_change = least_change
-
- def getGlsaList(self, skip_applied):
- glsaindexlist = glsa.get_glsa_list(self._settings)
- if skip_applied:
- applied_list = glsa.get_applied_glsas(self._settings)
- glsaindexlist = set(glsaindexlist).difference(applied_list)
- glsaindexlist = list(glsaindexlist)
- glsaindexlist.sort()
- return glsaindexlist
-
- def load(self):
- glsaindexlist = self.getGlsaList(self._skip_applied)
- atomlist = []
- for glsaid in glsaindexlist:
- myglsa = glsa.Glsa(glsaid, self._settings, self._vardbapi, self._portdbapi)
- #print glsaid, myglsa.isVulnerable(), myglsa.isApplied(), myglsa.getMergeList()
- if self.useGlsa(myglsa):
- atomlist += ["="+x for x in myglsa.getMergeList(least_change=self._least_change)]
- self._setAtoms(self._reduce(atomlist))
-
- def _reduce(self, atomlist):
- mydict = {}
- for atom in atomlist[:]:
- cpv = self._portdbapi.xmatch("match-all", atom)[0]
- slot = self._portdbapi.aux_get(cpv, ["SLOT"])[0]
- cps = "/".join(catpkgsplit(cpv)[0:2]) + ":" + slot
- if not cps in mydict:
- mydict[cps] = (atom, cpv)
- else:
- other_cpv = mydict[cps][1]
- if pkgcmp(catpkgsplit(cpv)[1:], catpkgsplit(other_cpv)[1:]) > 0:
- atomlist.remove(mydict[cps][0])
- mydict[cps] = (atom, cpv)
- return atomlist
-
- def useGlsa(self, myglsa):
- return True
-
- def updateAppliedList(self):
- glsaindexlist = self.getGlsaList(True)
- applied_list = glsa.get_applied_glsas(self._settings)
- for glsaid in glsaindexlist:
- myglsa = glsa.Glsa(glsaid, self._settings, self._vardbapi, self._portdbapi)
- if not myglsa.isVulnerable() and not myglsa.nr in applied_list:
- myglsa.inject()
-
- def singleBuilder(cls, options, settings, trees):
- least_change = not get_boolean(options, "use_emerge_resolver", False)
- return cls(settings, trees["vartree"].dbapi, trees["porttree"].dbapi, least_change=least_change)
- singleBuilder = classmethod(singleBuilder)
-
-class NewGlsaSet(SecuritySet):
- _skip_applied = True
- description = "Package set that includes all packages possibly affected by an unapplied GLSA"
-
-class AffectedSet(SecuritySet):
- description = "Package set that includes all packages affected by an unapplied GLSA"
-
- def useGlsa(self, myglsa):
- return myglsa.isVulnerable()
-
-class NewAffectedSet(AffectedSet):
- _skip_applied = True
- description = "Package set that includes all packages affected by an unapplied GLSA"