diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-02-20 07:38:28 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-02-20 07:38:28 -0800 |
commit | 4d23ccc023c8b98eb97a7cce820aa80bff2f3522 (patch) | |
tree | 9d28fb439d1c7d37ec01058072c0542e8d6fa763 /tools | |
parent | 41977d7cd2f0676a1b135a0991545721d6dce3ef (diff) | |
download | build-4d23ccc023c8b98eb97a7cce820aa80bff2f3522.zip build-4d23ccc023c8b98eb97a7cce820aa80bff2f3522.tar.gz build-4d23ccc023c8b98eb97a7cce820aa80bff2f3522.tar.bz2 |
auto import from //branches/cupcake/...@132569
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/check_builds.sh | 67 | ||||
-rwxr-xr-x | tools/compare_fileslist.py | 106 | ||||
-rwxr-xr-x | tools/fileslist.py | 41 |
3 files changed, 214 insertions, 0 deletions
diff --git a/tools/check_builds.sh b/tools/check_builds.sh new file mode 100755 index 0000000..14dfec6 --- /dev/null +++ b/tools/check_builds.sh @@ -0,0 +1,67 @@ +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the 'License'); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an 'AS IS' BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# Usage: +# +# Source this file into your environment. Then: +# +# $ golden_builds sdk-sdk generic-eng generic-userdebug dream-eng +# +# will build a set of combos. This might take a while. Then you can +# go make changes, and run: +# +# $ check_builds sdk-sdk generic-eng generic-userdebug dream-eng +# +# Go get dinner, and when you get back, there will be a file +# test-builds/sizes.html that has a pretty chart of which files are +# in which tree, and how big they are. In that chart, cells for files +# that are missing are red, and rows where the file sizes are not all +# the same will be blue. +# + +TEST_BUILD_DIR=test-builds + +function do_builds +{ + PREFIX=$1 + shift + while [ -n "$1" ] + do + rm -rf $TEST_BUILD_DIR/$PREFIX-$1 + make -j6 PRODUCT-$1 dist DIST_DIR=$TEST_BUILD_DIR/$PREFIX-$1 + if [ $? -ne 0 ] ; then + echo FAILED + return + fi + shift + done +} + +function golden_builds +{ + rm -rf $TEST_BUILD_DIR/golden-* $TEST_BUILD_DIR/dist-* + do_builds golden "$@" +} + +function check_builds +{ + rm -rf $TEST_BUILD_DIR/dist-* + do_builds dist "$@" + build/tools/compare_fileslist.py \ + $TEST_BUILD_DIR/golden-*/installed-files.txt \ + $TEST_BUILD_DIR/dist-*/installed-files.txt \ + > $TEST_BUILD_DIR/sizes.html +} + diff --git a/tools/compare_fileslist.py b/tools/compare_fileslist.py new file mode 100755 index 0000000..1f507d8 --- /dev/null +++ b/tools/compare_fileslist.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the 'License'); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an 'AS IS' BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import cgi, os, string, sys + +def IsDifferent(row): + val = None + for v in row: + if v: + if not val: + val = v + else: + if val != v: + return True + return False + +def main(argv): + inputs = argv[1:] + data = {} + index = 0 + for input in inputs: + f = file(input, "r") + lines = f.readlines() + f.close() + lines = map(string.split, lines) + lines = map(lambda (x,y): (y,int(x)), lines) + for fn,sz in lines: + if not data.has_key(fn): + data[fn] = {} + data[fn][index] = sz + index = index + 1 + rows = [] + for fn,sizes in data.iteritems(): + row = [fn] + for i in range(0,index): + if sizes.has_key(i): + row.append(sizes[i]) + else: + row.append(None) + rows.append(row) + rows = sorted(rows, key=lambda x: x[0]) + print """<html> + <head> + <style type="text/css"> + .fn, .sz, .z, .d { + padding-left: 10px; + padding-right: 10px; + } + .sz, .z, .d { + text-align: right; + } + .fn { + background-color: #ffffdd; + } + .sz { + background-color: #ffffcc; + } + .z { + background-color: #ffcccc; + } + .d { + background-color: #99ccff; + } + </style> + </head> + <body> + """ + print "<table>" + print "<tr>" + for input in inputs: + combo = input.split(os.path.sep)[1] + print " <td class='fn'>%s</td>" % cgi.escape(combo) + print "</tr>" + + for row in rows: + print "<tr>" + for sz in row[1:]: + if not sz: + print " <td class='z'> </td>" + elif IsDifferent(row[1:]): + print " <td class='d'>%d</td>" % sz + else: + print " <td class='sz'>%d</td>" % sz + print " <td class='fn'>%s</td>" % cgi.escape(row[0]) + print "</tr>" + print "</table>" + print "</body></html>" + +if __name__ == '__main__': + main(sys.argv) + + diff --git a/tools/fileslist.py b/tools/fileslist.py new file mode 100755 index 0000000..ae105e6 --- /dev/null +++ b/tools/fileslist.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the 'License'); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an 'AS IS' BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import os, sys + +def main(argv): + output = [] + roots = argv[1:] + for root in roots: + base = len(root[:root.rfind(os.path.sep)]) + for dir, dirs, files in os.walk(root): + relative = dir[base:] + for f in files: + try: + row = ( + os.path.getsize(os.path.sep.join((dir, f))), + os.path.sep.join((relative, f)), + ) + output.append(row) + except os.error: + pass + for row in output: + print "%12d %s" % row + +if __name__ == '__main__': + main(sys.argv) + |