Browse code

don't use pip -e install for libraries

libraries in openstack shouldn't be installed editable, as it
causes all manner of issues (especially complicated by the use
of namespace packages). Install these globally as part of the
devstack installation process.

Change-Id: I11acb169e74069be0618e57496ff342f9e788493

Sean Dague authored on 2014/03/31 23:35:43
Showing 5 changed files
... ...
@@ -40,7 +40,6 @@ source $TOP_DIR/lib/rpc_backend
40 40
 
41 41
 source $TOP_DIR/lib/tls
42 42
 
43
-source $TOP_DIR/lib/oslo
44 43
 source $TOP_DIR/lib/horizon
45 44
 source $TOP_DIR/lib/keystone
46 45
 source $TOP_DIR/lib/glance
... ...
@@ -84,7 +83,6 @@ if [[ -d $TOP_DIR/extras.d ]]; then
84 84
 fi
85 85
 
86 86
 # Clean projects
87
-cleanup_oslo
88 87
 cleanup_cinder
89 88
 cleanup_glance
90 89
 cleanup_keystone
... ...
@@ -1239,6 +1239,19 @@ function pip_install {
1239 1239
         && $SUDO_PIP rm -rf ${pip_build_tmp}
1240 1240
 }
1241 1241
 
1242
+# this should be used if you want to install globally, all libraries should
1243
+# use this, especially *oslo* ones
1244
+function setup_install {
1245
+    local project_dir=$1
1246
+    setup_package_with_req_sync $project_dir
1247
+}
1248
+
1249
+# this should be used for projects which run services, like all services
1250
+function setup_develop {
1251
+    local project_dir=$1
1252
+    setup_package_with_req_sync $project_dir -e
1253
+}
1254
+
1242 1255
 # ``pip install -e`` the package, which processes the dependencies
1243 1256
 # using pip before running `setup.py develop`
1244 1257
 #
... ...
@@ -1247,8 +1260,9 @@ function pip_install {
1247 1247
 #
1248 1248
 # Uses globals ``TRACK_DEPENDS``, ``REQUIREMENTS_DIR``, ``UNDO_REQUIREMENTS``
1249 1249
 # setup_develop directory
1250
-function setup_develop {
1250
+function setup_package_with_req_sync {
1251 1251
     local project_dir=$1
1252
+    local flags=$2
1252 1253
 
1253 1254
     # Don't update repo if local changes exist
1254 1255
     # Don't use buggy "git diff --quiet"
... ...
@@ -1260,7 +1274,7 @@ function setup_develop {
1260 1260
             $SUDO_CMD python update.py $project_dir)
1261 1261
     fi
1262 1262
 
1263
-    setup_develop_no_requirements_update $project_dir
1263
+    setup_package $project_dir $flags
1264 1264
 
1265 1265
     # We've just gone and possibly modified the user's source tree in an
1266 1266
     # automated way, which is considered bad form if it's a development
... ...
@@ -1281,12 +1295,15 @@ function setup_develop {
1281 1281
 # using pip before running `setup.py develop`
1282 1282
 # Uses globals ``STACK_USER``
1283 1283
 # setup_develop_no_requirements_update directory
1284
-function setup_develop_no_requirements_update {
1284
+function setup_package {
1285 1285
     local project_dir=$1
1286
+    local flags=$2
1286 1287
 
1287
-    pip_install -e $project_dir
1288
+    pip_install $flags $project_dir
1288 1289
     # ensure that further actions can do things like setup.py sdist
1289
-    safe_chown -R $STACK_USER $1/*.egg-info
1290
+    if [[ "$flags" == "-e" ]]; then
1291
+        safe_chown -R $STACK_USER $1/*.egg-info
1292
+    fi
1290 1293
 }
1291 1294
 
1292 1295
 
... ...
@@ -46,7 +46,7 @@ function install_infra {
46 46
 
47 47
     # Install pbr
48 48
     git_clone $PBR_REPO $PBR_DIR $PBR_BRANCH
49
-    setup_develop $PBR_DIR
49
+    setup_install $PBR_DIR
50 50
 }
51 51
 
52 52
 # Restore xtrace
... ...
@@ -34,44 +34,29 @@ TASKFLOW_DIR=$DEST/taskflow
34 34
 
35 35
 # install_oslo() - Collect source and prepare
36 36
 function install_oslo {
37
-    # TODO(sdague): remove this once we get to Icehouse, this just makes
38
-    # for a smoother transition of existing users.
39
-    cleanup_oslo
40
-
41 37
     git_clone $CLIFF_REPO $CLIFF_DIR $CLIFF_BRANCH
42
-    setup_develop $CLIFF_DIR
38
+    setup_install $CLIFF_DIR
43 39
 
44 40
     git_clone $OSLOCFG_REPO $OSLOCFG_DIR $OSLOCFG_BRANCH
45
-    setup_develop $OSLOCFG_DIR
41
+    setup_install $OSLOCFG_DIR
46 42
 
47 43
     git_clone $OSLOMSG_REPO $OSLOMSG_DIR $OSLOMSG_BRANCH
48
-    setup_develop $OSLOMSG_DIR
44
+    setup_install $OSLOMSG_DIR
49 45
 
50 46
     git_clone $OSLORWRAP_REPO $OSLORWRAP_DIR $OSLORWRAP_BRANCH
51
-    setup_develop $OSLORWRAP_DIR
47
+    setup_install $OSLORWRAP_DIR
52 48
 
53 49
     git_clone $OSLOVMWARE_REPO $OSLOVMWARE_DIR $OSLOVMWARE_BRANCH
54
-    setup_develop $OSLOVMWARE_DIR
50
+    setup_install $OSLOVMWARE_DIR
55 51
 
56 52
     git_clone $PYCADF_REPO $PYCADF_DIR $PYCADF_BRANCH
57
-    setup_develop $PYCADF_DIR
53
+    setup_install $PYCADF_DIR
58 54
 
59 55
     git_clone $STEVEDORE_REPO $STEVEDORE_DIR $STEVEDORE_BRANCH
60
-    setup_develop $STEVEDORE_DIR
56
+    setup_install $STEVEDORE_DIR
61 57
 
62 58
     git_clone $TASKFLOW_REPO $TASKFLOW_DIR $TASKFLOW_BRANCH
63
-    setup_develop $TASKFLOW_DIR
64
-}
65
-
66
-# cleanup_oslo() - purge possibly old versions of oslo
67
-function cleanup_oslo {
68
-    # this means we've got an old oslo installed, lets get rid of it
69
-    if ! python -c 'import oslo.config' 2>/dev/null; then
70
-        echo "Found old oslo.config... removing to ensure consistency"
71
-        local PIP_CMD=$(get_pip_command)
72
-        pip_install oslo.config
73
-        sudo $PIP_CMD uninstall -y oslo.config
74
-    fi
59
+    setup_install $TASKFLOW_DIR
75 60
 }
76 61
 
77 62
 # Restore xtrace
... ...
@@ -40,10 +40,10 @@ function install_stackforge {
40 40
     cleanup_stackforge
41 41
 
42 42
     git_clone $WSME_REPO $WSME_DIR $WSME_BRANCH
43
-    setup_develop_no_requirements_update $WSME_DIR
43
+    setup_package $WSME_DIR
44 44
 
45 45
     git_clone $PECAN_REPO $PECAN_DIR $PECAN_BRANCH
46
-    setup_develop_no_requirements_update $PECAN_DIR
46
+    setup_package $PECAN_DIR
47 47
 }
48 48
 
49 49
 # cleanup_stackforge() - purge possibly old versions of stackforge libraries