From b6251317271a9b0a339768ce2234b32099438062 Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Mon, 29 Feb 2016 14:29:07 +1100 Subject: [PATCH] Reinstall requests on Fedora builds The fedora-minimal builds do not include the package python-requests, but some of the later puppet (via zuul) will end up pip-installing it. This leaves the system in a very precarious state -- if the python-requests package ever gets installed over the pip-installed package everything is broken because of the vendoring/symlinking issues mentioned in the comment. This is the most logical place to fix this up so we're in a consistent state with a pip-managed requests package. Devstack can clean this up (I6b06dcd897999e0642b387e8d13a473934ed0956) but better to have the base system in a consistent state. Change-Id: If3f244ed4f62da25dc42813b4bda2f374f002517 --- install_puppet.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/install_puppet.sh b/install_puppet.sh index d396a409c2..361bb83336 100755 --- a/install_puppet.sh +++ b/install_puppet.sh @@ -102,6 +102,21 @@ function setup_puppet_fedora { # https://bugzilla.redhat.com/show_bug.cgi?id=1254616 sudo sed -i.bak '/^[^#].*/ s|\(^.*confine :exists => \"/run/systemd/system\".*$\)|#\ \1|' \ /usr/share/ruby/vendor_ruby/puppet/provider/service/systemd.rb + + # upstream "requests" pip package vendors urllib3 and chardet + # packages. The fedora packages un-vendor this, and symlink those + # sub-packages back to packaged versions. We get into a real mess + # of if some of the puppet ends up pulling in "requests" from pip, + # and then something like devstack does a "yum install + # python-requests" which does a very bad job at overwriting the + # pip-installed version (symlinks and existing directories don't + # mix). The solution is to pre-install the python-requests + # package; clear it out and re-install from pip. This way, the + # package is installed for dependencies, and we have a pip-managed + # requests with correctly vendored sub-packages. + sudo ${YUM} install -y python-requests + sudo rm -rf /usr/lib/python2.7/site-packages/requests/* + sudo pip install requests } function setup_puppet_rhel7 {