Skip to content

Commit c7e772c

Browse files
afazekasianw
authored andcommitted
Use the pip installed version of requests with Fedora
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
1 parent f560df3 commit c7e772c

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

tools/fixup_stuff.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,31 @@ if is_fedora; then
134134
sudo systemctl start iptables
135135
fi
136136
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
137162
fi
138163

139164
# The version of pip(1.5.4) supported by python-virtualenv(1.11.4) has

0 commit comments

Comments
 (0)