Home | History | Annotate | Download | only in tools
      1 #!/bin/bash
      2 # Copyright 2012 the V8 project authors. All rights reserved.
      3 # Redistribution and use in source and binary forms, with or without
      4 # modification, are permitted provided that the following conditions are
      5 # met:
      6 #
      7 #     * Redistributions of source code must retain the above copyright
      8 #       notice, this list of conditions and the following disclaimer.
      9 #     * Redistributions in binary form must reproduce the above
     10 #       copyright notice, this list of conditions and the following
     11 #       disclaimer in the documentation and/or other materials provided
     12 #       with the distribution.
     13 #     * Neither the name of Google Inc. nor the names of its
     14 #       contributors may be used to endorse or promote products derived
     15 #       from this software without specific prior written permission.
     16 #
     17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28 
     29 # This script pushes android binaries and test data to the device.
     30 # The first argument can be either "android.release" or "android.debug".
     31 # The second argument is a relative path to the output directory with binaries.
     32 # The third argument is the absolute path to the V8 directory on the host.
     33 # The fourth argument is the absolute path to the V8 directory on the device.
     34 
     35 if [ ${#@} -lt 4 ] ; then
     36   echo "$0: Error: need 4 arguments"
     37   exit 1
     38 fi
     39 
     40 ARCH_MODE=$1
     41 OUTDIR=$2
     42 HOST_V8=$3
     43 ANDROID_V8=$4
     44 
     45 function LINUX_MD5 {
     46   local HASH=$(md5sum $1)
     47   echo ${HASH%% *}
     48 }
     49 
     50 function DARWIN_MD5 {
     51   local HASH=$(md5 $1)
     52   echo ${HASH} | cut -f2 -d "=" | cut -f2 -d " "
     53 }
     54 
     55 host_os=$(uname -s)
     56 case "${host_os}" in
     57   "Linux")
     58     MD5=LINUX_MD5
     59     ;;
     60   "Darwin")
     61     MD5=DARWIN_MD5
     62     ;;
     63   *)
     64     echo "$0: Host platform ${host_os} is not supported" >& 2
     65     exit 1
     66 esac
     67 
     68 function sync_file {
     69   local FILE=$1
     70   local ANDROID_HASH=$(adb shell "md5 \"$ANDROID_V8/$FILE\"")
     71   local HOST_HASH=$($MD5 "$HOST_V8/$FILE")
     72   if [ "${ANDROID_HASH%% *}" != "${HOST_HASH}" ]; then
     73     adb push "$HOST_V8/$FILE" "$ANDROID_V8/$FILE" &> /dev/null
     74   fi
     75   echo -n "."
     76 }
     77 
     78 function sync_dir {
     79   local DIR=$1
     80   echo -n "sync to $ANDROID_V8/$DIR"
     81   for FILE in $(find "$HOST_V8/$DIR" -not -path "*.svn*" -type f); do
     82     local RELATIVE_FILE=${FILE:${#HOST_V8}}
     83     sync_file "$RELATIVE_FILE"
     84   done
     85   echo ""
     86 }
     87 
     88 echo -n "sync to $ANDROID_V8/$OUTDIR/$ARCH_MODE"
     89 sync_file "$OUTDIR/$ARCH_MODE/cctest"
     90 sync_file "$OUTDIR/$ARCH_MODE/d8"
     91 sync_file "$OUTDIR/$ARCH_MODE/preparser"
     92 echo ""
     93 echo -n "sync to $ANDROID_V8/tools"
     94 sync_file tools/consarray.js
     95 sync_file tools/codemap.js
     96 sync_file tools/csvparser.js
     97 sync_file tools/profile.js
     98 sync_file tools/splaytree.js
     99 sync_file tools/profile_view.js
    100 sync_file tools/logreader.js
    101 sync_file tools/tickprocessor.js
    102 echo ""
    103 sync_dir test/message
    104 sync_dir test/mjsunit
    105 sync_dir test/preparser
    106