|
...
|
...
|
@@ -219,7 +219,8 @@ function disable_python3_package {
|
|
219
|
219
|
# Wrapper for ``pip install`` to set cache and proxy environment variables
|
|
220
|
220
|
# Uses globals ``OFFLINE``, ``PIP_VIRTUAL_ENV``,
|
|
221
|
221
|
# ``PIP_UPGRADE``, ``TRACK_DEPENDS``, ``*_proxy``,
|
|
222
|
|
-# pip_install package [package ...]
|
|
|
222
|
+# Usage:
|
|
|
223
|
+# pip_install pip_arguments
|
|
223
|
224
|
function pip_install {
|
|
224
|
225
|
local xtrace result
|
|
225
|
226
|
xtrace=$(set +o | grep xtrace)
|
|
...
|
...
|
@@ -241,6 +242,26 @@ function pip_install {
|
|
241
|
241
|
if [[ -z "$os_PACKAGE" ]]; then
|
|
242
|
242
|
GetOSVersion
|
|
243
|
243
|
fi
|
|
|
244
|
+
|
|
|
245
|
+ # Try to extract the path of the package we are installing into
|
|
|
246
|
+ # package_dir. We need this to check for test-requirements.txt,
|
|
|
247
|
+ # at least.
|
|
|
248
|
+ #
|
|
|
249
|
+ # ${!#} expands to the last positional argument to this function.
|
|
|
250
|
+ # With "extras" syntax included, our arguments might be something
|
|
|
251
|
+ # like:
|
|
|
252
|
+ # -e /path/to/fooproject[extra]
|
|
|
253
|
+ # Thus this magic line grabs just the path without extras
|
|
|
254
|
+ #
|
|
|
255
|
+ # Note that this makes no sense if this is a pypi (rather than
|
|
|
256
|
+ # local path) install; ergo you must check this path exists before
|
|
|
257
|
+ # use. Also, if we had multiple or mixed installs, we would also
|
|
|
258
|
+ # likely break. But for historical reasons, it's basically only
|
|
|
259
|
+ # the other wrapper functions in here calling this to install
|
|
|
260
|
+ # local packages, and they do so with single call per install. So
|
|
|
261
|
+ # this works (for now...)
|
|
|
262
|
+ local package_dir=${!#%\[*\]}
|
|
|
263
|
+
|
|
244
|
264
|
if [[ $TRACK_DEPENDS = True && ! "$@" =~ virtualenv ]]; then
|
|
245
|
265
|
# TRACK_DEPENDS=True installation creates a circular dependency when
|
|
246
|
266
|
# we attempt to install virtualenv into a virtualenv, so we must global
|
|
...
|
...
|
@@ -261,7 +282,6 @@ function pip_install {
|
|
261
|
261
|
# versions supported, and if we find the version of
|
|
262
|
262
|
# python3 we've been told to use, use that instead of the
|
|
263
|
263
|
# default pip
|
|
264
|
|
- local package_dir=${!#}
|
|
265
|
264
|
local python_versions
|
|
266
|
265
|
|
|
267
|
266
|
# Special case some services that have experimental
|
|
...
|
...
|
@@ -323,7 +343,7 @@ function pip_install {
|
|
323
|
323
|
|
|
324
|
324
|
# Also install test requirements
|
|
325
|
325
|
local install_test_reqs=""
|
|
326
|
|
- local test_req="${!#}/test-requirements.txt"
|
|
|
326
|
+ local test_req="${package_dir}/test-requirements.txt"
|
|
327
|
327
|
if [[ -e "$test_req" ]]; then
|
|
328
|
328
|
install_test_reqs="-r $test_req"
|
|
329
|
329
|
fi
|