Index: build/install-build-deps.sh |
diff --git a/build/install-build-deps.sh b/build/install-build-deps.sh |
index de293f90226fbfc956a5944cdcb621d683e71850..d16fc3a93c4e0a31b69a7b40301e5e269a70a158 100755 |
--- a/build/install-build-deps.sh |
+++ b/build/install-build-deps.sh |
@@ -168,15 +168,33 @@ sudo apt-get update |
# without accidentally promoting any packages from "auto" to "manual". |
# We then re-run "apt-get" with just the list of missing packages. |
echo "Finding missing packages..." |
-new_list="$(yes n | |
- LANG=C sudo apt-get install --reinstall \ |
- ${dev_list} ${lib_list} ${dbg_list} \ |
- $([ "$(uname -m)" = x86_64 ] && echo ${cmp_list}) \ |
- | |
- sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d')" |
- |
-echo "Installing missing packages..." |
-sudo apt-get install ${new_list} |
+packages="${dev_list} ${lib_list} ${dbg_list} |
+ $([ "$(uname -m)" = x86_64 ] && echo ${cmp_list})" |
+echo "Packages required: $packages" |
+new_list_cmd="sudo apt-get install --reinstall $(echo $packages)" |
+if new_list="$(yes n | LANG=C $new_list_cmd)" || [ $? -eq 1 ] |
+then |
+ # We expect apt-get to have exit status of 1. |
+ # This indicates that we canceled the install with "yes n|". |
+ new_list=$(echo "$new_list" | |
+ sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d') |
+ echo "Installing missing packages: $new_list." |
+ sudo apt-get install ${new_list} |
+else |
+ # An apt-get exit status of 100 indicates that a real error has occurred. |
+ |
+ # I am intentionally leaving out the '"'s around new_list_cmd, |
+ # as this makes it easier to cut and paste the output |
+ echo |
+ echo "The following command failed: " ${new_list_cmd} |
+ echo |
+ echo "It produces the following output:" |
+ yes n | $new_list_cmd || true |
+ echo |
+ echo "You will have to install the above packages yourself." |
+ echo |
+ exit 100 |
+fi |
# Some operating systems already ship gold |
# (on Debian, you can probably do "apt-get install binutils-gold" to get it), |