@@ -47,120 +47,20 @@ regex_from_list() {
47
47
echo " ^($regex )$"
48
48
}
49
49
50
- # This just logs to stderr.
51
- log () {
52
- BEGIN_COLOR=' \033[0;32m'
53
- END_COLOR=' \033[0m'
54
- GREEN=' \033[0;32m'
55
- RED=' \033[0;31m'
56
-
57
- case ${_log_level:- info} in
58
- error)
59
- BEGIN_COLOR=' \033[0;31m'
60
- shift
61
- ;;
62
- warn)
63
- BEGIN_COLOR=' \033[0;33m'
64
- shift
65
- ;;
66
- esac
67
- echo -e " ${BEGIN_COLOR} [$( get_timestamp ) \
68
- ${BASH_SOURCE[1]##*/ } :${BASH_LINENO[0]} ${FUNCNAME[1]} ]${END_COLOR} " $* >&2
69
- }
70
-
71
- fatal () {
72
- log " $@ "
73
- exit 1
74
- }
75
-
76
- get_timestamp () {
77
- date +%Y-%m-%d_%H_%M_%S
78
- }
79
-
80
- check_python_executables () {
81
- executables=(" $@ " )
82
- for py_executable in " ${executables[@]} " ; do
83
- if which " $py_executable " > /dev/null 2>&1 ; then
84
- PYTHON_EXECUTABLE=" $py_executable "
85
- return 0
86
- fi
87
- done
88
- return 1
89
- }
90
-
91
- set_python_vars () {
92
- # Prioritize python3 over python2.
93
- if [ -z " $YB_MANAGED_DEVOPS_USE_PYTHON3 " ]; then
94
- if check_python_executables " ${PYTHON3_EXECUTABLES[@]} " ; then
95
- YB_MANAGED_DEVOPS_USE_PYTHON3=" 1"
96
- elif check_python_executables " ${PYTHON2_EXECUTABLES[@]} " ; then
97
- YB_MANAGED_DEVOPS_USE_PYTHON3=" 0"
98
- fi
99
-
100
- if [ -z " $PYTHON_EXECUTABLE " ]; then
101
- if which python > /dev/null 2>&1 ; then
102
- PYTHON_EXECUTABLE=" python"
103
- if python -c ' import sys; sys.exit(1) if sys.version_info[0] != 2 else sys.exit(0)' ; then
104
- YB_MANAGED_DEVOPS_USE_PYTHON3=" 0"
105
- else
106
- YB_MANAGED_DEVOPS_USE_PYTHON3=" 1"
107
- fi
108
- fi
109
- fi
110
- else
111
- if which python > /dev/null 2>&1 ; then
112
- if python -c ' import sys; sys.exit(1) if sys.version_info[0] != 2 else sys.exit(0)' ; then
113
- if [[ " $YB_MANAGED_DEVOPS_USE_PYTHON3 " == " 0" ]]; then
114
- PYTHON_EXECUTABLE=" python"
115
- fi
116
- elif [[ " $YB_MANAGED_DEVOPS_USE_PYTHON3 " == " 1" ]]; then
117
- PYTHON_EXECUTABLE=" python"
118
- fi
119
- fi
120
-
121
- if [ -z " $PYTHON_EXECUTABLE " ]; then
122
- POSSIBLE_EXECUTABLES=" $PYTHON3_EXECUTABLES "
123
- if [[ " $YB_MANAGED_DEVOPS_USE_PYTHON3 " == " 0" ]]; then
124
- POSSIBLE_EXECUTABLES=" $PYTHON2_EXECUTABLES "
125
- fi
126
- check_python_executables " ${POSSIBLE_EXECUTABLES[@]} "
127
- fi
128
- fi
129
-
130
- if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 != " 0" &&
131
- $YB_MANAGED_DEVOPS_USE_PYTHON3 != " 1" ]]; then
132
- fatal " Invalid value of YB_MANAGED_DEVOPS_USE_PYTHON3: $YB_MANAGED_DEVOPS_USE_PYTHON3 ," \
133
- " expected 0 or 1"
134
- fi
135
- if [ -z " $PYTHON_EXECUTABLE " ]; then
136
- fatal " Failed to find python executable."
137
- fi
138
-
139
- if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 == " 1" ]]; then
140
- YB_VIRTUALENV_BASENAME=venv
141
- REQUIREMENTS_FILE_NAME=" $yb_devops_home /python3_requirements.txt"
142
- FROZEN_REQUIREMENTS_FILE=" $yb_devops_home /python3_requirements_frozen.txt"
143
- YB_PYTHON_MODULES_DIR=" $yb_devops_home /python3_modules"
144
- YB_PYTHON_MODULES_PACKAGE=" $yb_devops_home /python3_modules.tar.gz"
145
- YB_INSTALLED_MODULES_DIR=" $yb_devops_home /python3_installed_modules"
146
- else
147
- YB_VIRTUALENV_BASENAME=python_virtual_env
148
- REQUIREMENTS_FILE_NAME=" $yb_devops_home /python_requirements.txt"
149
- FROZEN_REQUIREMENTS_FILE=" $yb_devops_home /python_requirements_frozen.txt"
150
- YB_PYTHON_MODULES_DIR=" $yb_devops_home /python2_modules"
151
- YB_PYTHON_MODULES_PACKAGE=" $yb_devops_home /python2_modules.tar.gz"
152
- YB_INSTALLED_MODULES_DIR=" $yb_devops_home /python2_installed_modules"
153
- fi
154
- }
155
-
156
50
# -------------------------------------------------------------------------------------------------
157
51
# Constants
158
52
# -------------------------------------------------------------------------------------------------
159
- readonly PYTHON2_EXECUTABLES=(' python2' ' python2.7' )
160
- readonly PYTHON3_EXECUTABLES=(' python3' ' python3.6' ' python3.7' ' python3.8' )
161
- PYTHON_EXECUTABLE=" "
162
- USER_INPUT_MANAGED_DEVOPS_USE_PYTHON3=${YB_MANAGED_DEVOPS_USE_PYTHON3:- " " }
163
- YB_MANAGED_DEVOPS_USE_PYTHON3=" "
53
+ DEFAULT_USE_PY3_VALUE=" 1"
54
+ if python -c ' import sys; sys.exit(1) if sys.version_info[0] != 2 else sys.exit(0)' ; then
55
+ DEFAULT_USE_PY3_VALUE=" 0"
56
+ fi
57
+
58
+ readonly YB_MANAGED_DEVOPS_USE_PYTHON3=${YB_MANAGED_DEVOPS_USE_PYTHON3:- $DEFAULT_USE_PY3_VALUE }
59
+ if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 != " 0" &&
60
+ $YB_MANAGED_DEVOPS_USE_PYTHON3 != " 1" ]]; then
61
+ fatal " Invalid value of YB_MANAGED_DEVOPS_USE_PYTHON3: $YB_MANAGED_DEVOPS_USE_PYTHON3 ," \
62
+ " expected 0 or 1"
63
+ fi
164
64
165
65
readonly yb_script_name=${0##*/ }
166
66
readonly yb_script_name_no_extension=${yb_script_name% .sh}
@@ -189,12 +89,22 @@ set +u
189
89
readonly MANAGED_PYTHONPATH_ORIGINAL=" ${PYTHONPATH:- } "
190
90
set -u
191
91
192
- YB_VIRTUALENV_BASENAME=venv
193
- REQUIREMENTS_FILE_NAME=" $yb_devops_home /python3_requirements.txt"
194
- FROZEN_REQUIREMENTS_FILE=" $yb_devops_home /python3_requirements_frozen.txt"
195
- YB_PYTHON_MODULES_DIR=" $yb_devops_home /python3_modules"
196
- YB_PYTHON_MODULES_PACKAGE=" $yb_devops_home /python3_modules.tar.gz"
197
- YB_INSTALLED_MODULES_DIR=" $yb_devops_home /python3_installed_modules"
92
+ # Basename (i.e. name excluding the directory path) of our virtualenv.
93
+ if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 == " 1" ]]; then
94
+ readonly YB_VIRTUALENV_BASENAME=venv
95
+ readonly REQUIREMENTS_FILE_NAME=" $yb_devops_home /python3_requirements.txt"
96
+ readonly FROZEN_REQUIREMENTS_FILE=" $yb_devops_home /python3_requirements_frozen.txt"
97
+ readonly YB_PYTHON_MODULES_DIR=" $yb_devops_home /python3_modules"
98
+ readonly YB_PYTHON_MODULES_PACKAGE=" $yb_devops_home /python3_modules.tar.gz"
99
+ readonly YB_INSTALLED_MODULES_DIR=" $yb_devops_home /python3_installed_modules"
100
+ else
101
+ readonly YB_VIRTUALENV_BASENAME=python_virtual_env
102
+ readonly REQUIREMENTS_FILE_NAME=" $yb_devops_home /python_requirements.txt"
103
+ readonly FROZEN_REQUIREMENTS_FILE=" $yb_devops_home /python_requirements_frozen.txt"
104
+ readonly YB_PYTHON_MODULES_DIR=" $yb_devops_home /python2_modules"
105
+ readonly YB_PYTHON_MODULES_PACKAGE=" $yb_devops_home /python2_modules.tar.gz"
106
+ readonly YB_INSTALLED_MODULES_DIR=" $yb_devops_home /python2_installed_modules"
107
+ fi
198
108
199
109
readonly YBOPS_TOP_LEVEL_DIR_BASENAME=opscli
200
110
readonly YBOPS_PACKAGE_NAME=ybops
@@ -217,6 +127,35 @@ log_error() {
217
127
log " $@ "
218
128
}
219
129
130
+ # This just logs to stderr.
131
+ log () {
132
+ BEGIN_COLOR=' \033[0;32m'
133
+ END_COLOR=' \033[0m'
134
+ GREEN=' \033[0;32m'
135
+ RED=' \033[0;31m'
136
+
137
+ case ${_log_level:- info} in
138
+ error)
139
+ BEGIN_COLOR=' \033[0;31m'
140
+ shift
141
+ ;;
142
+ warn)
143
+ BEGIN_COLOR=' \033[0;33m'
144
+ shift
145
+ ;;
146
+ esac
147
+ echo -e " ${BEGIN_COLOR} [$( get_timestamp ) ${BASH_SOURCE[1]##*/ } :${BASH_LINENO[0]} ${FUNCNAME[1]} ]${END_COLOR} " $* >&2
148
+ }
149
+
150
+ fatal () {
151
+ log " $@ "
152
+ exit 1
153
+ }
154
+
155
+ get_timestamp () {
156
+ date +%Y-%m-%d_%H_%M_%S
157
+ }
158
+
220
159
ensure_log_dir_defined () {
221
160
if [[ -z ${log_dir:- } ]]; then
222
161
fatal " log_dir is not set"
@@ -268,7 +207,7 @@ deactivate_virtualenv() {
268
207
return
269
208
fi
270
209
271
- if [[ -d " $YB_INSTALLED_MODULES_DIR " ]]; then
210
+ if [[ -f " $YB_INSTALLED_MODULES_DIR " ]]; then
272
211
export PYTHONPATH=$MANAGED_PYTHONPATH_ORIGINAL
273
212
return
274
213
fi
@@ -306,7 +245,7 @@ activate_virtualenv() {
306
245
return
307
246
fi
308
247
309
- if [[ -d " $YB_INSTALLED_MODULES_DIR " ]]; then
248
+ if [[ -f " $YB_INSTALLED_MODULES_DIR " ]]; then
310
249
export PYTHONPATH=" ${YB_INSTALLED_MODULES_DIR} :${MANAGED_PYTHONPATH_ORIGINAL} "
311
250
return
312
251
fi
@@ -318,10 +257,6 @@ activate_virtualenv() {
318
257
if [[ ! -d $virtualenv_dir ]]; then
319
258
# We need to be using system python to install the virtualenv module or create a new virtualenv.
320
259
deactivate_virtualenv
321
- # Reset python variables after deactivating virtualenv
322
- PYTHON_EXECUTABLE=" "
323
- YB_MANAGED_DEVOPS_USE_PYTHON3=$USER_INPUT_MANAGED_DEVOPS_USE_PYTHON3
324
- set_python_vars
325
260
326
261
if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 == " 0" ]]; then
327
262
pip_install " virtualenv<20"
@@ -331,10 +266,10 @@ activate_virtualenv() {
331
266
set -x
332
267
cd " ${virtualenv_dir%/* } "
333
268
if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 == " 1" ]]; then
334
- " $PYTHON_EXECUTABLE " -m venv " $YB_VIRTUALENV_BASENAME "
269
+ python3 -m venv " $YB_VIRTUALENV_BASENAME "
335
270
else
336
271
# Assuming that the default python binary is pointing to Python 2.7.
337
- " $PYTHON_EXECUTABLE " -m virtualenv --no-setuptools " $YB_VIRTUALENV_BASENAME "
272
+ python -m virtualenv --no-setuptools " $YB_VIRTUALENV_BASENAME "
338
273
fi
339
274
)
340
275
elif " $is_linux " ; then
@@ -431,9 +366,9 @@ verbose_mkdir_p() {
431
366
432
367
run_pip () {
433
368
if [[ $YB_MANAGED_DEVOPS_USE_PYTHON3 == " 1" ]]; then
434
- " $PYTHON_EXECUTABLE " -m pip " $@ "
369
+ pip3 " $@ "
435
370
else
436
- " $PYTHON_EXECUTABLE " " $( which pip) " " $@ "
371
+ python " $( which pip) " " $@ "
437
372
fi
438
373
}
439
374
@@ -531,7 +466,8 @@ install_ybops_package() {
531
466
fi
532
467
(
533
468
cd " $yb_devops_home /$YBOPS_TOP_LEVEL_DIR_BASENAME "
534
- " $PYTHON_EXECUTABLE " setup.py install $user_flag
469
+ log " Using python: $( which python ) "
470
+ python setup.py install $user_flag
535
471
rm -rf build dist " $YBOPS_PACKAGE_NAME .egg-info"
536
472
)
537
473
virtualenv_aware_log " Installed the ybops package"
@@ -576,7 +512,6 @@ detect_os() {
576
512
# Initialization
577
513
# -------------------------------------------------------------------------------------------------
578
514
579
- set_python_vars
580
515
detect_os
581
516
582
517
#
0 commit comments