]>
Commit | Line | Data |
---|---|---|
d258564a JL |
1 | #! /bin/sh |
2 | ||
dd5330e8 | 3 | # (C) 1998, 1999, 2000 Free Software Foundation |
91fa313b | 4 | # Originally by Alexandre Oliva <oliva@dcc.unicamp.br> |
d258564a JL |
5 | |
6 | # This script is Free Software, and it can be copied, distributed and | |
7 | # modified as defined in the GNU General Public License. A copy of | |
8 | # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html | |
9 | ||
10 | # This script processes *.{sum,log} files, producing a shell-script | |
11 | # that sends e-mail to the appropriate lists and renames files to | |
bc8735ed AO |
12 | # *.sent. It currently handles only gcc, but it should be quite easy |
13 | # to modify it to handle other packages and its mailing lists. | |
d258564a JL |
14 | |
15 | # The scripts assumes it is run in the root directory of the build | |
16 | # tree, and it will include all .sum files it finds in the mail | |
17 | # report. | |
18 | ||
19 | # configure flags are extracted from ./config.status | |
20 | ||
21 | # if the BOOT_CFLAGS environment variable is set, it will be included | |
22 | # in the mail report too. | |
23 | ||
24 | # The usage pattern of this script is as follows: | |
25 | ||
59d3b2e4 | 26 | # test_summary | more # so as to observe what should be done |
d258564a | 27 | |
59d3b2e4 | 28 | # test_summary | sh # so as to actually send e-mail and move log files |
d258564a JL |
29 | |
30 | # It accepts a few command line arguments. For example: | |
31 | # -o: re-reads logs that have been mailed already (.sum.sent) | |
32 | # -t: prevents logs from being renamed | |
0a955618 | 33 | # -p: prepend specified file (or list of files: -p "a b") to the report |
3e5fb7a9 | 34 | # -i: append specified file (or list of files: -i "a b") to the report |
59d3b2e4 GP |
35 | # -m: specify the e-mail address to send notes to. An appropriate default |
36 | # should be selected from the log files. | |
37 | # -f: force reports to be mailed; if omitted, only reports that differ | |
38 | # from the sent.* version are sent. | |
269df0f8 JL |
39 | |
40 | # Find a good awk. | |
41 | if test -z "$AWK" ; then | |
42 | for AWK in gawk nawk awk ; do | |
43 | if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then | |
44 | : | |
45 | else | |
46 | break | |
47 | fi | |
48 | done | |
49 | fi | |
50 | ||
d258564a JL |
51 | : ${filesuffix=}; export fileprefix |
52 | : ${move=true}; export move | |
53 | : ${forcemail=false}; export forcemail | |
54 | while true; do | |
55 | case "$1" in | |
56 | -o) filesuffix=.sent; move=false; : ${mailto=nobody}; shift;; | |
57 | -t) move=false; shift;; | |
0a955618 | 58 | -p) prepend_logs=${prepend_logs+"$prepend_logs "}"$2"; shift 2;; |
3e5fb7a9 | 59 | -i) append_logs=${append_logs+"$append_logs "}"$2"; shift 2;; |
d258564a JL |
60 | -m) mailto=$2; forcemail=true; shift 2;; |
61 | -f) unset mailto; forcemail=true; shift;; | |
62 | *) break;; | |
63 | esac | |
64 | done | |
65 | : ${mailto="\" address \""}; export mailto | |
66 | files=`find . -name \*.sum$filesuffix -print` | |
67 | anyfile=false anychange=$forcemail && | |
68 | for file in $files; do | |
69 | [ -f $file ] && | |
70 | anyfile=true && | |
71 | { $anychange || | |
72 | anychange=`diff -u $file.sent $file 2>/dev/null | | |
73 | if test ! -f $file.sent || | |
74 | egrep '^[-+](XPASS|FAIL)' >/dev/null; then | |
75 | echo true | |
76 | else | |
77 | echo false | |
78 | fi | |
79 | ` | |
80 | } | |
81 | true | |
82 | done && | |
83 | $anyfile && | |
84 | if $forcemail || $anychange; then :; else mailto=nobody; fi && | |
269df0f8 | 85 | $AWK ' |
d258564a JL |
86 | BEGIN { |
87 | lang=""; | |
bc8735ed AO |
88 | address="gcc-testresults@gcc.gnu.org"; |
89 | version="gcc"; | |
dd5330e8 | 90 | print "cat <<'"'"'EOF'"'"' |"; |
0a955618 | 91 | '${prepend_logs+" system(\"cat $prepend_logs\"); "}' |
d258564a | 92 | } |
dd5330e8 ZW |
93 | $1 ~ /\/configure$/ { |
94 | $1 = "configure flags:"; configflags = $0; | |
95 | gsub(/--with-gcc-version-trigger=[^ ]* /, "", configflags); | |
96 | gsub(/ --norecursion/, "", configflags) | |
97 | } | |
d258564a JL |
98 | /^Running target / { print ""; print; } |
99 | /^Target / { if (host != "") next; else host = $3; } | |
83694b61 | 100 | /^Host / && host ~ /^unix\{.*\}$/ { host = $3 " " substr(host, 5); } |
d258564a JL |
101 | /^Native / { if (host != "") next; else host = $4; } |
102 | /^[ ]*=== [^ ]+ tests ===/ { | |
103 | if (lang == "") lang = " "$2" "; else lang = " "; | |
104 | } | |
692c4bf5 | 105 | $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; } |
d258564a JL |
106 | /\===.*Summary/ { print ""; print; blanks=1; } |
107 | /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; } | |
108 | /^(XPASS|FAIL|# of )/ { print; } | |
109 | # dumpall != 0 && /^X?(PASS|FAIL|UNTESTED)|^testcase/ { dumpall=0; } | |
110 | # dumpall != 0 { print; } | |
111 | # /^FAIL/ { dumpall=1; } | |
112 | /^$/ && blanks>0 { print; --blanks; } | |
113 | END { if (lang != "") { | |
3e5fb7a9 | 114 | print ""; |
0a955618 AO |
115 | print "Compiler version: " prefix version lang; |
116 | print "Platform: " host; | |
d258564a JL |
117 | print configflags; |
118 | '${BOOT_CFLAGS+'print "BOOT_CFLAGS='"${BOOT_CFLAGS}"'";'}' | |
119 | if (boot_cflags != 0) print boot_cflags; | |
3e5fb7a9 | 120 | '${append_logs+" system(\"cat $append_logs\"); "}' |
d258564a JL |
121 | print "EOF"; |
122 | print "Mail -s \"Results for " prefix version lang "testsuite on " host "\" '"${mailto}"' &&"; | |
123 | }} | |
124 | { next; } | |
125 | ' ./config.status $files | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" && | |
126 | if $move; then | |
127 | for file in $files `ls -1 $files | sed s/sum$/log/`; do | |
128 | [ -f $file ] && echo "mv `pwd`/$file `pwd`/$file.sent &&" | |
129 | done | |
130 | fi && | |
131 | echo true | |
132 | exit 0 |