make/scripts/compare.sh
changeset 58549 9d9317fad3fe
parent 58035 378007c18687
child 58679 9c3209ff7550
equal deleted inserted replaced
58548:430b9a492a05 58549:9d9317fad3fe
    31 # Check that we are run via the wrapper generated by configure
    31 # Check that we are run via the wrapper generated by configure
    32 if [ -z "$TOPDIR" ]; then
    32 if [ -z "$TOPDIR" ]; then
    33     echo "Error: You must run this script using build/[conf]/compare.sh"
    33     echo "Error: You must run this script using build/[conf]/compare.sh"
    34     exit 1
    34     exit 1
    35 fi
    35 fi
       
    36 
       
    37 # Make sure all shell commands are executed with the C locale
       
    38 export LC_ALL=C
    36 
    39 
    37 if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
    40 if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
    38     FULLDUMP_CMD="$OTOOL -v -V -h -X -d"
    41     FULLDUMP_CMD="$OTOOL -v -V -h -X -d"
    39     LDD_CMD="$OTOOL -L"
    42     LDD_CMD="$OTOOL -L"
    40     DIS_CMD="$OTOOL -v -V -t"
    43     DIS_CMD="$OTOOL -v -V -t"
   108         -e 's/([a-z]{2}[a-z ]{2})        [0-9A-F]{4,16}$/\1        <HEXSTR>/' \
   111         -e 's/([a-z]{2}[a-z ]{2})        [0-9A-F]{4,16}$/\1        <HEXSTR>/' \
   109         -e 's/\[\?\?_C@_.*/[<SYM>]/' \
   112         -e 's/\[\?\?_C@_.*/[<SYM>]/' \
   110         "
   113         "
   111   fi
   114   fi
   112 elif [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
   115 elif [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
   113   DIS_DIFF_FILTER="LANG=C $SED \
   116   DIS_DIFF_FILTER="$SED \
   114       -e 's/0x[0-9a-f]\{3,16\}/<HEXSTR>/g' -e 's/^[0-9a-f]\{12,20\}/<ADDR>/' \
   117       -e 's/0x[0-9a-f]\{3,16\}/<HEXSTR>/g' -e 's/^[0-9a-f]\{12,20\}/<ADDR>/' \
   115       -e 's/-20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]-[0-2][0-9]\{5\}/<DATE>/g' \
   118       -e 's/-20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]-[0-2][0-9]\{5\}/<DATE>/g' \
   116       -e 's/), built on .*/), <DATE>/' \
   119       -e 's/), built on .*/), <DATE>/' \
   117       "
   120       "
   118 fi
   121 fi
   132 
   135 
   133     TMP=1
   136     TMP=1
   134 
   137 
   135     if [[ "$THIS_FILE" = *"META-INF/MANIFEST.MF" ]]; then
   138     if [[ "$THIS_FILE" = *"META-INF/MANIFEST.MF" ]]; then
   136         # Filter out date string, ant version and java version differences.
   139         # Filter out date string, ant version and java version differences.
   137         TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
   140         TMP=$($DIFF $OTHER_FILE $THIS_FILE | \
   138             $GREP '^[<>]' | \
   141             $GREP '^[<>]' | \
   139             $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \
   142             $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \
   140                  -e '/[<>] Created-By: .* (Oracle [Corpatin)]*/d' \
   143                  -e '/[<>] Created-By: .* (Oracle [Corpatin)]*/d' \
   141                  -e '/[<>]  [Corpatin]*)/d' \
   144                  -e '/[<>]  [Corpatin]*)/d' \
   142                  -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d')
   145                  -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d')
   143     fi
   146     fi
   144     if test "x$SUFFIX" = "xjava"; then
   147     if test "x$SUFFIX" = "xjava"; then
   145         TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
   148         TMP=$($DIFF $OTHER_FILE $THIS_FILE | \
   146             $GREP '^[<>]' | \
   149             $GREP '^[<>]' | \
   147             $SED -e '/[<>] \* from.*\.idl/d' \
   150             $SED -e '/[<>] \* from.*\.idl/d' \
   148                  -e '/[<>] .*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
   151                  -e '/[<>] .*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
   149                  -e '/[<>] .*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d' \
   152                  -e '/[<>] .*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d' \
   150                  -e '/[<>] \*.*[0-9]\{4\} \(at \)*[0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \
   153                  -e '/[<>] \*.*[0-9]\{4\} \(at \)*[0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \
   195                      -e '/[<>].*lambda\$[a-zA-Z0-9]*\$[0-9]*/d')
   198                      -e '/[<>].*lambda\$[a-zA-Z0-9]*\$[0-9]*/d')
   196         fi
   199         fi
   197     fi
   200     fi
   198     if test "x$SUFFIX" = "xproperties"; then
   201     if test "x$SUFFIX" = "xproperties"; then
   199         # Filter out date string differences.
   202         # Filter out date string differences.
   200         TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
   203         TMP=$($DIFF $OTHER_FILE $THIS_FILE | \
   201             $GREP '^[<>]' | \
   204             $GREP '^[<>]' | \
   202             $SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d')
   205             $SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d')
   203     fi
   206     fi
   204     if test "x$SUFFIX" = "xhtml"; then
   207     if test "x$SUFFIX" = "xhtml"; then
   205         # Some javadoc versions do not put quotes around font size
   208         # Some javadoc versions do not put quotes around font size
   206         HTML_FILTER="$SED \
   209         HTML_FILTER="$SED \
   207             -e 's/<font size=-1>/<font size=\"-1\">/g'"
   210             -e 's/<font size=-1>/<font size=\"-1\">/g'"
   208         $CAT $THIS_FILE | eval "$HTML_FILTER" > $THIS_FILE.filtered
   211         $CAT $THIS_FILE | eval "$HTML_FILTER" > $THIS_FILE.filtered
   209         $CAT $OTHER_FILE | eval "$HTML_FILTER" > $OTHER_FILE.filtered
   212         $CAT $OTHER_FILE | eval "$HTML_FILTER" > $OTHER_FILE.filtered
   210         TMP=$(LC_ALL=C $DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \
   213         TMP=$($DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \
   211             $GREP '^[<>]' | \
   214             $GREP '^[<>]' | \
   212             $SED -e '/[<>] <!-- Generated by javadoc .* on .* -->/d' \
   215             $SED -e '/[<>] <!-- Generated by javadoc .* on .* -->/d' \
   213                  -e '/[<>] <meta name="date" content=".*">/d' )
   216                  -e '/[<>] <meta name="date" content=".*">/d' )
   214     fi
   217     fi
   215     if test "$NAME" = "BenchmarkList"; then
   218     if test "$NAME" = "BenchmarkList"; then
   552     done
   555     done
   553 
   556 
   554     CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
   557     CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
   555     # On solaris, there is no -q option.
   558     # On solaris, there is no -q option.
   556     if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
   559     if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
   557         LC_ALL=C $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
   560         $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
   558             | $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
   561             | $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
   559             > $CONTENTS_DIFF_FILE
   562             > $CONTENTS_DIFF_FILE
   560     else
   563     else
   561         LC_ALL=C $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
   564         $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
   562     fi
   565     fi
   563 
   566 
   564     ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
   567     ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
   565     ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
   568     ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
   566 
   569 
   603             $CAT $WORK_DIR/$ZIP_FILE.difflist
   606             $CAT $WORK_DIR/$ZIP_FILE.difflist
   604 
   607 
   605             if [ -n "$SHOW_DIFFS" ]; then
   608             if [ -n "$SHOW_DIFFS" ]; then
   606                 for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
   609                 for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
   607                     if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
   610                     if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
   608                         LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
   611                         $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
   609                     elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
   612                     elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
   610                         LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
   613                         $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
   611                     else
   614                     else
   612                         LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
   615                         $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
   613                     fi
   616                     fi
   614                 done
   617                 done
   615             fi
   618             fi
   616         fi
   619         fi
   617     fi
   620     fi
   640     mkdir -p $(dirname $THIS_JMOD_LIST) $(dirname $OTHER_JMOD_LIST)
   643     mkdir -p $(dirname $THIS_JMOD_LIST) $(dirname $OTHER_JMOD_LIST)
   641 
   644 
   642     $JMOD list $THIS_JMOD | sort > $THIS_JMOD_LIST
   645     $JMOD list $THIS_JMOD | sort > $THIS_JMOD_LIST
   643     $JMOD list $OTHER_JMOD | sort > $OTHER_JMOD_LIST
   646     $JMOD list $OTHER_JMOD | sort > $OTHER_JMOD_LIST
   644     JMOD_LIST_DIFF_FILE=$WORK_DIR/$JMOD_FILE.list.diff
   647     JMOD_LIST_DIFF_FILE=$WORK_DIR/$JMOD_FILE.list.diff
   645     LC_ALL=C $DIFF $THIS_JMOD_LIST $OTHER_JMOD_LIST > $JMOD_LIST_DIFF_FILE
   648     $DIFF $THIS_JMOD_LIST $OTHER_JMOD_LIST > $JMOD_LIST_DIFF_FILE
   646 
   649 
   647     ONLY_THIS=$($GREP "^<" $JMOD_LIST_DIFF_FILE)
   650     ONLY_THIS=$($GREP "^<" $JMOD_LIST_DIFF_FILE)
   648     ONLY_OTHER=$($GREP "^>" $JMOD_LIST_DIFF_FILE)
   651     ONLY_OTHER=$($GREP "^>" $JMOD_LIST_DIFF_FILE)
   649 
   652 
   650     if [ -n "$ONLY_OTHER" ]; then
   653     if [ -n "$ONLY_OTHER" ]; then
   922             | eval "$this_SYMBOLS_DIFF_FILTER" \
   925             | eval "$this_SYMBOLS_DIFF_FILTER" \
   923             | $SYM_SORT_CMD \
   926             | $SYM_SORT_CMD \
   924             > $WORK_FILE_BASE.symbols.this
   927             > $WORK_FILE_BASE.symbols.this
   925     fi
   928     fi
   926 
   929 
   927     LC_ALL=C $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
   930     $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
   928     if [ -s $WORK_FILE_BASE.symbols.diff ]; then
   931     if [ -s $WORK_FILE_BASE.symbols.diff ]; then
   929         SYM_MSG=" diff  "
   932         SYM_MSG=" diff  "
   930         if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   933         if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   931             DIFF_SYM=true
   934             DIFF_SYM=true
   932             if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   935             if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   962                     | $LDD_FILTER | $AWK '{ print $1;}' | $SORT \
   965                     | $LDD_FILTER | $AWK '{ print $1;}' | $SORT \
   963                     | $TEE $WORK_FILE_BASE.deps.this \
   966                     | $TEE $WORK_FILE_BASE.deps.this \
   964                     | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
   967                     | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
   965         (cd $FILE_WORK_DIR && $RM -f $NAME)
   968         (cd $FILE_WORK_DIR && $RM -f $NAME)
   966 
   969 
   967         LC_ALL=C $DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this \
   970         $DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this \
   968               > $WORK_FILE_BASE.deps.diff
   971               > $WORK_FILE_BASE.deps.diff
   969         LC_ALL=C $DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq \
   972         $DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq \
   970               > $WORK_FILE_BASE.deps.diff.uniq
   973               > $WORK_FILE_BASE.deps.diff.uniq
   971 
   974 
   972         if [ -s $WORK_FILE_BASE.deps.diff ]; then
   975         if [ -s $WORK_FILE_BASE.deps.diff ]; then
   973             if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
   976             if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
   974                 DEP_MSG=" diff  "
   977                 DEP_MSG=" diff  "
  1014             > $WORK_FILE_BASE.fulldump.other 2>&1 &
  1017             > $WORK_FILE_BASE.fulldump.other 2>&1 &
  1015         $FULLDUMP_CMD $THIS_FILE  | eval "$BUILD_ID_FILTER" | eval "$FULLDUMP_DIFF_FILTER" \
  1018         $FULLDUMP_CMD $THIS_FILE  | eval "$BUILD_ID_FILTER" | eval "$FULLDUMP_DIFF_FILTER" \
  1016             > $WORK_FILE_BASE.fulldump.this  2>&1 &
  1019             > $WORK_FILE_BASE.fulldump.this  2>&1 &
  1017         wait
  1020         wait
  1018 
  1021 
  1019         LC_ALL=C $DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this \
  1022         $DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this \
  1020             > $WORK_FILE_BASE.fulldump.diff
  1023             > $WORK_FILE_BASE.fulldump.diff
  1021 
  1024 
  1022         if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
  1025         if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
  1023             FULLDUMP_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.fulldump.diff | awk '{print $5}')
  1026             FULLDUMP_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.fulldump.diff | awk '{print $5}')
  1024             FULLDUMP_MSG=$($PRINTF "%8d" $FULLDUMP_DIFF_SIZE)
  1027             FULLDUMP_MSG=$($PRINTF "%8d" $FULLDUMP_DIFF_SIZE)
  1061             | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1 &
  1064             | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1 &
  1062         $DIS_CMD $THIS_FILE  | $GREP $DIS_GREP_ARG -v $NAME \
  1065         $DIS_CMD $THIS_FILE  | $GREP $DIS_GREP_ARG -v $NAME \
  1063             | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this  2>&1 &
  1066             | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this  2>&1 &
  1064         wait
  1067         wait
  1065 
  1068 
  1066         LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
  1069         $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
  1067 
  1070 
  1068         if [ -s $WORK_FILE_BASE.dis.diff ]; then
  1071         if [ -s $WORK_FILE_BASE.dis.diff ]; then
  1069             DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}')
  1072             DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}')
  1070             DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
  1073             DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
  1071             if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then
  1074             if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then