summaryrefslogtreecommitdiff
path: root/tools/proof
blob: a0dab6cb92a108904ad3ca952027db9ebfec3c45 (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
#!/bin/bash

set -e

ledger_proof() {
    SRC="$1"
    DEST="$2"
    LOGDIR="$3"

    cd "$SRC"
    VERSION=$(git describe --all --long)

    if [[ -f $DEST/last-proofed && $(< $DEST/last-proofed) = $VERSION ]]; then
        echo "No need to run tools/proof again"
        exit 0
    fi

    sudo rm -fr $DEST/ledger-proof
    time nice -n 20 \
        ./acprep --debug --enable-doxygen --universal --clang -j16 proof 2>&1 | \
        tee $LOGDIR/ledger-proof.log

    sudo rm -fr $DEST/ledger-proof
    time nice -n 20 \
        ./acprep --debug --enable-doxygen --universal --python --clang -j16 proof 2>&1 | \
        tee -a $LOGDIR/ledger-proof.log

    if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then
        cat <<EOF | mutt -a $LOGDIR/ledger-proof.log \
            -s '[ledger] Proof build FAILED' johnw@newartisans.com
Ledger proof build FAILED, at commit $VERSION.
EOF

        if [[ "$1" = "--alert" ]]; then
            notify "Ledger proof build FAILED"
        else
            echo "Ledger proof build FAILED"
            exit 1
        fi
    else
        echo $VERSION > $DEST/last-proofed

        cd $DEST/ledger-proof/debug; make docs
        cd $DEST/ledger-proof/gcov;  make report

        cat <<EOF | mutt -s '[ledger] Proof build succeeded' johnw@newartisans.com
Ledger proof build succeeded! at commit $VERSION.
EOF
        echo "Ledger proof build succeeded"
    fi
}

ledger_proof ${1:-$HOME/src/ledger} ${2:-$HOME/Products} ${3:-$HOME/Library/Logs}

exit 0