File: appchange

package info (click to toggle)
pcp 7.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 252,748 kB
  • sloc: ansic: 1,483,656; sh: 182,366; xml: 160,462; cpp: 83,813; python: 24,980; perl: 18,327; yacc: 6,877; lex: 2,864; makefile: 2,738; awk: 165; fortran: 60; java: 52
file content (67 lines) | stat: -rwxr-xr-x 1,195 bytes parent folder | download
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
#!/bin/sh
#
# recheck all QA tests that appear to use the test application src/$1
# or src/$2 or src/$3 or ...
#
# /var/tmp/appcache is a cache of mappings between <seqno> and src/
# uses ... built if not already there, use -c to clear and rebuild the
# cache
#

cache=/var/tmp/appcache
tmp=/var/tmp/appchange-$$
status=1
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15

if [ $# -gt 1 -a "X$1" = X-c ]
then
    rm -f $cache
    shift
fi

if [ $# -eq 0 ]
then
    echo "Usage: appchange [-c] app ..."
    exit
fi

if [ ! -f $cache ]
then
    echo "Rebuilding cache of app usage ..."
    grep src/ [0-9]*[0-9][0-9] >$cache
fi

for app
do
    cd src
    if git ls-files --error-unmatch $app >/dev/null 2>&1
    then
	: file checked into git, no need to remake it
    else
	rm -f $app $app.o
	if make $app
	then
	    :
	else
	    echo "Error: failed to remake src/$app"
	    exit
	fi
    fi
    cd ..
    grep -E "src/$app( |$)" <$cache | sed -e 's/:.*//' >$tmp.tmp
    if [ -s $tmp.tmp ]
    then
	    cat $tmp.tmp >>$tmp.list
    else
	echo "Warning: no QA tests use \"$app\""
    fi
done

if [ -s $tmp.list ]
then
    if ./check `sort -n -u <$tmp.list | uniq`
    then
	echo OK
	status=0
    fi
fi