summaryrefslogtreecommitdiff
path: root/debian/schroot.init
blob: 1988bfd7fdd655e5e4d3ff40b3e2952ed6237cd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#! /bin/sh
#
### BEGIN INIT INFO
# Provides:          schroot
# Required-Start:    $local_fs $syslog $network $remote_fs
# Required-Stop:     $local_fs $syslog $network $remote_fs
# Should-Start:      lvm
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Recover schroot sessions.
# Description:       Activate any persistent sessions after a reboot.
#                    Setup scripts will be run to mount filesystems and
#                    bring the chroot back to a working state.
### END INIT INFO
#
# Copyright © 2006-2013  Roger Leigh <rleigh@debian.org>
# Copyright © 2007       Federico Di Gregorio <fog@debian.org>
#
# schroot is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# schroot is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see
# <http://www.gnu.org/licenses/>.

SCHROOT=/usr/bin/schroot
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=schroot

. /lib/lsb/init-functions

test -x $SCHROOT || exit 0

# Include schroot defaults if available
if [ -f "/etc/default/$NAME" ] ; then
    . "/etc/default/$NAME"
fi

set -e

recover_sessions()
{
    log_daemon_msg "Recovering schroot sessions"
    for chroot in `$SCHROOT --all-sessions --list --quiet`
      do
      $SCHROOT --chroot=$chroot --recover-session || true
      log_progress_msg "$chroot"
    done
    log_end_msg 0
}

end_sessions()
{
    log_daemon_msg "Ending schroot sessions"
    for chroot in `$SCHROOT --all-sessions --list --quiet`
      do
      $SCHROOT --chroot=$chroot --end-session || true
      log_progress_msg "$chroot"
    done
    log_end_msg 0
}

case "$1" in
    start|restart|force-reload)
        # Delete /var/lock/schroot if it's not root:root 0700, or if
        # it's not a directory.
        if [ -e /var/lock/schroot ]; then
            if [ "$(stat -c "%u %g %a" /var/lock/schroot)" != "0 0 700" ]; then
                rm -rf /var/lock/schroot
            fi
            if [ ! -d /var/lock/schroot ]; then
                rm -rf /var/lock/schroot
            fi
        fi
        if [ ! -d /var/lock/schroot ]; then
            mkdir -m 0700 /var/lock/schroot
        fi

        if [ "$START_ACTION" = "end" ] || [ "$SESSIONS_RECOVER" = "end" ] ; then
            end_sessions
        else
            recover_sessions
        fi
        ;;
    stop)
        if [ "$STOP_ACTION" = "end" ] ; then
            end_sessions
        fi
        ;;
    status)
        ;;
    *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0