Home | History | Annotate | Download | only in tools
      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 
     34 TEST_BUILD_DIR=test-builds
     35 
     36 function 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 -j16 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 
     53 function golden_builds
     54 {
     55     rm -rf $TEST_BUILD_DIR/golden-* $TEST_BUILD_DIR/dist-*
     56     do_builds golden "$@"
     57 }
     58 
     59 function 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/make/tools/compare_fileslist.py $inputs > $TEST_BUILD_DIR/sizes.html
     69 }
     70 
     71 function check_builds
     72 {
     73     rm -rf $TEST_BUILD_DIR/dist-*
     74     do_builds dist "$@"
     75     compare_builds "$@"
     76 }
     77 
     78 function 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/make/tools/compare_fileslist.py $inputs > $TEST_BUILD_DIR/sizes.html
     91 }
     92 
     93