Skip to content

Commit d0b21e2

Browse files
author
Dean Troyer
committed
Fix dependency list generation corner cases
* Handle empty install lists in apt_get() and pip_install() * pip_install now uses get_packages() to get the dependency list Fixes bug 948714 Change-Id: I174a60976df18c670eab2067edcd1871c51d07d6
1 parent 51aa401 commit d0b21e2

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

functions

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# apt-get wrapper to set arguments correctly
55
# apt_get package [package ...]
66
function apt_get() {
7-
[[ "$OFFLINE" = "True" ]] && return
7+
[[ "$OFFLINE" = "True" || -z "$@" ]] && return
88
local sudo="sudo"
99
[[ "$(id -u)" = "0" ]] && sudo="env"
1010
$sudo DEBIAN_FRONTEND=noninteractive \
@@ -124,7 +124,7 @@ function is_set() {
124124
# pip install wrapper to set cache and proxy environment variables
125125
# pip_install package [package ...]
126126
function pip_install {
127-
[[ "$OFFLINE" = "True" ]] && return
127+
[[ "$OFFLINE" = "True" || -z "$@" ]] && return
128128
sudo PIP_DOWNLOAD_CACHE=/var/cache/pip \
129129
HTTP_PROXY=$http_proxy \
130130
HTTPS_PROXY=$https_proxy \

stack.sh

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -516,12 +516,16 @@ fi
516516
# dist:DISTRO1,DISTRO2 it will be installed only for those
517517
# distros (case insensitive).
518518
function get_packages() {
519-
local file_to_parse="general"
519+
local package_dir=$1
520+
local file_to_parse
520521
local service
521522

522-
for service in ${ENABLED_SERVICES//,/ }; do
523-
# Allow individual services to specify dependencies
524-
if [[ -e $FILES/apts/${service} ]]; then
523+
if [[ -z "$package_dir" ]]; then
524+
echo "No package directory supplied"
525+
return 1
526+
fi
527+
for service in general ${ENABLED_SERVICES//,/ }; do # Allow individual services to specify dependencies
528+
if [[ -e ${package_dir}/${service} ]]; then
525529
file_to_parse="${file_to_parse} $service"
526530
fi
527531
if [[ $service == n-* ]]; then
@@ -540,9 +544,9 @@ function get_packages() {
540544
done
541545

542546
for file in ${file_to_parse}; do
543-
local fname=${FILES}/apts/${file}
547+
local fname=${package_dir}/${file}
544548
local OIFS line package distros distro
545-
[[ -e $fname ]] || { echo "missing: $fname"; exit 1 ;}
549+
[[ -e $fname ]] || continue
546550

547551
OIFS=$IFS
548552
IFS=$'\n'
@@ -568,10 +572,10 @@ function get_packages() {
568572

569573
# install apt requirements
570574
apt_get update
571-
apt_get install $(get_packages)
575+
apt_get install $(get_packages $FILES/apts)
572576

573577
# install python requirements
574-
pip_install `cat $FILES/pips/* | uniq`
578+
pip_install $(get_packages $FILES/pips | sort -u)
575579

576580
# compute service
577581
git_clone $NOVA_REPO $NOVA_DIR $NOVA_BRANCH

0 commit comments

Comments
 (0)