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 |