@@ -97,6 +97,111 @@ function check_python3_support_for_package_remote {
97
97
echo $classifier
98
98
}
99
99
100
+ # python3_enabled_for() checks if the service(s) specified as arguments are
101
+ # enabled by the user in ``ENABLED_PYTHON3_PACKAGES``.
102
+ #
103
+ # Multiple services specified as arguments are ``OR``'ed together; the test
104
+ # is a short-circuit boolean, i.e it returns on the first match.
105
+ #
106
+ # Uses global ``ENABLED_PYTHON3_PACKAGES``
107
+ # python3_enabled_for dir [dir ...]
108
+ function python3_enabled_for {
109
+ local xtrace
110
+ xtrace=$( set +o | grep xtrace)
111
+ set +o xtrace
112
+
113
+ local enabled=1
114
+ local dirs=$@
115
+ local dir
116
+ for dir in ${dirs} ; do
117
+ [[ ,${ENABLED_PYTHON3_PACKAGES} , =~ ,${dir} , ]] && enabled=0
118
+ done
119
+
120
+ $xtrace
121
+ return $enabled
122
+ }
123
+
124
+ # python3_disabled_for() checks if the service(s) specified as arguments are
125
+ # disabled by the user in ``DISABLED_PYTHON3_PACKAGES``.
126
+ #
127
+ # Multiple services specified as arguments are ``OR``'ed together; the test
128
+ # is a short-circuit boolean, i.e it returns on the first match.
129
+ #
130
+ # Uses global ``DISABLED_PYTHON3_PACKAGES``
131
+ # python3_disabled_for dir [dir ...]
132
+ function python3_disabled_for {
133
+ local xtrace
134
+ xtrace=$( set +o | grep xtrace)
135
+ set +o xtrace
136
+
137
+ local enabled=1
138
+ local dirs=$@
139
+ local dir
140
+ for dir in ${dirs} ; do
141
+ [[ ,${DISABLED_PYTHON3_PACKAGES} , =~ ,${dir} , ]] && enabled=0
142
+ done
143
+
144
+ $xtrace
145
+ return $enabled
146
+ }
147
+
148
+ # enable_python3_package() adds the repositories passed as argument to the
149
+ # ``ENABLED_PYTHON3_PACKAGES`` list, if they are not already present.
150
+ #
151
+ # For example:
152
+ # enable_python3_package nova
153
+ #
154
+ # Uses global ``ENABLED_PYTHON3_PACKAGES``
155
+ # enable_python3_package dir [dir ...]
156
+ function enable_python3_package {
157
+ local xtrace
158
+ xtrace=$( set +o | grep xtrace)
159
+ set +o xtrace
160
+
161
+ local tmpsvcs=" ${ENABLED_PYTHON3_PACKAGES} "
162
+ local python3
163
+ for dir in $@ ; do
164
+ if [[ ,${DISABLED_PYTHON3_PACKAGES} , =~ ,${dir} , ]]; then
165
+ warn $LINENO " Attempt to enable_python3_package ${dir} when it has been disabled"
166
+ continue
167
+ fi
168
+ if ! python3_enabled_for $dir ; then
169
+ tmpsvcs+=" ,$dir "
170
+ fi
171
+ done
172
+ ENABLED_PYTHON3_PACKAGES=$( _cleanup_service_list " $tmpsvcs " )
173
+
174
+ $xtrace
175
+ }
176
+
177
+ # disable_python3_package() prepares the services passed as argument to be
178
+ # removed from the ``ENABLED_PYTHON3_PACKAGES`` list, if they are present.
179
+ #
180
+ # For example:
181
+ # disable_python3_package swift
182
+ #
183
+ # Uses globals ``ENABLED_PYTHON3_PACKAGES`` and ``DISABLED_PYTHON3_PACKAGES``
184
+ # disable_python3_package dir [dir ...]
185
+ function disable_python3_package {
186
+ local xtrace
187
+ xtrace=$( set +o | grep xtrace)
188
+ set +o xtrace
189
+
190
+ local disabled_svcs=" ${DISABLED_PYTHON3_PACKAGES} "
191
+ local enabled_svcs=" ,${ENABLED_PYTHON3_PACKAGES} ,"
192
+ local dir
193
+ for dir in $@ ; do
194
+ disabled_svcs+=" ,$dir "
195
+ if python3_enabled_for $dir ; then
196
+ enabled_svcs=${enabled_svcs// ,$dir ,/ ,}
197
+ fi
198
+ done
199
+ DISABLED_PYTHON3_PACKAGES=$( _cleanup_service_list " $disabled_svcs " )
200
+ ENABLED_PYTHON3_PACKAGES=$( _cleanup_service_list " $enabled_svcs " )
201
+
202
+ $xtrace
203
+ }
204
+
100
205
# Wrapper for ``pip install`` to set cache and proxy environment variables
101
206
# Uses globals ``OFFLINE``, ``PIP_VIRTUAL_ENV``,
102
207
# ``PIP_UPGRADE``, ``TRACK_DEPENDS``, ``*_proxy``,
@@ -149,16 +254,16 @@ function pip_install {
149
254
# support for python3 in progress, but don't claim support
150
255
# in their classifier
151
256
echo " Check python version for : $package_dir "
152
- if [[ ${package_dir##*/ } == " nova " || ${package_dir ##*/ } == " glance " || \
153
- ${package_dir ##*/ } == " cinder " || ${ package_dir##*/ } == " swift " || \
154
- ${package_dir##*/ } == " uwsgi " ]] ; then
155
- echo " Using $PYTHON3_VERSION version to install $package_dir "
257
+ if python3_disabled_for ${package_dir##*/ } ; then
258
+ echo " Explicitly using $PYTHON2_VERSION version to install $ package_dir based on DISABLED_PYTHON3_PACKAGES "
259
+ elif python3_enabled_for ${package_dir##*/ } ; then
260
+ echo " Explicitly using $PYTHON3_VERSION version to install $package_dir based on ENABLED_PYTHON3_PACKAGES "
156
261
sudo_pip=" $sudo_pip LC_ALL=en_US.UTF-8"
157
262
cmd_pip=$( get_pip_command $PYTHON3_VERSION )
158
263
elif [[ -d " $package_dir " ]]; then
159
264
python_versions=$( get_python_versions_for_package $package_dir )
160
265
if [[ $python_versions =~ $PYTHON3_VERSION ]]; then
161
- echo " Using $PYTHON3_VERSION version to install $package_dir "
266
+ echo " Automatically using $PYTHON3_VERSION version to install $package_dir based on classifiers "
162
267
sudo_pip=" $sudo_pip LC_ALL=en_US.UTF-8"
163
268
cmd_pip=$( get_pip_command $PYTHON3_VERSION )
164
269
else
@@ -167,7 +272,7 @@ function pip_install {
167
272
# a warning.
168
273
python3_classifier=$( check_python3_support_for_package_local $package_dir )
169
274
if [[ ! -z " $python3_classifier " ]]; then
170
- echo " Using $PYTHON3_VERSION version to install $package_dir "
275
+ echo " Automatically using $PYTHON3_VERSION version to install $package_dir based on local package settings "
171
276
sudo_pip=" $sudo_pip LC_ALL=en_US.UTF-8"
172
277
cmd_pip=$( get_pip_command $PYTHON3_VERSION )
173
278
fi
@@ -177,7 +282,7 @@ function pip_install {
177
282
package=$( echo $package_dir | grep -o ' ^[.a-zA-Z0-9_-]*' )
178
283
python3_classifier=$( check_python3_support_for_package_remote $package )
179
284
if [[ ! -z " $python3_classifier " ]]; then
180
- echo " Using $PYTHON3_VERSION version to install $package "
285
+ echo " Automatically using $PYTHON3_VERSION version to install $package based on remote package settings "
181
286
sudo_pip=" $sudo_pip LC_ALL=en_US.UTF-8"
182
287
cmd_pip=$( get_pip_command $PYTHON3_VERSION )
183
288
fi
0 commit comments