File: aptitude-robot-session

package info (click to toggle)
aptitude-robot 1.5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 520 kB
  • sloc: sh: 704; perl: 536; makefile: 32
file content (78 lines) | stat: -rwxr-xr-x 2,465 bytes parent folder | download | duplicates (2)
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
#!/bin/sh
[ -f /etc/default/aptitude-robot ] && . /etc/default/aptitude-robot

if [ ! -x /usr/sbin/aptitude-robot ]; then
    exit   # aptitude-robot has been deinstalled but not purged
fi

if fuser -s /var/lib/dpkg/lock ; then
    echo 'another package manager is running. Exiting.' 1>&2
    exit 1
fi

if [ -n "$LOG_SESSION" ] ; then
    # the session log is made unique with a PID ending
    # so as to not overwrite an old log of a crashed aptitude-robot process
    LOG_SESSION="$LOG_SESSION".$$
    touch "$LOG_SESSION"
    # only redirect STDOUT+STDERR if session log is available
    if [ -f "$LOG_SESSION" ]; then
        exec 1>"$LOG_SESSION" 2>&1
    fi
fi

cleanup () {
    # finish session log
    echo "aptitude-robot ended at" $(date --rfc-3339=seconds)
    echo ""
    if [ -n "$LOG_SESSION" -a -f "$LOG_SESSION" ]; then
        # append session log to permanent log file
        if [ -n "$LOGFILE" ]; then
            touch "$LOGFILE"   # create the log file if necessary
            if [ -f "$LOGFILE" ]; then
                cat "$LOG_SESSION" >> "$LOGFILE"
            fi
        fi
        # optionally process session log for reporting
        if [ -x "$SESSION_REPORT_COMMAND" ]; then
            "$SESSION_REPORT_COMMAND" "$LOG_SESSION"
        fi
        rm "$LOG_SESSION"
    fi
}
trap cleanup INT TERM QUIT HUP EXIT
set -e

echo "aptitude-robot started at" $(date --rfc-3339=seconds)

# prevent infinite loops by limiting log file sizes
MAX_LOGFILES_SIZE_BLOCKS=$(($MAX_LOGFILES_SIZE_BLOCKS + 0))  # force number
[ $MAX_LOGFILES_SIZE_BLOCKS -gt 0 ] && ulimit -f $MAX_LOGFILES_SIZE_BLOCKS

# called from a script aptitude should ask as few questions as possible
# and just take the defaults.  We expect the configuration management
# to have provided the necessary config options beforehand
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
DEBIAN_PRIORITY=critical
export DEBIAN_PRIORITY

# -q (for --quiet) suppresses percentage reporting for downloads
# but leaves most regular output to be collected in the log file
/usr/bin/aptitude -q update

if egrep -q '[EW]: Failed to fetch ' "$LOG_SESSION"; then
    echo "E: aptitude-robot failed to fetch some APT repositories. Aborting."
    exit 2
fi

touch /var/lib/apt/update_success

/usr/sbin/aptitude-robot -y -q "$@" \
    -o DPkg::Options::=--force-confdef \
    -o DPkg::Options::=--force-confold \
    < /dev/null

if [ -n "$POST_SESSION_HOOK" ]; then
    $POST_SESSION_HOOK
fi