~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/canonical/buildd/umount-chroot

  • Committer: mbp at canonical
  • Date: 2011-11-20 23:37:23 UTC
  • mto: This revision was merged to the branch mainline in revision 14344.
  • Revision ID: mbp@canonical.com-20111120233723-370p96db2crru5tm
Delete canonical.buildd again

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/sh
2
 
#
3
 
# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
4
 
# GNU Affero General Public License version 3 (see the file LICENSE).
5
 
 
6
 
# Buildd Slave tool to mount a chroot
7
 
 
8
 
# Expects build id as arg 1, makes build-id to contain the build
9
 
 
10
 
# Needs SUDO to be set to a sudo instance for passwordless access
11
 
 
12
 
SUDO=/usr/bin/sudo
13
 
BUILDID="$1"
14
 
GREP=/bin/grep
15
 
CUT=/usr/bin/cut
16
 
XARGS=/usr/bin/xargs
17
 
SORT=/usr/bin/sort
18
 
 
19
 
set -e
20
 
 
21
 
exec 2>&1
22
 
 
23
 
echo "Unmounting chroot for build $BUILDID..."
24
 
 
25
 
# binfmt-support adds a mount under /proc, which means that our first
26
 
# pass at umounting fails unless we reverse the list.  Leave the while
27
 
# loop in just to handle pathological cases, too.
28
 
COUNT=0
29
 
while $GREP "$HOME/build-$BUILDID/chroot-autobuild" /proc/mounts; do
30
 
    COUNT=$(($COUNT+1))
31
 
    if [ $COUNT -ge 20 ]; then
32
 
        echo "failed to umount $HOME/build-$BUILDID/chroot-autobuild"
33
 
        if [ -x /usr/bin/lsof ]; then
34
 
            /usr/bin/lsof "$HOME/build-$BUILDID/chroot-autobuild"
35
 
        fi
36
 
        exit 1
37
 
    fi
38
 
    $GREP "$HOME/build-$BUILDID/chroot-autobuild" /proc/mounts | \
39
 
          $CUT -d\  -f2 | LANG=C $SORT -r | $XARGS -r -n 1 $SUDO umount || sleep 1
40
 
done