Fix how we weren't looking at installed packages.
Change-Id: Ia6590e7353841acc5b514ba62605a99fc10e7f7d
This commit is contained in:
parent
481770e4d1
commit
3bd140827f
@ -14,7 +14,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import pkg_resources
|
||||
import re
|
||||
|
||||
@ -153,7 +152,7 @@ class Helper(object):
|
||||
self._pip_executable = sh.which_first(['pip-python', 'pip'])
|
||||
self._installed_cache = None
|
||||
|
||||
def _list_installed(self):
|
||||
def _get_installed(self):
|
||||
cmd = [self._pip_executable] + FREEZE_CMD
|
||||
(stdout, _stderr) = sh.execute(cmd)
|
||||
return parse_requirements(stdout, True)
|
||||
@ -161,21 +160,21 @@ class Helper(object):
|
||||
def uncache(self):
|
||||
self._installed_cache = None
|
||||
|
||||
def whats_installed(self):
|
||||
def list_installed(self):
|
||||
if self._installed_cache is None:
|
||||
self._installed_cache = self._list_installed()
|
||||
return copy.copy(self._installed_cache)
|
||||
self._installed_cache = self._get_installed()
|
||||
return list(self._installed_cache)
|
||||
|
||||
def is_installed(self, name):
|
||||
if self.get_installed(name):
|
||||
matches = self.find_installed(name)
|
||||
if len(matches):
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_installed(self, name):
|
||||
whats_there = self.whats_installed()
|
||||
wanted_package = create_requirement(name)
|
||||
for whats_installed in whats_there:
|
||||
if not (wanted_package.key == whats_installed.key):
|
||||
continue
|
||||
return whats_installed
|
||||
return None
|
||||
def find_installed(self, name):
|
||||
wanted_pkg = create_requirement(name)
|
||||
matches = []
|
||||
for pkg in self.list_installed():
|
||||
if pkg.key == wanted_pkg.key:
|
||||
matches.append(pkg)
|
||||
return matches
|
||||
|
@ -53,21 +53,24 @@ class Helper(object):
|
||||
tracewriter.package_installed(action['name'])
|
||||
|
||||
def is_installed(self, name):
|
||||
if len(self.get_installed(name)):
|
||||
matches = self.find_installed(name)
|
||||
if len(matches):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
return False
|
||||
|
||||
def get_available(self):
|
||||
def find_installed(self, name):
|
||||
installed = self.list_installed()
|
||||
return [item for item in installed if item['name'] == name]
|
||||
|
||||
def list_available(self):
|
||||
if self._available is None:
|
||||
self._available = self._yyoom(['list', 'available'], 'list-available')
|
||||
return self._available
|
||||
return list(self._available)
|
||||
|
||||
def get_installed(self, name):
|
||||
def list_installed(self):
|
||||
if self._installed is None:
|
||||
self._installed = self._yyoom(['list', 'installed'], 'list-installed')
|
||||
return [item for item in self._installed
|
||||
if item['name'] == name]
|
||||
return list(self._installed)
|
||||
|
||||
def builddep(self, srpm_path, tracewriter=None):
|
||||
self._trace_installed_packages(tracewriter,
|
||||
|
@ -277,9 +277,12 @@ class YumDependencyHandler(base.DependencyHandler):
|
||||
sh.copy(repo_filename, system_repo_filename, tracewriter=self.tracewriter)
|
||||
LOG.info("Copied to %s", system_repo_filename)
|
||||
|
||||
def _get_yum_available(self):
|
||||
def _get_known_yum_packages(self):
|
||||
yum_map = collections.defaultdict(list)
|
||||
for pkg in self.helper.get_available():
|
||||
pkgs = []
|
||||
pkgs.extend(self.helper.list_available())
|
||||
pkgs.extend(self.helper.list_installed())
|
||||
for pkg in pkgs:
|
||||
for provides in pkg['provides']:
|
||||
yum_map[provides[0]].append((pkg['version'], pkg['repo']))
|
||||
# Note(harlowja): this is done to remove the default lists
|
||||
@ -296,7 +299,7 @@ class YumDependencyHandler(base.DependencyHandler):
|
||||
return (None, None)
|
||||
|
||||
def filter_download_requires(self):
|
||||
yum_map = self._get_yum_available()
|
||||
yum_map = self._get_known_yum_packages()
|
||||
pip_origins = {}
|
||||
for line in self.pips_to_install:
|
||||
req = pip_helper.extract_requirement(line)
|
||||
@ -337,7 +340,7 @@ class YumDependencyHandler(base.DependencyHandler):
|
||||
# build or can satisfy by other means
|
||||
no_pips = [pkg_resources.Requirement.parse(name).key
|
||||
for name in self.python_names]
|
||||
yum_map = self._get_yum_available()
|
||||
yum_map = self._get_known_yum_packages()
|
||||
pips_keys = set([p.key for p in pips_downloaded])
|
||||
|
||||
def _filter_package_files(package_files):
|
||||
|
Loading…
x
Reference in New Issue
Block a user