make/scripts/compare.sh
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 55018 ecb7b9a98f0e
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
     1 #!/bin/bash
     1 #!/bin/bash
     2 #
     2 #
     3 # Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
     3 # Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
     4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     5 #
     5 #
     6 # This code is free software; you can redistribute it and/or modify it
     6 # This code is free software; you can redistribute it and/or modify it
     7 # under the terms of the GNU General Public License version 2 only, as
     7 # under the terms of the GNU General Public License version 2 only, as
     8 # published by the Free Software Foundation.
     8 # published by the Free Software Foundation.
    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
   359                 && [ "`echo $TF | $GREP -c 'Zip archive data'`" -gt 0 ]
   362                 && [ "`echo $TF | $GREP -c 'Zip archive data'`" -gt 0 ]
   360             then
   363             then
   361                 # the way we produce zip-files make it so that directories are stored in
   364                 # the way we produce zip-files make it so that directories are stored in
   362                 # old file but not in new (only files with full-path) this makes file
   365                 # old file but not in new (only files with full-path) this makes file
   363                 # report them as different
   366                 # report them as different
       
   367                 continue
       
   368             elif [ "`echo $OF | $GREP -c 'MSVC program database ver 7.00'`" -gt 0 ] \
       
   369                      && [ "`echo $TF | $GREP -c 'MSVC program database ver 7.00'`" -gt 0 ]
       
   370             then
       
   371                 # For Windows pdb files the file command reports some kind of size data
       
   372                 # which may sometimes come out randomly different.
   364                 continue
   373                 continue
   365             else
   374             else
   366                 if [ -z "$found" ]; then echo ; found="yes"; fi
   375                 if [ -z "$found" ]; then echo ; found="yes"; fi
   367                 $PRINTF "\tother: ${OF}\n\tthis : ${TF}\n"
   376                 $PRINTF "\tother: ${OF}\n\tthis : ${TF}\n"
   368             fi
   377             fi
   546     done
   555     done
   547 
   556 
   548     CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
   557     CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
   549     # On solaris, there is no -q option.
   558     # On solaris, there is no -q option.
   550     if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
   559     if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
   551         LC_ALL=C $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
   560         $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
   552             | $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
   561             | $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
   553             > $CONTENTS_DIFF_FILE
   562             > $CONTENTS_DIFF_FILE
   554     else
   563     else
   555         LC_ALL=C $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
   564         $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
   556     fi
   565     fi
   557 
   566 
   558     ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
   567     ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
   559     ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
   568     ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
   560 
   569 
   597             $CAT $WORK_DIR/$ZIP_FILE.difflist
   606             $CAT $WORK_DIR/$ZIP_FILE.difflist
   598 
   607 
   599             if [ -n "$SHOW_DIFFS" ]; then
   608             if [ -n "$SHOW_DIFFS" ]; then
   600                 for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
   609                 for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
   601                     if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
   610                     if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
   602                         LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
   611                         $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
   603                     elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
   612                     elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
   604                         LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
   613                         $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
   605                     else
   614                     else
   606                         LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
   615                         $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
   607                     fi
   616                     fi
   608                 done
   617                 done
   609             fi
   618             fi
   610         fi
   619         fi
   611     fi
   620     fi
   634     mkdir -p $(dirname $THIS_JMOD_LIST) $(dirname $OTHER_JMOD_LIST)
   643     mkdir -p $(dirname $THIS_JMOD_LIST) $(dirname $OTHER_JMOD_LIST)
   635 
   644 
   636     $JMOD list $THIS_JMOD | sort > $THIS_JMOD_LIST
   645     $JMOD list $THIS_JMOD | sort > $THIS_JMOD_LIST
   637     $JMOD list $OTHER_JMOD | sort > $OTHER_JMOD_LIST
   646     $JMOD list $OTHER_JMOD | sort > $OTHER_JMOD_LIST
   638     JMOD_LIST_DIFF_FILE=$WORK_DIR/$JMOD_FILE.list.diff
   647     JMOD_LIST_DIFF_FILE=$WORK_DIR/$JMOD_FILE.list.diff
   639     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
   640 
   649 
   641     ONLY_THIS=$($GREP "^<" $JMOD_LIST_DIFF_FILE)
   650     ONLY_THIS=$($GREP "^<" $JMOD_LIST_DIFF_FILE)
   642     ONLY_OTHER=$($GREP "^>" $JMOD_LIST_DIFF_FILE)
   651     ONLY_OTHER=$($GREP "^>" $JMOD_LIST_DIFF_FILE)
   643 
   652 
   644     if [ -n "$ONLY_OTHER" ]; then
   653     if [ -n "$ONLY_OTHER" ]; then
   916             | eval "$this_SYMBOLS_DIFF_FILTER" \
   925             | eval "$this_SYMBOLS_DIFF_FILTER" \
   917             | $SYM_SORT_CMD \
   926             | $SYM_SORT_CMD \
   918             > $WORK_FILE_BASE.symbols.this
   927             > $WORK_FILE_BASE.symbols.this
   919     fi
   928     fi
   920 
   929 
   921     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
   922     if [ -s $WORK_FILE_BASE.symbols.diff ]; then
   931     if [ -s $WORK_FILE_BASE.symbols.diff ]; then
   923         SYM_MSG=" diff  "
   932         SYM_MSG=" diff  "
   924         if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   933         if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   925             DIFF_SYM=true
   934             DIFF_SYM=true
   926             if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   935             if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
   956                     | $LDD_FILTER | $AWK '{ print $1;}' | $SORT \
   965                     | $LDD_FILTER | $AWK '{ print $1;}' | $SORT \
   957                     | $TEE $WORK_FILE_BASE.deps.this \
   966                     | $TEE $WORK_FILE_BASE.deps.this \
   958                     | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
   967                     | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
   959         (cd $FILE_WORK_DIR && $RM -f $NAME)
   968         (cd $FILE_WORK_DIR && $RM -f $NAME)
   960 
   969 
   961         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 \
   962               > $WORK_FILE_BASE.deps.diff
   971               > $WORK_FILE_BASE.deps.diff
   963         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 \
   964               > $WORK_FILE_BASE.deps.diff.uniq
   973               > $WORK_FILE_BASE.deps.diff.uniq
   965 
   974 
   966         if [ -s $WORK_FILE_BASE.deps.diff ]; then
   975         if [ -s $WORK_FILE_BASE.deps.diff ]; then
   967             if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
   976             if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
   968                 DEP_MSG=" diff  "
   977                 DEP_MSG=" diff  "
  1008             > $WORK_FILE_BASE.fulldump.other 2>&1 &
  1017             > $WORK_FILE_BASE.fulldump.other 2>&1 &
  1009         $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" \
  1010             > $WORK_FILE_BASE.fulldump.this  2>&1 &
  1019             > $WORK_FILE_BASE.fulldump.this  2>&1 &
  1011         wait
  1020         wait
  1012 
  1021 
  1013         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 \
  1014             > $WORK_FILE_BASE.fulldump.diff
  1023             > $WORK_FILE_BASE.fulldump.diff
  1015 
  1024 
  1016         if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
  1025         if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
  1017             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}')
  1018             FULLDUMP_MSG=$($PRINTF "%8d" $FULLDUMP_DIFF_SIZE)
  1027             FULLDUMP_MSG=$($PRINTF "%8d" $FULLDUMP_DIFF_SIZE)
  1055             | 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 &
  1056         $DIS_CMD $THIS_FILE  | $GREP $DIS_GREP_ARG -v $NAME \
  1065         $DIS_CMD $THIS_FILE  | $GREP $DIS_GREP_ARG -v $NAME \
  1057             | 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 &
  1058         wait
  1067         wait
  1059 
  1068 
  1060         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
  1061 
  1070 
  1062         if [ -s $WORK_FILE_BASE.dis.diff ]; then
  1071         if [ -s $WORK_FILE_BASE.dis.diff ]; then
  1063             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}')
  1064             DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
  1073             DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
  1065             if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then
  1074             if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then