check_builds.sh revision 7ee52de5c310fb0c3ad0df3f1b3d65cf85efc12e
1# Copyright (C) 2009 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the 'License');
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an 'AS IS' BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15#
16# Usage:
17#
18# Source this file into your environment.  Then:
19#
20#    $ golden_builds sdk-sdk generic-eng generic-userdebug dream-eng
21# 
22# will build a set of combos.  This might take a while.  Then you can
23# go make changes, and run:
24#
25#    $ check_builds sdk-sdk generic-eng generic-userdebug dream-eng
26#
27# Go get dinner, and when you get back, there will be a file
28# test-builds/sizes.html that has a pretty chart of which files are
29# in which tree, and how big they are.  In that chart, cells for files
30# that are missing are red, and rows where the file sizes are not all
31# the same will be blue.
32#
33
34TEST_BUILD_DIR=test-builds
35
36function do_builds
37{
38    PREFIX=$1
39    shift
40    while [ -n "$1" ]
41    do
42        rm -rf $TEST_BUILD_DIR/$PREFIX-$1
43        make PRODUCT-$(echo $1 | sed "s/-.*//" )-installclean
44        make -j6 PRODUCT-$1 dist DIST_DIR=$TEST_BUILD_DIR/$PREFIX-$1
45        if [ $? -ne 0 ] ; then
46            echo FAILED
47            return
48        fi
49        shift
50    done
51}
52
53function golden_builds
54{
55    rm -rf $TEST_BUILD_DIR/golden-* $TEST_BUILD_DIR/dist-*
56    do_builds golden "$@"
57}
58
59function compare_builds
60{
61    local inputs=
62    while [ -n "$1" ]
63    do
64        inputs="$inputs $TEST_BUILD_DIR/golden-$1/installed-files.txt"
65        inputs="$inputs $TEST_BUILD_DIR/dist-$1/installed-files.txt"
66        shift
67    done
68    build/tools/compare_fileslist.py $inputs > $TEST_BUILD_DIR/sizes.html
69}
70
71function check_builds
72{
73    rm -rf $TEST_BUILD_DIR/dist-*
74    do_builds dist "$@"
75    compare_builds "$@"
76}
77
78function diff_builds
79{
80    local inputs=
81    while [ -n "$1" ]
82    do
83        diff $TEST_BUILD_DIR/golden-$1/installed-files.txt $TEST_BUILD_DIR/dist-$1/installed-files.txt &> /dev/null
84        if [ $? != 0 ]; then
85            echo =========== $1 ===========
86            diff $TEST_BUILD_DIR/golden-$1/installed-files.txt $TEST_BUILD_DIR/dist-$1/installed-files.txt
87        fi
88        shift
89    done
90    build/tools/compare_fileslist.py $inputs > $TEST_BUILD_DIR/sizes.html
91}
92
93