common/bin/test_builds.sh
changeset 34042 bac2ab9126f7
parent 34041 a769d473f680
parent 34018 7a2a042095b9
child 34066 9628377e8082
equal deleted inserted replaced
34041:a769d473f680 34042:bac2ab9126f7
     1 #!/bin/bash
       
     2 
       
     3 set -x
       
     4 set -e
       
     5 
       
     6 options="$*"
       
     7 option="$1"
       
     8 
       
     9 tmp=/tmp/test_builds.$$
       
    10 rm -f -r ${tmp}
       
    11 mkdir -p ${tmp}
       
    12 
       
    13 errMessages=${tmp}/error_messages.txt
       
    14 
       
    15 #######
       
    16 # Error function
       
    17 error() # message
       
    18 {
       
    19    echo "ERROR: $1" | tee -a ${errMessages}
       
    20 }
       
    21 # Check errors
       
    22 checkErrors()
       
    23 {
       
    24     if [ -s ${errMessages} ] ; then
       
    25         cat ${errMessages}
       
    26 	exit 1
       
    27     fi
       
    28 }
       
    29 #######
       
    30 
       
    31 os="`uname -s`"
       
    32 arch="`uname -p`"
       
    33 make=make
       
    34 
       
    35 if [ "${os}" = "SunOS" ] ; then
       
    36   make=gmake
       
    37   export J7="/opt/java/jdk1.7.0"
       
    38 elif [ "${os}" = "Darwin" ] ; then
       
    39   export J7="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home"
       
    40 elif [ "${os}" = "Linux" -a "${arch}" = "x86_64" ] ; then
       
    41   export J7="/usr/lib/jvm/java-7-openjdk-amd64/"
       
    42 else
       
    43   echo "What os/arch is this: ${os}/${arch}"
       
    44   exit 1
       
    45 fi
       
    46 
       
    47 # Must have a jdk7
       
    48 if [ ! -d ${J7} ] ; then
       
    49   echo "No JDK7 found at: ${J7}"
       
    50   exit 1
       
    51 fi
       
    52 
       
    53 # What sources we use
       
    54 fromroot="http://hg.openjdk.java.net/build-infra/jdk8"
       
    55 
       
    56 # Where we do it
       
    57 root="testbuilds"
       
    58 mkdir -p ${root}
       
    59 
       
    60 # Three areas, last three are cloned from first to insure sameness
       
    61 t0=${root}/t0
       
    62 t1=${root}/t1
       
    63 t2=${root}/t2
       
    64 t3=${root}/t3
       
    65 repolist="${t0} ${t1} ${t2} ${t3}"
       
    66 
       
    67 # Optional complete clobber
       
    68 if [ "${option}" = "clobber" ] ; then
       
    69   for i in ${repolist} ; do
       
    70     rm -f -r ${i}
       
    71   done
       
    72 fi
       
    73 
       
    74 # Get top repos
       
    75 if [ ! -d ${t0}/.hg ] ; then
       
    76   rm -f -r ${t0}
       
    77   hg clone ${fromroot} ${t0}
       
    78 fi
       
    79 for i in ${t1} ${t2} ${t3} ; do
       
    80   if [ ! -d ${i}/.hg ] ; then
       
    81     hg clone ${t0} ${i}
       
    82   fi
       
    83 done
       
    84 
       
    85 # Get repos updated
       
    86 for i in ${repolist} ; do
       
    87   ( \
       
    88     set -e \
       
    89     && cd ${i} \
       
    90     && sh ./get_source.sh \
       
    91     || error "Cannot get source" \
       
    92   ) 2>&1 | tee ${i}.get_source.txt
       
    93   checkErrors
       
    94 done
       
    95 
       
    96 # Optional clean
       
    97 if [ "${option}" = "clean" ] ; then
       
    98   for i in ${repolist} ; do
       
    99     rm -f -r ${i}/build
       
   100     rm -f -r ${i}/*/build
       
   101     rm -f -r ${i}/*/dist
       
   102   done
       
   103 fi
       
   104 
       
   105 # Check changes on working set files
       
   106 for i in ${repolist} ; do
       
   107   ( \
       
   108     set -e \
       
   109     && cd ${i} \
       
   110     && sh ./make/scripts/hgforest.sh status \
       
   111     || error "Cannot check status" \
       
   112   ) 2>&1 | tee ${i}.hg.status.txt
       
   113   checkErrors
       
   114 done
       
   115 
       
   116 # Configure for build-infra building
       
   117 for i in ${t1} ${t2} ; do
       
   118   ( \
       
   119     set -e \
       
   120     && cd ${i}/common/makefiles \
       
   121     && sh ../autoconf/configure --with-boot-jdk=${J7} \
       
   122     || error "Cannot configure" \
       
   123   ) 2>&1 | tee ${i}.config.txt
       
   124   checkErrors
       
   125 done
       
   126 
       
   127 # Do build-infra builds
       
   128 for i in ${t1} ${t2} ; do
       
   129   ( \
       
   130     set -e \
       
   131     && cd ${i}/common/makefiles \
       
   132     && ${make}  \
       
   133       FULL_VERSION:=1.8.0-internal-b00 \
       
   134       JRE_RELEASE_VERSION:=1.8.0-internal-b00 \
       
   135       USER_RELEASE_SUFFIX:=compare \
       
   136       RELEASE:=1.8.0-internal \
       
   137       VERBOSE= \
       
   138       LIBARCH= \
       
   139          all images \
       
   140     || error "Cannot build" \
       
   141   ) 2>&1 | tee ${i}.build.txt
       
   142   checkErrors
       
   143 done
       
   144 
       
   145 # Compare build-infra builds
       
   146 ( \
       
   147   sh ${t0}/common/bin/compareimage.sh \
       
   148     ${t1}/build/*/images/j2sdk-image \
       
   149     ${t2}/build/*/images/j2sdk-image \
       
   150     || error "Cannot compare" \
       
   151 ) 2>&1 | tee ${root}/build-infra-comparison.txt
       
   152 checkErrors
       
   153 
       
   154 # Do old build
       
   155 unset JAVA_HOME
       
   156 export ALT_BOOTDIR="${J7}"
       
   157 ( \
       
   158   cd ${t3} \
       
   159   && ${make} FULL_VERSION='"1.8.0-internal" sanity \
       
   160   || error "Cannot sanity" \
       
   161 ) 2>&1 | tee ${t3}.sanity.txt
       
   162 checkErrors
       
   163 ( \
       
   164   cd ${t3} \
       
   165   && ${make} \
       
   166       FULL_VERSION='"1.8.0-internal" \
       
   167       JRE_RELEASE_VERSION:=1.8.0-internal-b00 \
       
   168       USER_RELEASE_SUFFIX:=compare \
       
   169       RELEASE:=1.8.0-internal \
       
   170   || error "Cannot build old way" \
       
   171 ) 2>&1 | tee ${t3}.build.txt
       
   172 checkErrors
       
   173 
       
   174 # Compare old build to build-infra build
       
   175 ( \
       
   176   sh ${t0}/common/bin/compareimage.sh \
       
   177     ${t3}/build/*/j2sdk-image \
       
   178     ${t1}/build/*/images/j2sdk-image \
       
   179     || error "Cannot compare" \
       
   180 ) 2>&1 | tee ${root}/build-comparison.txt
       
   181 checkErrors
       
   182 
       
   183 exit 0