- # Include any packages that are tied to a specific version
- pkg_list+="jenkins-job-builder==2.8.0 "
- $python -m venv $venv > $pip_log
- $venv/bin/pip install --upgrade pip > $pip_log || return 1
- # Redirect errors for now
- $venv/bin/pip install --upgrade $pkg_list >> $pip_log 2> /dev/null || return 1
- # Generate list of packages
- pkg_list=$($venv/bin/pip freeze | awk -F '=' '{print $1}') || return 1
- # Update all packages, may need to run twice to get all versions
- # synced up. Ignore exit status on first try
- $venv/bin/pip install --upgrade $pkg_list >> $pip_log || true
- echo "Running 'pip --upgrade' to validate..."
- $venv/bin/pip install --upgrade $pkg_list >> $pip_log || return 1
+ local pkg_list=""
+ # Add version specifier for some packages
+ for arg in "$@"; do
+ case $arg in
+ jenkins-job-builder) pkg_list+="jenkins-job-builder==${JJB_VERSION:-2.8.0} " ;;
+ *) pkg_list+="$arg " ;;
+ esac
+ done
+ $python -m venv "$install_args" "$lf_venv" || return 1
+ "$lf_venv/bin/pip" install --upgrade --quiet pip virtualenv || return 1
+ if [[ -z $pkg_list ]]; then
+ echo "${FUNCNAME[0]}(): WARNING: No packages to install"
+ return 0
+ fi
+ echo "${FUNCNAME[0]}(): INFO: Installing: $pkg_list"
+ # $pkg_list is expected to be unquoted
+ # shellcheck disable=SC2086
+ "$lf_venv/bin/pip" install --upgrade --quiet --upgrade-strategy eager \
+ $pkg_list || return 1