85 $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \ 86 -e '/[<>] Created-By: .* (Oracle [Corpatin)]*/d' \ 87 -e '/[<>] [Corpatin]*)/d' \ 88 -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d') 89 fi 90 if test "x$SUFFIX" = "xjava"; then 91 TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \ 92 $GREP '^[<>]' | \ 93 $SED -e '/[<>] \* from.*\.idl/d' \ 94 -e '/[<>] .*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \ 95 -e '/[<>] \*.*[0-9]\{4\} [0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \ 96 -e '/\/\/ Generated from input file.*/d' \ 97 -e '/\/\/ This file was generated AUTOMATICALLY from a template file.*/d' \ 98 -e '/\/\/ java GenerateCharacter.*/d') 99 fi 100 # Ignore date strings in class files. 101 # Anonymous lambda classes get randomly assigned counters in their names. 102 if test "x$SUFFIX" = "xclass"; then 103 # To improve performance when large diffs are found, do a rough filtering of classes 104 # elibeble for these exceptions 105 if $GREP -R -e '[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}' \ 106 -e '[0-9]\{2\}/[0-9]\{2\}/[0-9]\{4\}' \ 107 -e 'lambda\$[a-zA-Z0-9]*\$[0-9]' ${THIS_FILE} > /dev/null; then 108 $JAVAP -c -constants -l -p "${OTHER_FILE}" > ${OTHER_FILE}.javap 109 $JAVAP -c -constants -l -p "${THIS_FILE}" > ${THIS_FILE}.javap 110 TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap | \ 111 $GREP '^[<>]' | \ 112 $SED -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \ 113 -e '/[0-9]\{2\}\/[0-9]\{2\}\/[0-9]\{4\}/d' \ 114 -e '/[<>].*lambda\$[a-zA-Z0-9]*\$[0-9]*/d') 115 fi 116 fi 117 if test "x$SUFFIX" = "xproperties"; then 118 # Run through nawk to add possibly missing newline at end of file. 119 $CAT $OTHER_FILE | $NAWK '{ print }' | LC_ALL=C $SORT > $OTHER_FILE.cleaned 120 # Disable this exception since we aren't changing the properties cleaning method yet. 121 # $CAT $OTHER_FILE | $SED -e 's/\([^\\]\):/\1\\:/g' -e 's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \ 122 # | $SED -f "$SRC_ROOT/common/makefiles/support/unicode2x.sed" \ 123 # | $SED -e '/^#/d' -e '/^$/d' \ 124 # -e :a -e '/\\$/N; s/\\\n//; ta' \ 125 # -e 's/^[ \t]*//;s/[ \t]*$//' \ 126 # -e 's/\\=/=/' | LC_ALL=C $SORT > $OTHER_FILE.cleaned 127 # Filter out date string differences. 128 TMP=$(LC_ALL=C $DIFF $OTHER_FILE.cleaned $THIS_FILE | \ 129 $GREP '^[<>]' | \ 130 $SED -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d') 131 fi 132 if test "x$SUFFIX" = "xhtml"; then 133 # Some javadoc versions do not put quotes around font size 134 HTML_FILTER="$SED \ 135 -e 's/<font size=-1>/<font size=\"-1\">/g'" 136 $CAT $THIS_FILE | eval "$HTML_FILTER" > $THIS_FILE.filtered 137 $CAT $OTHER_FILE | eval "$HTML_FILTER" > $OTHER_FILE.filtered 138 TMP=$(LC_ALL=C $DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \ 139 $GREP '^[<>]' | \ 140 $SED -e '/[<>] <!-- Generated by javadoc .* on .* -->/d' \ 141 -e '/[<>] <meta name="date" content=".*">/d' ) 142 fi 143 if test -n "$TMP"; then 144 echo Files $OTHER_FILE and $THIS_FILE differ 145 return 1 146 fi 147 148 return 0 149 } 150 289 else 290 REGRESSIONS=true 291 fi 292 } 293 294 ################################################################################ 295 # Compare the rest of the files 296 297 compare_general_files() { 298 THIS_DIR=$1 299 OTHER_DIR=$2 300 WORK_DIR=$3 301 302 GENERAL_FILES=$(cd $THIS_DIR && $FIND . -type f ! -name "*.so" ! -name "*.jar" \ 303 ! -name "*.zip" ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \ 304 ! -name "*.jimage" ! -name "ct.sym" ! -name "*.diz" ! -name "*.dll" \ 305 ! -name "*.cpl" ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \ 306 ! -name "*.lib" ! -name "*.war" ! -name "JavaControlPanel" \ 307 ! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \ 308 ! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \ 309 ! -name "jspawnhelper" ! -name "*.a" \ 310 | $GREP -v "./bin/" | $SORT | $FILTER) 311 312 echo Other files with binary differences... 313 for f in $GENERAL_FILES 314 do 315 if [ -e $OTHER_DIR/$f ]; then 316 SUFFIX="${f##*.}" 317 if [ "$(basename $f)" = "release" ]; then 318 # Ignore differences in change numbers in release file. 319 OTHER_FILE=$WORK_DIR/$f.other 320 THIS_FILE=$WORK_DIR/$f.this 321 $MKDIR -p $(dirname $OTHER_FILE) 322 $MKDIR -p $(dirname $THIS_FILE) 323 $CAT $OTHER_DIR/$f | $SED 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' > $OTHER_FILE 324 $CAT $THIS_DIR/$f | $SED 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' > $THIS_FILE 325 elif [ "x$SUFFIX" = "xhtml" ]; then 326 # Ignore time stamps in docs files 327 OTHER_FILE=$WORK_DIR/$f.other 328 THIS_FILE=$WORK_DIR/$f.this 329 $MKDIR -p $(dirname $OTHER_FILE) 330 $MKDIR -p $(dirname $THIS_FILE) 331 #Note that | doesn't work on mac sed. 332 $CAT $OTHER_DIR/$f | $SED -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \ 333 -e 's/\(<meta name="date" content="\).*\(">\)/\1(removed)\2/' \ 334 -e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [12][0-9]* [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/(removed)/' \ 335 -e 's/[A-Z][a-z]* [A-Z][a-z]* [0-9][0-9] [0-9][0-9:]* [A-Z][A-Z]* [12][0-9]*/(removed)/' \ 336 -e 's/^\( from \).*\(\.idl\)$/\1(removed)\2/' \ 337 -e 's/^\(.*\)\( o'"'"'clock \)\([A-Z][A-Z][A-Z]\)/(removed)\2(removed)/' \ 338 > $OTHER_FILE 339 $CAT $THIS_DIR/$f | $SED -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \ 340 -e 's/\(<meta name="date" content="\).*\(">\)/\1(removed)\2/' \ 341 -e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [12][0-9]* [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/(removed)/' \ 342 -e 's/[A-Z][a-z]* [A-Z][a-z]* [0-9][0-9] [0-9][0-9:]* [A-Z][A-Z]* [12][0-9]*/(removed)/' \ 343 -e 's/^\( from \).*\(\.idl\)$/\1(removed)\2/' \ 344 -e 's/^\(.*\)\( o'"'"'clock \)\([A-Z][A-Z][A-Z]\)/(removed)\2(removed)/' \ 345 > $THIS_FILE 346 else 347 OTHER_FILE=$OTHER_DIR/$f 348 THIS_FILE=$THIS_DIR/$f 349 fi 350 DIFF_OUT=$($DIFF $OTHER_FILE $THIS_FILE 2>&1) 351 if [ -n "$DIFF_OUT" ]; then 352 echo $f 353 REGRESSIONS=true 354 if [ "$SHOW_DIFFS" = "true" ]; then 355 echo "$DIFF_OUT" 356 fi 357 fi 358 fi 359 done 360 361 362 } 363 364 ################################################################################ 365 # Compare zip file 588 589 if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then 590 THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME 591 OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME 592 $MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other 593 $CP $THIS_FILE $THIS_STRIPPED_FILE 594 $CP $OTHER_FILE $OTHER_STRIPPED_FILE 595 $STRIP $THIS_STRIPPED_FILE 596 $STRIP $OTHER_STRIPPED_FILE 597 THIS_FILE="$THIS_STRIPPED_FILE" 598 OTHER_FILE="$OTHER_STRIPPED_FILE" 599 fi 600 601 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 602 unset _NT_SYMBOL_PATH 603 # On windows we need to unzip the debug symbols, if present 604 OTHER_FILE_BASE=${OTHER_FILE/.dll/} 605 OTHER_FILE_BASE=${OTHER_FILE_BASE/.exe/} 606 OTHER_FILE_BASE=${OTHER_FILE_BASE/.cpl/} 607 DIZ_NAME=$(basename $OTHER_FILE_BASE).diz 608 # java.exe and java.dll diz files will have the same name. Have to 609 # make sure java.exe gets the right one. This is only needed for 610 # OTHER since in the new build, all pdb files are left around. 611 if [ "$NAME" = "java.exe" ] && [ -f "$OTHER/tmp/java/java/obj64/java.diz" ]; then 612 OTHER_DIZ_FILE="$OTHER/tmp/java/java/obj64/java.diz" 613 elif [ -f "${OTHER_FILE_BASE}.diz" ]; then 614 OTHER_DIZ_FILE=${OTHER_FILE_BASE}.diz 615 else 616 # Some files, jli.dll, appears twice in the image but only one of 617 # thme has a diz file next to it. 618 OTHER_DIZ_FILE="$($FIND $OTHER_DIR -name $DIZ_NAME | $SED 1q)" 619 if [ ! -f "$OTHER_DIZ_FILE" ]; then 620 # As a last resort, look for diz file in the whole build output 621 # dir. 622 OTHER_DIZ_FILE="$($FIND $OTHER -name $DIZ_NAME | $SED 1q)" 623 fi 624 fi 625 if [ -n "$OTHER_DIZ_FILE" ]; then 626 $MKDIR -p $FILE_WORK_DIR/other 627 (cd $FILE_WORK_DIR/other ; $UNARCHIVE -o $OTHER_DIZ_FILE) 628 export _NT_SYMBOL_PATH="$FILE_WORK_DIR/other" 629 fi 630 THIS_FILE_BASE=${THIS_FILE/.dll/} 631 THIS_FILE_BASE=${THIS_FILE_BASE/.exe/} 632 if [ -f "${THIS_FILE/.dll/}.diz" ]; then 633 THIS_DIZ_FILE=${THIS_FILE/.dll/}.diz 634 else 635 THIS_DIZ_FILE="$($FIND $THIS_DIR -name $DIZ_NAME | $SED 1q)" 636 if [ ! -f "$THIS_DIZ_FILE" ]; then 637 # As a last resort, look for diz file in the whole build output 638 # dir. 639 THIS_DIZ_FILE="$($FIND $THIS -name $DIZ_NAME | $SED 1q)" 640 fi 641 fi 642 if [ -n "$THIS_DIZ_FILE" ]; then 643 $MKDIR -p $FILE_WORK_DIR/this 644 (cd $FILE_WORK_DIR/this ; $UNARCHIVE -o $THIS_DIZ_FILE) 645 export _NT_SYMBOL_PATH="$_NT_SYMBOL_PATH;$FILE_WORK_DIR/this" 646 fi 647 fi 648 649 if [ -z "$SKIP_BIN_DIFF" ]; then 650 if cmp $OTHER_FILE $THIS_FILE > /dev/null; then 651 # The files were bytewise identical. 652 if [ -n "$VERBOSE" ]; then 839 FULLDUMP_MSG="($FULLDUMP_MSG)" 840 DIFF_FULLDUMP= 841 fi 842 else 843 FULLDUMP_MSG=" " 844 DIFF_FULLDUMP= 845 if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then 846 FULLDUMP_MSG=" ! " 847 fi 848 fi 849 fi 850 851 # Compare disassemble output 852 if [ -n "$DIS_CMD" ] && [ -z "$SKIP_DIS_DIFF" ]; then 853 # By default we filter out differences that include references to symbols. 854 # To get a raw diff with the complete disassembly, set 855 # DIS_DIFF_FILTER="$CAT" 856 if [ -z "$DIS_DIFF_FILTER" ]; then 857 DIS_DIFF_FILTER="$GREP -v ' # .* <.*>$' | $SED -r -e 's/(\b|x)([0-9a-fA-F]+)(\b|:|>)/X/g'" 858 fi 859 $DIS_CMD $OTHER_FILE | $GREP -v $NAME | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1 860 $DIS_CMD $THIS_FILE | $GREP -v $NAME | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1 861 862 LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff 863 864 if [ -s $WORK_FILE_BASE.dis.diff ]; then 865 DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}') 866 DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE) 867 if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then 868 DIFF_DIS=true 869 if [[ "$KNOWN_DIS_DIFF" != *"$BIN_FILE"* ]]; then 870 DIS_MSG="*$DIS_MSG*" 871 REGRESSIONS=true 872 else 873 DIS_MSG=" $DIS_MSG " 874 fi 875 else 876 DIS_MSG="($DIS_MSG)" 877 DIFF_DIS= 878 fi 879 else 880 DIS_MSG=" " 957 958 return $return_value 959 } 960 961 ################################################################################ 962 # Compare all executables 963 964 compare_all_execs() { 965 THIS_DIR=$1 966 OTHER_DIR=$2 967 WORK_DIR=$3 968 969 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 970 EXECS=$(cd $THIS_DIR && $FIND . -type f -name '*.exe' | $SORT | $FILTER) 971 else 972 EXECS=$(cd $THIS_DIR && $FIND . -name db -prune -o -type f -perm -100 \! \ 973 \( -name '*.so' -o -name '*.dylib' -o -name '*.dll' -o -name '*.cgi' \ 974 -o -name '*.jar' -o -name '*.diz' -o -name 'jcontrol' -o -name '*.properties' \ 975 -o -name '*.data' -o -name '*.bfc' -o -name '*.src' -o -name '*.txt' \ 976 -o -name '*.cfg' -o -name 'meta-index' -o -name '*.properties.ja' \ 977 -o -name 'classlist' \) | $SORT | $FILTER) 978 fi 979 980 if [ -n "$EXECS" ]; then 981 echo Executables... 982 print_binary_diff_header 983 for e in $EXECS; do 984 if [ -f "$OTHER_DIR/$e" ]; then 985 compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $e 986 if [ "$?" != "0" ]; then 987 return_value=1 988 fi 989 fi 990 done 991 fi 992 993 return $return_value 994 } 995 996 ################################################################################ 1261 echo "Also comparing deploy javadoc bundles" 1262 fi 1263 1264 if [ -d "$THIS/images/JavaAppletPlugin.plugin" ] \ 1265 && [ -d "$OTHER/images/JavaAppletPlugin.plugin" -o -d "$OTHER/deploy/images/JavaAppletPlugin.plugin" ]; then 1266 if [ -d "$THIS/images/JavaAppletPlugin.plugin" ]; then 1267 THIS_DEPLOY_APPLET_PLUGIN_DIR="$THIS/images/JavaAppletPlugin.plugin" 1268 else 1269 THIS_DEPLOY_APPLET_PLUGIN_DIR="$THIS/deploy/images/JavaAppletPlugin.plugin" 1270 fi 1271 if [ -d "$OTHER/images/JavaAppletPlugin.plugin" ]; then 1272 OTHER_DEPLOY_APPLET_PLUGIN_DIR="$OTHER/images/JavaAppletPlugin.plugin" 1273 else 1274 OTHER_DEPLOY_APPLET_PLUGIN_DIR="$OTHER/deploy/images/JavaAppletPlugin.plugin" 1275 fi 1276 echo "Also comparing deploy applet image" 1277 echo " $THIS_DEPLOY_APPLET_PLUGIN_DIR" 1278 echo " $OTHER_DEPLOY_APPLET_PLUGIN_DIR" 1279 fi 1280 1281 if [ -d "$OTHER/images" ]; then 1282 OTHER_SEC_DIR="$OTHER/images" 1283 else 1284 OTHER_SEC_DIR="$OTHER/tmp" 1285 fi 1286 OTHER_SEC_BIN="$OTHER_SEC_DIR/sec-bin.zip" 1287 THIS_SEC_DIR="$THIS/images" 1288 THIS_SEC_BIN="$THIS_SEC_DIR/sec-bin.zip" 1289 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 1290 if [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then 1291 JGSS_WINDOWS_BIN="jgss-windows-x64-bin.zip" 1292 else 1293 JGSS_WINDOWS_BIN="jgss-windows-i586-bin.zip" 1294 fi 1295 OTHER_SEC_WINDOWS_BIN="$OTHER_SEC_DIR/sec-windows-bin.zip" 1296 OTHER_JGSS_WINDOWS_BIN="$OTHER_SEC_DIR/$JGSS_WINDOWS_BIN" 1297 THIS_SEC_WINDOWS_BIN="$THIS_SEC_DIR/sec-windows-bin.zip" 1298 THIS_JGSS_WINDOWS_BIN="$THIS_SEC_DIR/$JGSS_WINDOWS_BIN" 1299 fi 1300 1301 if [ -d "$THIS/docs" ] && [ -d "$OTHER/docs" ]; then 1302 THIS_DOCS="$THIS/docs" 1303 OTHER_DOCS="$OTHER/docs" 1304 echo "Also comparing docs" 1305 else 1306 echo "WARNING! Docs haven't been built and won't be compared." 1307 fi 1308 fi 1309 1310 ################################################################################ 1311 # Do the work 1312 1313 if [ "$CMP_NAMES" = "true" ]; then 1314 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1315 echo -n "JDK " 1316 compare_dirs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1317 echo -n "JRE " 1318 compare_dirs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1319 1320 echo -n "JDK " 1321 compare_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1322 echo -n "JRE " 1323 compare_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1332 compare_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle 1333 echo -n "JRE Bundle " 1334 compare_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle 1335 fi 1336 if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then 1337 echo -n "Docs " 1338 compare_dirs $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs 1339 echo -n "Docs " 1340 compare_files $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs 1341 fi 1342 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1343 compare_dirs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1344 compare_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1345 fi 1346 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1347 echo -n "JavaAppletPlugin " 1348 compare_dirs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1349 echo -n "JavaAppletPlugin " 1350 compare_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1351 fi 1352 fi 1353 1354 if [ "$CMP_PERMS" = "true" ]; then 1355 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1356 echo -n "JDK " 1357 compare_permissions $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1358 echo -n "JRE " 1359 compare_permissions $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1360 fi 1361 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1362 compare_permissions $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1363 fi 1364 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1365 echo -n "JavaAppletPlugin " 1366 compare_permissions $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1367 fi 1368 fi 1369 1370 if [ "$CMP_TYPES" = "true" ]; then 1371 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1372 echo -n "JDK " 1373 compare_file_types $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1374 echo -n "JRE " 1375 compare_file_types $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1376 fi 1377 if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then 1378 echo -n "JDK Bundle " 1379 compare_file_types $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle 1380 echo -n "JRE Bundle " 1381 compare_file_types $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle 1382 fi 1383 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1384 compare_file_types $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1385 fi 1386 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1387 echo -n "JavaAppletPlugin " 1388 compare_file_types $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1389 fi 1390 fi 1391 1392 if [ "$CMP_GENERAL" = "true" ]; then 1393 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1394 echo -n "JDK " 1395 compare_general_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1396 echo -n "JRE " 1397 compare_general_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1398 fi 1399 if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then 1400 echo -n "JDK Bundle " 1401 compare_general_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle 1402 echo -n "JRE Bundle " 1403 compare_general_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle 1404 fi 1405 if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then 1406 echo -n "Docs " 1407 compare_general_files $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs 1408 fi 1409 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1410 compare_general_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1411 fi 1412 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1413 echo -n "JavaAppletPlugin " 1414 compare_general_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1415 fi 1416 fi 1417 1418 if [ "$CMP_ZIPS" = "true" ]; then 1419 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1420 compare_all_zip_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1421 fi 1422 if [ -n "$THIS_SEC_BIN" ] && [ -n "$OTHER_SEC_BIN" ]; then 1423 if [ -n "$(echo $THIS_SEC_BIN | $FILTER)" ]; then 1424 echo "sec-bin.zip..." 1425 compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin sec-bin.zip 1426 fi 1427 fi 1428 if [ -n "$THIS_SEC_WINDOWS_BIN" ] && [ -n "$OTHER_SEC_WINDOWS_BIN" ]; then 1429 if [ -n "$(echo $THIS_SEC_WINDOWS_BIN | $FILTER)" ]; then 1430 echo "sec-windows-bin.zip..." 1431 compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin sec-windows-bin.zip 1432 fi 1433 fi 1434 if [ -n "$THIS_JGSS_WINDOWS_BIN" ] && [ -n "$OTHER_JGSS_WINDOWS_BIN" ]; then 1435 if [ -n "$(echo $THIS_JGSS_WINDOWS_BIN | $FILTER)" ]; then 1459 compare_all_jar_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1460 fi 1461 fi 1462 1463 if [ "$CMP_LIBS" = "true" ]; then 1464 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1465 echo -n "JDK " 1466 compare_all_libs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1467 if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then 1468 echo -n "JRE " 1469 compare_all_libs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1470 fi 1471 fi 1472 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1473 compare_all_libs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1474 fi 1475 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1476 echo -n "JavaAppletPlugin " 1477 compare_all_libs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1478 fi 1479 fi 1480 1481 if [ "$CMP_EXECS" = "true" ]; then 1482 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1483 compare_all_execs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1484 if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then 1485 echo -n "JRE " 1486 compare_all_execs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1487 fi 1488 fi 1489 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1490 compare_all_execs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1491 fi 1492 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1493 echo -n "JavaAppletPlugin " 1494 compare_all_execs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1495 fi 1496 fi 1497 1498 echo 1499 1500 if [ -n "$REGRESSIONS" ]; then 1501 echo "REGRESSIONS FOUND!" 1502 echo 1503 exit 1 1504 else 1505 echo "No regressions found" 1506 echo 1507 exit 0 1508 fi | 85 $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \ 86 -e '/[<>] Created-By: .* (Oracle [Corpatin)]*/d' \ 87 -e '/[<>] [Corpatin]*)/d' \ 88 -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d') 89 fi 90 if test "x$SUFFIX" = "xjava"; then 91 TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \ 92 $GREP '^[<>]' | \ 93 $SED -e '/[<>] \* from.*\.idl/d' \ 94 -e '/[<>] .*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \ 95 -e '/[<>] \*.*[0-9]\{4\} [0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \ 96 -e '/\/\/ Generated from input file.*/d' \ 97 -e '/\/\/ This file was generated AUTOMATICALLY from a template file.*/d' \ 98 -e '/\/\/ java GenerateCharacter.*/d') 99 fi 100 # Ignore date strings in class files. 101 # Anonymous lambda classes get randomly assigned counters in their names. 102 if test "x$SUFFIX" = "xclass"; then 103 # To improve performance when large diffs are found, do a rough filtering of classes 104 # elibeble for these exceptions 105 if $GREP -R -e '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}' \ 106 -e 'lambda\$[a-zA-Z0-9]*\$[0-9]' ${THIS_FILE} > /dev/null; then 107 $JAVAP -c -constants -l -p "${OTHER_FILE}" > ${OTHER_FILE}.javap 108 $JAVAP -c -constants -l -p "${THIS_FILE}" > ${THIS_FILE}.javap 109 TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap | \ 110 $GREP '^[<>]' | \ 111 $SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d' \ 112 -e '/[<>].*lambda\$[a-zA-Z0-9]*\$[0-9]*/d') 113 fi 114 fi 115 if test "x$SUFFIX" = "xproperties"; then 116 # Filter out date string differences. 117 TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \ 118 $GREP '^[<>]' | \ 119 $SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d') 120 fi 121 if test "x$SUFFIX" = "xhtml"; then 122 # Some javadoc versions do not put quotes around font size 123 HTML_FILTER="$SED \ 124 -e 's/<font size=-1>/<font size=\"-1\">/g'" 125 $CAT $THIS_FILE | eval "$HTML_FILTER" > $THIS_FILE.filtered 126 $CAT $OTHER_FILE | eval "$HTML_FILTER" > $OTHER_FILE.filtered 127 TMP=$(LC_ALL=C $DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \ 128 $GREP '^[<>]' | \ 129 $SED -e '/[<>] <!-- Generated by javadoc .* on .* -->/d' \ 130 -e '/[<>] <meta name="date" content=".*">/d' ) 131 fi 132 if test -n "$TMP"; then 133 echo Files $OTHER_FILE and $THIS_FILE differ 134 return 1 135 fi 136 137 return 0 138 } 139 278 else 279 REGRESSIONS=true 280 fi 281 } 282 283 ################################################################################ 284 # Compare the rest of the files 285 286 compare_general_files() { 287 THIS_DIR=$1 288 OTHER_DIR=$2 289 WORK_DIR=$3 290 291 GENERAL_FILES=$(cd $THIS_DIR && $FIND . -type f ! -name "*.so" ! -name "*.jar" \ 292 ! -name "*.zip" ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \ 293 ! -name "*.jimage" ! -name "ct.sym" ! -name "*.diz" ! -name "*.dll" \ 294 ! -name "*.cpl" ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \ 295 ! -name "*.lib" ! -name "*.war" ! -name "JavaControlPanel" \ 296 ! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \ 297 ! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \ 298 ! -name "jspawnhelper" ! -name "JavawsLauncher" ! -name "*.a" \ 299 ! -name "finish_installation" ! -name "Sparkle" \ 300 | $GREP -v "./bin/" | $SORT | $FILTER) 301 302 echo Other files with binary differences... 303 for f in $GENERAL_FILES 304 do 305 if [ -e $OTHER_DIR/$f ]; then 306 SUFFIX="${f##*.}" 307 if [ "$(basename $f)" = "release" ]; then 308 # Ignore differences in change numbers in release file. 309 OTHER_FILE=$WORK_DIR/$f.other 310 THIS_FILE=$WORK_DIR/$f.this 311 $MKDIR -p $(dirname $OTHER_FILE) 312 $MKDIR -p $(dirname $THIS_FILE) 313 RELEASE_FILTER="$SED \ 314 -e 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' \ 315 -e 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g' 316 " 317 $CAT $OTHER_DIR/$f | eval "$RELEASE_FILTER" > $OTHER_FILE 318 $CAT $THIS_DIR/$f | eval "$RELEASE_FILTER" > $THIS_FILE 319 elif [ "x$SUFFIX" = "xhtml" ]; then 320 # Ignore time stamps in docs files 321 OTHER_FILE=$WORK_DIR/$f.other 322 THIS_FILE=$WORK_DIR/$f.this 323 $MKDIR -p $(dirname $OTHER_FILE) $(dirname $THIS_FILE) 324 # Older versions of compare might have left soft links with 325 # these names. 326 $RM $OTHER_FILE $THIS_FILE 327 #Note that | doesn't work on mac sed. 328 HTML_FILTER="$SED \ 329 -e 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g' \ 330 -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \ 331 -e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [0-9]\{4\} [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/<DATE>/' 332 " 333 $CAT $OTHER_DIR/$f | eval "$HTML_FILTER" > $OTHER_FILE 334 $CAT $THIS_DIR/$f | eval "$HTML_FILTER" > $THIS_FILE 335 else 336 OTHER_FILE=$OTHER_DIR/$f 337 THIS_FILE=$THIS_DIR/$f 338 fi 339 DIFF_OUT=$($DIFF $OTHER_FILE $THIS_FILE 2>&1) 340 if [ -n "$DIFF_OUT" ]; then 341 echo $f 342 REGRESSIONS=true 343 if [ "$SHOW_DIFFS" = "true" ]; then 344 echo "$DIFF_OUT" 345 fi 346 fi 347 fi 348 done 349 350 351 } 352 353 ################################################################################ 354 # Compare zip file 577 578 if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then 579 THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME 580 OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME 581 $MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other 582 $CP $THIS_FILE $THIS_STRIPPED_FILE 583 $CP $OTHER_FILE $OTHER_STRIPPED_FILE 584 $STRIP $THIS_STRIPPED_FILE 585 $STRIP $OTHER_STRIPPED_FILE 586 THIS_FILE="$THIS_STRIPPED_FILE" 587 OTHER_FILE="$OTHER_STRIPPED_FILE" 588 fi 589 590 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 591 unset _NT_SYMBOL_PATH 592 # On windows we need to unzip the debug symbols, if present 593 OTHER_FILE_BASE=${OTHER_FILE/.dll/} 594 OTHER_FILE_BASE=${OTHER_FILE_BASE/.exe/} 595 OTHER_FILE_BASE=${OTHER_FILE_BASE/.cpl/} 596 DIZ_NAME=$(basename $OTHER_FILE_BASE).diz 597 # Some .exe files have the same name as a .dll file. Make sure the exe 598 # files get the right debug symbols. 599 if [ "$NAME" = "java.exe" ] \ 600 && [ -f "$OTHER/support/native/java.base/java_objs/java.diz" ]; then 601 OTHER_DIZ_FILE="$OTHER/support/native/java.base/java_objs/java.diz" 602 elif [ "$NAME" = "jimage.exe" ] \ 603 && [ -f "$OTHER/support/native/jdk.dev/jimage_objs/jimage.diz" ]; then 604 OTHER_DIZ_FILE="$OTHER/support/native/jdk.dev/jimage_objs/jimage.diz" 605 elif [ "$NAME" = "javacpl.exe" ] \ 606 && [ -f "$OTHER/support/native/jdk.plugin/javacpl/javacpl.diz" ]; then 607 OTHER_DIZ_FILE="$OTHER/support/native/jdk.plugin/javacpl/javacpl.diz" 608 elif [ -f "${OTHER_FILE_BASE}.diz" ]; then 609 OTHER_DIZ_FILE=${OTHER_FILE_BASE}.diz 610 else 611 # Some files, jli.dll, appears twice in the image but only one of 612 # thme has a diz file next to it. 613 OTHER_DIZ_FILE="$($FIND $OTHER_DIR -name $DIZ_NAME | $SED 1q)" 614 if [ ! -f "$OTHER_DIZ_FILE" ]; then 615 # As a last resort, look for diz file in the whole build output 616 # dir. 617 OTHER_DIZ_FILE="$($FIND $OTHER -name $DIZ_NAME | $SED 1q)" 618 fi 619 fi 620 if [ -n "$OTHER_DIZ_FILE" ]; then 621 $MKDIR -p $FILE_WORK_DIR/other 622 (cd $FILE_WORK_DIR/other ; $UNARCHIVE -o $OTHER_DIZ_FILE) 623 export _NT_SYMBOL_PATH="$FILE_WORK_DIR/other" 624 fi 625 626 THIS_FILE_BASE=${THIS_FILE/.dll/} 627 THIS_FILE_BASE=${THIS_FILE_BASE/.exe/} 628 THIS_FILE_BASE=${THIS_FILE_BASE/.cpl/} 629 # Some .exe files have the same name as a .dll file. Make sure the exe 630 # files get the right debug symbols. 631 if [ "$NAME" = "java.exe" ] \ 632 && [ -f "$THIS/support/native/java.base/java_objs/java.diz" ]; then 633 THIS_DIZ_FILE="$THIS/support/native/java.base/java_objs/java.diz" 634 elif [ "$NAME" = "jimage.exe" ] \ 635 && [ -f "$THIS/support/native/jdk.dev/jimage_objs/jimage.diz" ]; then 636 THIS_DIZ_FILE="$THIS/support/native/jdk.dev/jimage_objs/jimage.diz" 637 elif [ "$NAME" = "javacpl.exe" ] \ 638 && [ -f "$THIS/support/native/jdk.plugin/javacpl/javacpl.diz" ]; then 639 THIS_DIZ_FILE="$THIS/support/native/jdk.plugin/javacpl/javacpl.diz" 640 elif [ -f "${THIS_FILE_BASE}.diz" ]; then 641 THIS_DIZ_FILE=${THIS_FILE/.dll/}.diz 642 else 643 THIS_DIZ_FILE="$($FIND $THIS_DIR -name $DIZ_NAME | $SED 1q)" 644 if [ ! -f "$THIS_DIZ_FILE" ]; then 645 # As a last resort, look for diz file in the whole build output 646 # dir. 647 THIS_DIZ_FILE="$($FIND $THIS -name $DIZ_NAME | $SED 1q)" 648 fi 649 fi 650 if [ -n "$THIS_DIZ_FILE" ]; then 651 $MKDIR -p $FILE_WORK_DIR/this 652 (cd $FILE_WORK_DIR/this ; $UNARCHIVE -o $THIS_DIZ_FILE) 653 export _NT_SYMBOL_PATH="$_NT_SYMBOL_PATH;$FILE_WORK_DIR/this" 654 fi 655 fi 656 657 if [ -z "$SKIP_BIN_DIFF" ]; then 658 if cmp $OTHER_FILE $THIS_FILE > /dev/null; then 659 # The files were bytewise identical. 660 if [ -n "$VERBOSE" ]; then 847 FULLDUMP_MSG="($FULLDUMP_MSG)" 848 DIFF_FULLDUMP= 849 fi 850 else 851 FULLDUMP_MSG=" " 852 DIFF_FULLDUMP= 853 if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then 854 FULLDUMP_MSG=" ! " 855 fi 856 fi 857 fi 858 859 # Compare disassemble output 860 if [ -n "$DIS_CMD" ] && [ -z "$SKIP_DIS_DIFF" ]; then 861 # By default we filter out differences that include references to symbols. 862 # To get a raw diff with the complete disassembly, set 863 # DIS_DIFF_FILTER="$CAT" 864 if [ -z "$DIS_DIFF_FILTER" ]; then 865 DIS_DIFF_FILTER="$GREP -v ' # .* <.*>$' | $SED -r -e 's/(\b|x)([0-9a-fA-F]+)(\b|:|>)/X/g'" 866 fi 867 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 868 DIS_GREP_ARG=-a 869 else 870 DIS_GREP_ARG= 871 fi 872 $DIS_CMD $OTHER_FILE | $GREP $DIS_GREP_ARG -v $NAME \ 873 | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1 874 $DIS_CMD $THIS_FILE | $GREP $DIS_GREP_ARG -v $NAME \ 875 | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1 876 877 LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff 878 879 if [ -s $WORK_FILE_BASE.dis.diff ]; then 880 DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}') 881 DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE) 882 if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then 883 DIFF_DIS=true 884 if [[ "$KNOWN_DIS_DIFF" != *"$BIN_FILE"* ]]; then 885 DIS_MSG="*$DIS_MSG*" 886 REGRESSIONS=true 887 else 888 DIS_MSG=" $DIS_MSG " 889 fi 890 else 891 DIS_MSG="($DIS_MSG)" 892 DIFF_DIS= 893 fi 894 else 895 DIS_MSG=" " 972 973 return $return_value 974 } 975 976 ################################################################################ 977 # Compare all executables 978 979 compare_all_execs() { 980 THIS_DIR=$1 981 OTHER_DIR=$2 982 WORK_DIR=$3 983 984 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 985 EXECS=$(cd $THIS_DIR && $FIND . -type f -name '*.exe' | $SORT | $FILTER) 986 else 987 EXECS=$(cd $THIS_DIR && $FIND . -name db -prune -o -type f -perm -100 \! \ 988 \( -name '*.so' -o -name '*.dylib' -o -name '*.dll' -o -name '*.cgi' \ 989 -o -name '*.jar' -o -name '*.diz' -o -name 'jcontrol' -o -name '*.properties' \ 990 -o -name '*.data' -o -name '*.bfc' -o -name '*.src' -o -name '*.txt' \ 991 -o -name '*.cfg' -o -name 'meta-index' -o -name '*.properties.ja' \ 992 -o -name '*.xml' -o -name '*.html' -o -name '*.png' -o -name 'README' \ 993 -o -name '*.zip' -o -name '*.jimage' -o -name '*.java' -o -name '*.mf' \ 994 -o -name '*.jpg' -o -name '*.wsdl' -o -name '*.js' -o -name '*.sh' \ 995 -o -name '*.bat' -o -name '*LICENSE' -o -name '*.d' -o -name '*store' \ 996 -o -name 'blacklist' -o -name '*certs' -o -name '*.ttf' \ 997 -o -name '*.jfc' -o -name '*.dat' -o -name 'release' -o -name '*.dir'\ 998 -o -name '*.sym' -o -name '*.idl' -o -name '*.h' -o -name '*.access' \ 999 -o -name '*.template' -o -name '*.policy' -o -name '*.security' \ 1000 -o -name 'COPYRIGHT' -o -name '*.1' \ 1001 -o -name 'classlist' \) | $SORT | $FILTER) 1002 fi 1003 1004 if [ -n "$EXECS" ]; then 1005 echo Executables... 1006 print_binary_diff_header 1007 for e in $EXECS; do 1008 if [ -f "$OTHER_DIR/$e" ]; then 1009 compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $e 1010 if [ "$?" != "0" ]; then 1011 return_value=1 1012 fi 1013 fi 1014 done 1015 fi 1016 1017 return $return_value 1018 } 1019 1020 ################################################################################ 1285 echo "Also comparing deploy javadoc bundles" 1286 fi 1287 1288 if [ -d "$THIS/images/JavaAppletPlugin.plugin" ] \ 1289 && [ -d "$OTHER/images/JavaAppletPlugin.plugin" -o -d "$OTHER/deploy/images/JavaAppletPlugin.plugin" ]; then 1290 if [ -d "$THIS/images/JavaAppletPlugin.plugin" ]; then 1291 THIS_DEPLOY_APPLET_PLUGIN_DIR="$THIS/images/JavaAppletPlugin.plugin" 1292 else 1293 THIS_DEPLOY_APPLET_PLUGIN_DIR="$THIS/deploy/images/JavaAppletPlugin.plugin" 1294 fi 1295 if [ -d "$OTHER/images/JavaAppletPlugin.plugin" ]; then 1296 OTHER_DEPLOY_APPLET_PLUGIN_DIR="$OTHER/images/JavaAppletPlugin.plugin" 1297 else 1298 OTHER_DEPLOY_APPLET_PLUGIN_DIR="$OTHER/deploy/images/JavaAppletPlugin.plugin" 1299 fi 1300 echo "Also comparing deploy applet image" 1301 echo " $THIS_DEPLOY_APPLET_PLUGIN_DIR" 1302 echo " $OTHER_DEPLOY_APPLET_PLUGIN_DIR" 1303 fi 1304 1305 if [ -d "$THIS/install/sparkle/Sparkle.framework" ] \ 1306 && [ -d "$OTHER/install/sparkle/Sparkle.framework" ]; then 1307 THIS_SPARKLE_DIR="$THIS/install/sparkle/Sparkle.framework" 1308 OTHER_SPARKLE_DIR="$OTHER/install/sparkle/Sparkle.framework" 1309 echo "Also comparing install sparkle framework" 1310 echo " $THIS_SPARKLE_DIR" 1311 echo " $OTHER_SPARKLE_DIR" 1312 fi 1313 1314 if [ -d "$OTHER/images" ]; then 1315 OTHER_SEC_DIR="$OTHER/images" 1316 else 1317 OTHER_SEC_DIR="$OTHER/tmp" 1318 fi 1319 OTHER_SEC_BIN="$OTHER_SEC_DIR/sec-bin.zip" 1320 THIS_SEC_DIR="$THIS/images" 1321 THIS_SEC_BIN="$THIS_SEC_DIR/sec-bin.zip" 1322 if [ "$OPENJDK_TARGET_OS" = "windows" ]; then 1323 if [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then 1324 JGSS_WINDOWS_BIN="jgss-windows-x64-bin.zip" 1325 else 1326 JGSS_WINDOWS_BIN="jgss-windows-i586-bin.zip" 1327 fi 1328 OTHER_SEC_WINDOWS_BIN="$OTHER_SEC_DIR/sec-windows-bin.zip" 1329 OTHER_JGSS_WINDOWS_BIN="$OTHER_SEC_DIR/$JGSS_WINDOWS_BIN" 1330 THIS_SEC_WINDOWS_BIN="$THIS_SEC_DIR/sec-windows-bin.zip" 1331 THIS_JGSS_WINDOWS_BIN="$THIS_SEC_DIR/$JGSS_WINDOWS_BIN" 1332 fi 1333 1334 if [ -d "$THIS/images/docs" ] && [ -d "$OTHER/images/docs" ]; then 1335 THIS_DOCS="$THIS/images/docs" 1336 OTHER_DOCS="$OTHER/images/docs" 1337 echo "Also comparing docs" 1338 else 1339 echo "WARNING! Docs haven't been built and won't be compared." 1340 fi 1341 fi 1342 1343 ################################################################################ 1344 # Do the work 1345 1346 if [ "$CMP_NAMES" = "true" ]; then 1347 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1348 echo -n "JDK " 1349 compare_dirs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1350 echo -n "JRE " 1351 compare_dirs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1352 1353 echo -n "JDK " 1354 compare_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1355 echo -n "JRE " 1356 compare_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1365 compare_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle 1366 echo -n "JRE Bundle " 1367 compare_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle 1368 fi 1369 if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then 1370 echo -n "Docs " 1371 compare_dirs $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs 1372 echo -n "Docs " 1373 compare_files $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs 1374 fi 1375 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1376 compare_dirs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1377 compare_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1378 fi 1379 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1380 echo -n "JavaAppletPlugin " 1381 compare_dirs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1382 echo -n "JavaAppletPlugin " 1383 compare_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1384 fi 1385 if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then 1386 echo -n "Sparkle.framework " 1387 compare_dirs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1388 echo -n "Sparkle.framework " 1389 compare_files $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1390 fi 1391 fi 1392 1393 if [ "$CMP_PERMS" = "true" ]; then 1394 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1395 echo -n "JDK " 1396 compare_permissions $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1397 echo -n "JRE " 1398 compare_permissions $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1399 fi 1400 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1401 compare_permissions $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1402 fi 1403 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1404 echo -n "JavaAppletPlugin " 1405 compare_permissions $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1406 fi 1407 if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then 1408 echo -n "Sparkle.framework " 1409 compare_permissions $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1410 fi 1411 fi 1412 1413 if [ "$CMP_TYPES" = "true" ]; then 1414 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1415 echo -n "JDK " 1416 compare_file_types $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1417 echo -n "JRE " 1418 compare_file_types $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1419 fi 1420 if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then 1421 echo -n "JDK Bundle " 1422 compare_file_types $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle 1423 echo -n "JRE Bundle " 1424 compare_file_types $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle 1425 fi 1426 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1427 compare_file_types $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1428 fi 1429 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1430 echo -n "JavaAppletPlugin " 1431 compare_file_types $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1432 fi 1433 if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then 1434 echo -n "Sparkle.framework " 1435 compare_file_types $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1436 fi 1437 fi 1438 1439 if [ "$CMP_GENERAL" = "true" ]; then 1440 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1441 echo -n "JDK " 1442 compare_general_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1443 echo -n "JRE " 1444 compare_general_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1445 fi 1446 if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then 1447 echo -n "JDK Bundle " 1448 compare_general_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle 1449 echo -n "JRE Bundle " 1450 compare_general_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle 1451 fi 1452 if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then 1453 echo -n "Docs " 1454 compare_general_files $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs 1455 fi 1456 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1457 compare_general_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1458 fi 1459 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1460 echo -n "JavaAppletPlugin " 1461 compare_general_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1462 fi 1463 if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then 1464 echo -n "Sparkle.framework " 1465 compare_general_files $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1466 fi 1467 fi 1468 1469 if [ "$CMP_ZIPS" = "true" ]; then 1470 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1471 compare_all_zip_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1472 fi 1473 if [ -n "$THIS_SEC_BIN" ] && [ -n "$OTHER_SEC_BIN" ]; then 1474 if [ -n "$(echo $THIS_SEC_BIN | $FILTER)" ]; then 1475 echo "sec-bin.zip..." 1476 compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin sec-bin.zip 1477 fi 1478 fi 1479 if [ -n "$THIS_SEC_WINDOWS_BIN" ] && [ -n "$OTHER_SEC_WINDOWS_BIN" ]; then 1480 if [ -n "$(echo $THIS_SEC_WINDOWS_BIN | $FILTER)" ]; then 1481 echo "sec-windows-bin.zip..." 1482 compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin sec-windows-bin.zip 1483 fi 1484 fi 1485 if [ -n "$THIS_JGSS_WINDOWS_BIN" ] && [ -n "$OTHER_JGSS_WINDOWS_BIN" ]; then 1486 if [ -n "$(echo $THIS_JGSS_WINDOWS_BIN | $FILTER)" ]; then 1510 compare_all_jar_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1511 fi 1512 fi 1513 1514 if [ "$CMP_LIBS" = "true" ]; then 1515 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1516 echo -n "JDK " 1517 compare_all_libs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1518 if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then 1519 echo -n "JRE " 1520 compare_all_libs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1521 fi 1522 fi 1523 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1524 compare_all_libs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1525 fi 1526 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1527 echo -n "JavaAppletPlugin " 1528 compare_all_libs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1529 fi 1530 if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then 1531 echo -n "Sparkle.framework " 1532 compare_all_libs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1533 fi 1534 fi 1535 1536 if [ "$CMP_EXECS" = "true" ]; then 1537 if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then 1538 compare_all_execs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk 1539 if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then 1540 echo -n "JRE " 1541 compare_all_execs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre 1542 fi 1543 fi 1544 if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then 1545 compare_all_execs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir 1546 fi 1547 if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then 1548 echo -n "JavaAppletPlugin " 1549 compare_all_execs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin 1550 fi 1551 if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then 1552 echo -n "Sparkle.framework " 1553 compare_all_execs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle 1554 fi 1555 fi 1556 1557 echo 1558 1559 if [ -n "$REGRESSIONS" ]; then 1560 echo "REGRESSIONS FOUND!" 1561 echo 1562 exit 1 1563 else 1564 echo "No regressions found" 1565 echo 1566 exit 0 1567 fi |