< prev index next >

common/bin/compare.sh

Print this page




  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
< prev index next >