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