Export the packages anvil requires.

Export and ensure that we don't remove the
dependencies that anvil and openstack source
directories requires to operate.

- d2to1 is required to even run setup.py
- setuptools-git (the same)
- pbr (the same)

Fixes bug: #1189707

Change-Id: I099856eba07784afa2b65c3e4ebf6c0abcaab4bd
This commit is contained in:
Joshua Harlow
2013-06-10 18:07:27 -07:00
parent 8d8da96137
commit 74127fc2a1
4 changed files with 65 additions and 20 deletions

View File

@@ -77,7 +77,6 @@ class DependencyHandler(object):
self.distro = distro
self.root_dir = root_dir
self.instances = instances
self.deps_dir = sh.joinpths(self.root_dir, "deps")
self.download_dir = sh.joinpths(self.deps_dir, "download")
self.log_dir = sh.joinpths(self.deps_dir, "output")
@@ -88,10 +87,17 @@ class DependencyHandler(object):
self.pip_executable = str(self.distro.get_command_config('pip'))
self.pips_to_install = []
self.forced_packages = []
# these packages conflict with our deps and must be removed
# These packages conflict with our deps and must be removed
self.nopackages = []
self.package_dirs = self._get_package_dirs(instances)
self.python_names = self._get_python_names(self.package_dirs)
# Instantiate this as late as we can.
self._python_names = None
@property
def python_names(self):
if self._python_names is None:
self._python_names = self._get_python_names(self.package_dirs)
return self._python_names
@staticmethod
def _get_package_dirs(instances):

View File

@@ -21,6 +21,7 @@ import sys
from datetime import datetime
from anvil import colorizer
from anvil import env
from anvil import log as logging
from anvil.packaging import base
from anvil.packaging.helpers import pip_helper
@@ -412,11 +413,17 @@ BuildArch: noarch
sh.unlink(self.tracereader.filename())
self.tracereader = None
# Don't take out packages that anvil requires to run...
no_remove = os.env.get_key('REQUIRED_PACKAGES', '').split()
no_remove = sorted(set(no_remove))
rpm_names = []
for name in self._convert_names_python2rpm(self.python_names):
if self.helper.is_installed(name):
if self.helper.is_installed(name) and name not in no_remove:
rpm_names.append(name)
if rpm_names:
cmdline = ["yum", "remove", "--remove-leaves", "-y"] + rpm_names
cmdline = ["yum", "remove", "--remove-leaves", "-y"]
for p in no_remove:
cmdline.append("--exclude=%s" % (p))
cmdline.extend(rpm_names)
sh.execute(cmdline, stdout_fh=sys.stdout, stderr_fh=sys.stderr)