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