There are a number of different attempts to fix this issue, specifcally on RHEL6.
None of them actually get it right.
* This does not upgrade an OS installed package because we trust them to not make
these sorts of permissions mistakes. Also we do not have nor want to figure out the
right version that the OpenStack projects will require.
* This specfically targets the upstream package versions as we do not know how
later versions behave.
This should address the following reviews:
* https://review.openstack.org/#/c/50540/
* https://review.openstack.org/#/c/51233/ (1238707)
* https://review.openstack.org/#/c/51651/ (1239747)
* https://review.openstack.org/#/c/51843/
* https://review.openstack.org/#/c/51838/
* https://review.openstack.org/#/c/52148/ (1236941)
Change-Id: I99906451dc25654628187b383e8893cce0e276bf
| ... | ... |
@@ -35,25 +35,35 @@ FILES=$TOP_DIR/files |
| 35 | 35 |
# Python Packages |
| 36 | 36 |
# --------------- |
| 37 | 37 |
|
| 38 |
-# Pre-install affected packages so we can fix the permissions |
|
| 39 |
-pip_install prettytable |
|
| 40 |
-pip_install httplib2 |
|
| 38 |
+# get_package_path python-package # in import notation |
|
| 39 |
+function get_package_path() {
|
|
| 40 |
+ local package=$1 |
|
| 41 |
+ echo $(python -c "import os; import $package; print(os.path.split(os.path.realpath($package.__file__))[0])") |
|
| 42 |
+} |
|
| 41 | 43 |
|
| 42 |
-SITE_DIRS=$(python -c "import site; import os; print os.linesep.join(site.getsitepackages())") |
|
| 43 |
-for dir in $SITE_DIRS; do |
|
| 44 | 44 |
|
| 45 |
- # Fix prettytable 0.7.2 permissions |
|
| 46 |
- if [[ -r $dir/prettytable.py ]]; then |
|
| 47 |
- sudo chmod +r $dir/prettytable-0.7.2*/* |
|
| 48 |
- fi |
|
| 45 |
+# Pre-install affected packages so we can fix the permissions |
|
| 46 |
+# These can go away once we are confident that pip 1.4.1+ is available everywhere |
|
| 49 | 47 |
|
| 50 |
- # Fix httplib2 0.8 permissions |
|
| 51 |
- httplib_dir=httplib2-0.8.egg-info |
|
| 52 |
- if [[ -d $dir/$httplib_dir ]]; then |
|
| 53 |
- sudo chmod +r $dir/$httplib_dir/* |
|
| 54 |
- fi |
|
| 48 |
+# Fix prettytable 0.7.2 permissions |
|
| 49 |
+# Don't specify --upgrade so we use the existing package if present |
|
| 50 |
+pip_install prettytable |
|
| 51 |
+PACKAGE_DIR=$(get_package_path prettytable) |
|
| 52 |
+# Only fix version 0.7.2 |
|
| 53 |
+dir=$(echo $PACKAGE_DIR/prettytable-0.7.2*) |
|
| 54 |
+if [[ -d $dir ]]; then |
|
| 55 |
+ sudo chmod +r $dir/* |
|
| 56 |
+fi |
|
| 55 | 57 |
|
| 56 |
-done |
|
| 58 |
+# Fix httplib2 0.8 permissions |
|
| 59 |
+# Don't specify --upgrade so we use the existing package if present |
|
| 60 |
+pip_install httplib2 |
|
| 61 |
+PACKAGE_DIR=$(get_package_path httplib2) |
|
| 62 |
+# Only fix version 0.8 |
|
| 63 |
+dir=$(echo $PACKAGE_DIR-0.8*) |
|
| 64 |
+if [[ -d $dir ]]; then |
|
| 65 |
+ sudo chmod +r $dir/* |
|
| 66 |
+fi |
|
| 57 | 67 |
|
| 58 | 68 |
|
| 59 | 69 |
# RHEL6 |