]>
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 | ||
5da01bc1 | 51 | : ${filesuffix=}; export filesuffix |
d258564a JL |
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 | |
26d8af06 | 66 | files=`find . -name \*.sum$filesuffix -print | sort` |
d258564a JL |
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 && | |
e50d2932 AO |
85 | # We use cat instead of listing the files as arguments to AWK because |
86 | # GNU awk 3.0.0 would break if any of the filenames contained `=' and | |
87 | # was preceded by an invalid ``variable'' name. | |
88 | cat ./config.status $files | | |
269df0f8 | 89 | $AWK ' |
d258564a JL |
90 | BEGIN { |
91 | lang=""; | |
bc8735ed AO |
92 | address="gcc-testresults@gcc.gnu.org"; |
93 | version="gcc"; | |
dd5330e8 | 94 | print "cat <<'"'"'EOF'"'"' |"; |
0a955618 | 95 | '${prepend_logs+" system(\"cat $prepend_logs\"); "}' |
d258564a | 96 | } |
dd5330e8 ZW |
97 | $1 ~ /\/configure$/ { |
98 | $1 = "configure flags:"; configflags = $0; | |
99 | gsub(/--with-gcc-version-trigger=[^ ]* /, "", configflags); | |
100 | gsub(/ --norecursion/, "", configflags) | |
101 | } | |
d258564a JL |
102 | /^Running target / { print ""; print; } |
103 | /^Target / { if (host != "") next; else host = $3; } | |
83694b61 | 104 | /^Host / && host ~ /^unix\{.*\}$/ { host = $3 " " substr(host, 5); } |
d258564a JL |
105 | /^Native / { if (host != "") next; else host = $4; } |
106 | /^[ ]*=== [^ ]+ tests ===/ { | |
107 | if (lang == "") lang = " "$2" "; else lang = " "; | |
108 | } | |
692c4bf5 | 109 | $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; } |
d258564a JL |
110 | /\===.*Summary/ { print ""; print; blanks=1; } |
111 | /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; } | |
112 | /^(XPASS|FAIL|# of )/ { print; } | |
113 | # dumpall != 0 && /^X?(PASS|FAIL|UNTESTED)|^testcase/ { dumpall=0; } | |
114 | # dumpall != 0 { print; } | |
115 | # /^FAIL/ { dumpall=1; } | |
116 | /^$/ && blanks>0 { print; --blanks; } | |
117 | END { if (lang != "") { | |
3e5fb7a9 | 118 | print ""; |
0a955618 AO |
119 | print "Compiler version: " prefix version lang; |
120 | print "Platform: " host; | |
d258564a JL |
121 | print configflags; |
122 | '${BOOT_CFLAGS+'print "BOOT_CFLAGS='"${BOOT_CFLAGS}"'";'}' | |
123 | if (boot_cflags != 0) print boot_cflags; | |
3e5fb7a9 | 124 | '${append_logs+" system(\"cat $append_logs\"); "}' |
d258564a JL |
125 | print "EOF"; |
126 | print "Mail -s \"Results for " prefix version lang "testsuite on " host "\" '"${mailto}"' &&"; | |
127 | }} | |
128 | { next; } | |
e50d2932 | 129 | ' | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" && |
d258564a JL |
130 | if $move; then |
131 | for file in $files `ls -1 $files | sed s/sum$/log/`; do | |
132 | [ -f $file ] && echo "mv `pwd`/$file `pwd`/$file.sent &&" | |
133 | done | |
134 | fi && | |
135 | echo true | |
136 | exit 0 |