summaryrefslogtreecommitdiffstats
path: root/packer/provision
diff options
context:
space:
mode:
authorRudy Grigar <rgrigar@linuxfoundation.org>2017-02-13 16:57:31 -0800
committerRudy Grigar <rgrigar@linuxfoundation.org>2017-02-13 20:00:39 -0800
commitde7f7500536419e249ff0dac9b21cec1a6981ca9 (patch)
tree1142c2fe83df7e59691ed530318beb119a1babb7 /packer/provision
parent0a8905cc11b0f3e3e5d35da7527ae3e8bc7e84ec (diff)
Additional fixes for dpkg lock issues
This adds a wrapper around apt-get to loop until the lock is available for dpkg operations. Change-Id: I85d3b1f1e6992a046d021a192997f307c7ca4785 Signed-off-by: Rudy Grigar <rgrigar@linuxfoundation.org>
Diffstat (limited to 'packer/provision')
-rw-r--r--packer/provision/baseline.sh25
1 files changed, 25 insertions, 0 deletions
diff --git a/packer/provision/baseline.sh b/packer/provision/baseline.sh
index d97f0e2e..625728aa 100644
--- a/packer/provision/baseline.sh
+++ b/packer/provision/baseline.sh
@@ -115,6 +115,31 @@ Dpkg::Options {
EOF
+ # Wrap apt-get to wait for the lock to become available for operation
+ # http://askubuntu.com/questions/132059/how-to-make-a-package-manager-wait-if-another-instance-of-apt-is-running
+ cat <<EOF >> /usr/local/bin/apt-get
+#!/bin/bash
+
+i=0
+tput sc
+while fuser /var/lib/dpkg/lock >/dev/null 2>&1 ; do
+ case $(($i % 4)) in
+ 0 ) j="-" ;;
+ 1 ) j="\\" ;;
+ 2 ) j="|" ;;
+ 3 ) j="/" ;;
+ esac
+ tput rc
+ echo -en "\r[$j] Waiting for other software managers to finish..."
+ sleep 0.5
+ ((i=i+1))
+done
+
+/usr/bin/apt-get "$@"
+
+EOF
+ chmod +x /usr/local/bin/apt-get
+
echo "---> Updating operating system"
apt-get update
apt-get upgrade