The upstream version of requests contains a copy
of urllib3 and cardet library, common practice in many distros
to create symbolic links for these libraries instead of creating
a huge package which contains the same library as the distro provides
as separate package as well.
Now devstack upgrades the urllib3 to incompatible version,
but it leaves the requests unchanged because Fedora already has the
latest version.
The issue does not happens with Ubuntu because it has older requests
and devstack updates it as well.
The pip installed version contains a bundled urllib3 and the actually
installed urllib3 version does not matters.
This is not the `usual` distro package overrides pip installed package
case.
Change-Id: Icfa71368384b0c2e3ff39265b2fa9190b5566b9b
Related-Bug: #1476770
... | ... |
@@ -134,6 +134,31 @@ if is_fedora; then |
134 | 134 |
sudo systemctl start iptables |
135 | 135 |
fi |
136 | 136 |
fi |
137 |
+ |
|
138 |
+ if [[ "$os_RELEASE" -ge "21" ]]; then |
|
139 |
+ # requests ships vendored version of chardet/urllib3, but on |
|
140 |
+ # fedora these are symlinked back to the primary versions to |
|
141 |
+ # avoid duplication of code on disk. This is fine when |
|
142 |
+ # maintainers keep things in sync, but since devstack takes |
|
143 |
+ # over and installs later versions via pip we can end up with |
|
144 |
+ # incompatible versions. |
|
145 |
+ # |
|
146 |
+ # The rpm package is not removed to preserve the dependent |
|
147 |
+ # packages like cloud-init; rather we remove the symlinks and |
|
148 |
+ # force a re-install of requests so the vendored versions it |
|
149 |
+ # wants are present. |
|
150 |
+ # |
|
151 |
+ # Realted issues: |
|
152 |
+ # https://bugs.launchpad.net/glance/+bug/1476770 |
|
153 |
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1253823 |
|
154 |
+ |
|
155 |
+ base_path=/usr/lib/python2.7/site-packages/requests/packages |
|
156 |
+ if [ -L $base_path/chardet -o -L $base_path/urllib3 ]; then |
|
157 |
+ sudo rm -f /usr/lib/python2.7/site-packages/requests/packages/{chardet,urllib3} |
|
158 |
+ # install requests with the bundled urllib3 to avoid conflicts |
|
159 |
+ pip_install --upgrade --force-reinstall requests |
|
160 |
+ fi |
|
161 |
+ fi |
|
137 | 162 |
fi |
138 | 163 |
|
139 | 164 |
# The version of pip(1.5.4) supported by python-virtualenv(1.11.4) has |