Browse code

Fix path handling in hacking/env-setup. (#44086)

(cherry picked from commit 0392dbeba19d742741f95903de6e048f65510a50)

Matt Clay authored on 2018/08/14 10:19:04
Showing 1 changed files
... ...
@@ -1,6 +1,22 @@
1 1
 # usage: source hacking/env-setup [-q]
2 2
 #    modifies environment for running Ansible from checkout
3 3
 
4
+# prepend a value to a potentially empty path variable
5
+# usage: prepend_path variable_name value
6
+prepend_path()
7
+{
8
+    variable_name="$1"
9
+    value="$2"
10
+
11
+    old_value=$( eval "echo \$$variable_name" )
12
+
13
+    if [ "x$old_value" != "x" ]; then
14
+        value="$value:"
15
+    fi
16
+
17
+    export "$variable_name=$value$old_value"
18
+}
19
+
4 20
 # Default values for shell variables we use
5 21
 PYTHONPATH=${PYTHONPATH-""}
6 22
 PATH=${PATH-""}
... ...
@@ -34,9 +50,9 @@ PREFIX_PYTHONPATH="$ANSIBLE_HOME/lib"
34 34
 PREFIX_PATH="$ANSIBLE_HOME/bin:$ANSIBLE_HOME/test/runner"
35 35
 PREFIX_MANPATH="$ANSIBLE_HOME/docs/man"
36 36
 
37
-expr "$PYTHONPATH" : "${PREFIX_PYTHONPATH}.*" > /dev/null || export PYTHONPATH="$PREFIX_PYTHONPATH:$PYTHONPATH"
38
-expr "$PATH" : "${PREFIX_PATH}.*" > /dev/null || export PATH="$PREFIX_PATH:$PATH"
39
-expr "$MANPATH" : "${PREFIX_MANPATH}.*" > /dev/null || export MANPATH="$PREFIX_MANPATH:$MANPATH"
37
+expr "$PYTHONPATH" : "${PREFIX_PYTHONPATH}.*" > /dev/null || prepend_path PYTHONPATH "$PREFIX_PYTHONPATH"
38
+expr "$PATH" : "${PREFIX_PATH}.*" > /dev/null || prepend_path PATH "$PREFIX_PATH"
39
+expr "$MANPATH" : "${PREFIX_MANPATH}.*" > /dev/null || prepend_path MANPATH "$PREFIX_MANPATH"
40 40
 
41 41
 #
42 42
 # Generate egg_info so that pkg_resources works