make/scripts/compare.sh
changeset 53570 ab7fcc43dab4
parent 52030 57862a02bf4b
child 54325 04f1a0f925db
equal deleted inserted replaced
53569:8830bb9587c2 53570:ab7fcc43dab4
   338         -e 's/last modified: .*//' \
   338         -e 's/last modified: .*//' \
   339         "
   339         "
   340 
   340 
   341     echo -n File types...
   341     echo -n File types...
   342     found=""
   342     found=""
   343     for f in `cd $OTHER_DIR && $FIND . ! -type d`
   343     # The file command does not know about jmod files and this sometimes results
       
   344     # in different types being detected more or less randomly.
       
   345     for f in $(cd $OTHER_DIR && $FIND . ! -type d -a ! -name "*.jmod")
   344     do
   346     do
   345         if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
   347         if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
   346         if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
   348         if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
   347         OF=$(cd ${OTHER_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
   349         OF=$(cd ${OTHER_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
   348         TF=$(cd ${THIS_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
   350         TF=$(cd ${THIS_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
   492     THIS_UNZIPDIR=$WORK_DIR/$ZIP_FILE.this
   494     THIS_UNZIPDIR=$WORK_DIR/$ZIP_FILE.this
   493     OTHER_UNZIPDIR=$WORK_DIR/$ZIP_FILE.other
   495     OTHER_UNZIPDIR=$WORK_DIR/$ZIP_FILE.other
   494     $RM -rf $THIS_UNZIPDIR $OTHER_UNZIPDIR
   496     $RM -rf $THIS_UNZIPDIR $OTHER_UNZIPDIR
   495     $MKDIR -p $THIS_UNZIPDIR
   497     $MKDIR -p $THIS_UNZIPDIR
   496     $MKDIR -p $OTHER_UNZIPDIR
   498     $MKDIR -p $OTHER_UNZIPDIR
   497     if [ "$TYPE" = "jar" -o "$TYPE" = "war" -o "$TYPE" = "zip" -o "$TYPE" = "jmod" ]
   499     if [ "$TYPE" = "jar" -o "$TYPE" = "war" -o "$TYPE" = "zip" ]
   498     then
   500     then
   499         (cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
   501         (cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
   500         (cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
   502         (cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
   501     elif [ "$TYPE" = "gz" ]
   503     elif [ "$TYPE" = "gz" ]
   502     then
   504     then
   503         (cd $THIS_UNZIPDIR && $GUNZIP -c $THIS_ZIP | $TAR xf -)
   505         (cd $THIS_UNZIPDIR && $GUNZIP -c $THIS_ZIP | $TAR xf -)
   504         (cd $OTHER_UNZIPDIR && $GUNZIP -c $OTHER_ZIP | $TAR xf -)
   506         (cd $OTHER_UNZIPDIR && $GUNZIP -c $OTHER_ZIP | $TAR xf -)
       
   507     elif [ "$TYPE" = "jmod" ]
       
   508     then
       
   509         (cd $THIS_UNZIPDIR && $JMOD extract $THIS_ZIP)
       
   510         (cd $OTHER_UNZIPDIR && $JMOD extract $OTHER_ZIP)
   505     else
   511     else
   506         (cd $THIS_UNZIPDIR && $JIMAGE extract $THIS_ZIP)
   512         (cd $THIS_UNZIPDIR && $JIMAGE extract $THIS_ZIP)
   507         (cd $OTHER_UNZIPDIR && $JIMAGE extract $OTHER_ZIP)
   513         (cd $OTHER_UNZIPDIR && $JIMAGE extract $OTHER_ZIP)
   508     fi
   514     fi
   509 
   515 
   557         echo "        Only THIS $ZIP_FILE contains:"
   563         echo "        Only THIS $ZIP_FILE contains:"
   558         echo "$ONLY_THIS" | sed "s|Only in $THIS_UNZIPDIR|            |"g | sed 's|: |/|g'
   564         echo "$ONLY_THIS" | sed "s|Only in $THIS_UNZIPDIR|            |"g | sed 's|: |/|g'
   559         return_value=1
   565         return_value=1
   560     fi
   566     fi
   561 
   567 
   562     if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
       
   563         DIFFING_FILES=$($GREP -e 'differ$' -e '^diff ' $CONTENTS_DIFF_FILE \
       
   564             | $SED -e 's/^Files //g' -e 's/diff -r //g' | $CUT -f 1 -d ' ' \
       
   565             | $SED "s|$OTHER_UNZIPDIR/||g")
       
   566     else
       
   567         DIFFING_FILES=$($GREP -e "differ$" $CONTENTS_DIFF_FILE \
       
   568             | $CUT -f 2 -d ' ' | $SED "s|$OTHER_UNZIPDIR/||g")
       
   569     fi
       
   570 
       
   571     if [ "$CMP_ZIPS_CONTENTS" = "true" ]; then
   568     if [ "$CMP_ZIPS_CONTENTS" = "true" ]; then
       
   569         if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
       
   570             DIFFING_FILES=$($GREP -e 'differ$' -e '^diff ' $CONTENTS_DIFF_FILE \
       
   571                 | $SED -e 's/^Files //g' -e 's/diff -r //g' | $CUT -f 1 -d ' ' \
       
   572                 | $SED "s|$OTHER_UNZIPDIR/||g")
       
   573         else
       
   574             DIFFING_FILES=$($GREP -e "differ$" $CONTENTS_DIFF_FILE \
       
   575                 | $CUT -f 2 -d ' ' | $SED "s|$OTHER_UNZIPDIR/||g")
       
   576         fi
       
   577 
   572         $RM -f $WORK_DIR/$ZIP_FILE.diffs
   578         $RM -f $WORK_DIR/$ZIP_FILE.diffs
   573         for file in $DIFFING_FILES; do
   579         for file in $DIFFING_FILES; do
   574             if [[ "$ACCEPTED_JARZIP_CONTENTS $EXCEPTIONS" != *"$file"* ]]; then
   580             if [[ "$ACCEPTED_JARZIP_CONTENTS $EXCEPTIONS" != *"$file"* ]]; then
   575                 diff_text $OTHER_UNZIPDIR/$file $THIS_UNZIPDIR/$file >> $WORK_DIR/$ZIP_FILE.diffs
   581                 diff_text $OTHER_UNZIPDIR/$file $THIS_UNZIPDIR/$file >> $WORK_DIR/$ZIP_FILE.diffs
   576             fi
   582             fi
   598     fi
   604     fi
   599 
   605 
   600     return $return_value
   606     return $return_value
   601 }
   607 }
   602 
   608 
       
   609 ################################################################################
       
   610 # Compare jmod file
       
   611 
       
   612 compare_jmod_file() {
       
   613     THIS_DIR=$1
       
   614     OTHER_DIR=$2
       
   615     WORK_DIR=$3
       
   616     JMOD_FILE=$4
       
   617 
       
   618     THIS_JMOD=$THIS_DIR/$JMOD_FILE
       
   619     OTHER_JMOD=$OTHER_DIR/$JMOD_FILE
       
   620 
       
   621     if $CMP $OTHER_JMOD $THIS_JMOD > /dev/null; then
       
   622         return 0
       
   623     fi
       
   624 
       
   625     THIS_JMOD_LIST=$WORK_DIR/$JMOD_FILE.list.this
       
   626     OTHER_JMOD_LIST=$WORK_DIR/$JMOD_FILE.list.other
       
   627     mkdir -p $(dirname $THIS_JMOD_LIST) $(dirname $OTHER_JMOD_LIST)
       
   628 
       
   629     $JMOD list $THIS_JMOD | sort > $THIS_JMOD_LIST
       
   630     $JMOD list $OTHER_JMOD | sort > $OTHER_JMOD_LIST
       
   631     JMOD_LIST_DIFF_FILE=$WORK_DIR/$JMOD_FILE.list.diff
       
   632     LC_ALL=C $DIFF $THIS_JMOD_LIST $OTHER_JMOD_LIST > $JMOD_LIST_DIFF_FILE
       
   633 
       
   634     ONLY_THIS=$($GREP "^<" $JMOD_LIST_DIFF_FILE)
       
   635     ONLY_OTHER=$($GREP "^>" $JMOD_LIST_DIFF_FILE)
       
   636 
       
   637     if [ -n "$ONLY_OTHER" ]; then
       
   638         echo "        Only OTHER $JMOD_FILE contains:"
       
   639         echo "$ONLY_OTHER" | sed "s|^>|            |"g | sed 's|: |/|g'
       
   640         return_value=1
       
   641     fi
       
   642 
       
   643     if [ -n "$ONLY_THIS" ]; then
       
   644         echo "        Only THIS $JMOD_FILE contains:"
       
   645         echo "$ONLY_THIS" | sed "s|^<|            |"g | sed 's|: |/|g'
       
   646         return_value=1
       
   647     fi
       
   648 
       
   649     return $return_value
       
   650 }
   603 
   651 
   604 ################################################################################
   652 ################################################################################
   605 # Compare all zip files
   653 # Compare all zip files
   606 
   654 
   607 compare_all_zip_files() {
   655 compare_all_zip_files() {
   617 
   665 
   618         return_value=0
   666         return_value=0
   619         for f in $ZIPS; do
   667         for f in $ZIPS; do
   620             if [ -f "$OTHER_DIR/$f" ]; then
   668             if [ -f "$OTHER_DIR/$f" ]; then
   621                 compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
   669                 compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
       
   670                 if [ "$?" != "0" ]; then
       
   671                     return_value=1
       
   672                     REGRESSIONS=true
       
   673                 fi
       
   674             fi
       
   675         done
       
   676     fi
       
   677 
       
   678     return $return_value
       
   679 }
       
   680 
       
   681 ################################################################################
       
   682 # Compare all jmod files
       
   683 
       
   684 compare_all_jmod_files() {
       
   685     THIS_DIR=$1
       
   686     OTHER_DIR=$2
       
   687     WORK_DIR=$3
       
   688 
       
   689     JMODS=$(cd $THIS_DIR && $FIND . -type f -name "*.jmod" | $SORT | $FILTER )
       
   690 
       
   691     if [ -n "$JMODS" ]; then
       
   692         echo Jmod files...
       
   693 
       
   694         return_value=0
       
   695         for f in $JMODS; do
       
   696             if [ -f "$OTHER_DIR/$f" ]; then
       
   697                 compare_jmod_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
   622                 if [ "$?" != "0" ]; then
   698                 if [ "$?" != "0" ]; then
   623                     return_value=1
   699                     return_value=1
   624                     REGRESSIONS=true
   700                     REGRESSIONS=true
   625                 fi
   701                 fi
   626             fi
   702             fi
  1139     echo "-types              Compare the output of the file command on all files"
  1215     echo "-types              Compare the output of the file command on all files"
  1140     echo "-general            Compare the files not convered by the specialized comparisons"
  1216     echo "-general            Compare the files not convered by the specialized comparisons"
  1141     echo "-zips               Compare the contents of all zip files and files in them"
  1217     echo "-zips               Compare the contents of all zip files and files in them"
  1142     echo "-zips-names         Compare the file names inside all zip files"
  1218     echo "-zips-names         Compare the file names inside all zip files"
  1143     echo "-jars               Compare the contents of all jar files"
  1219     echo "-jars               Compare the contents of all jar files"
       
  1220     echo "-jmods              Compare the listings of all jmod files"
  1144     echo "-libs               Compare all native libraries"
  1221     echo "-libs               Compare all native libraries"
  1145     echo "-execs              Compare all executables"
  1222     echo "-execs              Compare all executables"
  1146     echo "-v                  Verbose output, does not hide known differences"
  1223     echo "-v                  Verbose output, does not hide known differences"
  1147     echo "-vv                 More verbose output, shows diff output of all comparisons"
  1224     echo "-vv                 More verbose output, shows diff output of all comparisons"
  1148     echo "-o [OTHER]          Compare with build in other directory. Will default to the old build directory"
  1225     echo "-o [OTHER]          Compare with build in other directory. Will default to the old build directory"
  1167 CMP_TYPES=false
  1244 CMP_TYPES=false
  1168 CMP_GENERAL=false
  1245 CMP_GENERAL=false
  1169 CMP_ZIPS=false
  1246 CMP_ZIPS=false
  1170 CMP_ZIPS_CONTENTS=true
  1247 CMP_ZIPS_CONTENTS=true
  1171 CMP_JARS=false
  1248 CMP_JARS=false
       
  1249 CMP_JMODS=false
  1172 CMP_LIBS=false
  1250 CMP_LIBS=false
  1173 CMP_EXECS=false
  1251 CMP_EXECS=false
  1174 
  1252 
  1175 while [ -n "$1" ]; do
  1253 while [ -n "$1" ]; do
  1176     case "$1" in
  1254     case "$1" in
  1192             fi
  1270             fi
  1193             CMP_TYPES=true
  1271             CMP_TYPES=true
  1194             CMP_GENERAL=true
  1272             CMP_GENERAL=true
  1195             CMP_ZIPS=true
  1273             CMP_ZIPS=true
  1196             CMP_JARS=true
  1274             CMP_JARS=true
       
  1275             CMP_JMODS=true
  1197             CMP_LIBS=true
  1276             CMP_LIBS=true
  1198             CMP_EXECS=true
  1277             CMP_EXECS=true
  1199             ;;
  1278             ;;
  1200         -names)
  1279         -names)
  1201             CMP_NAMES=true
  1280             CMP_NAMES=true
  1217             CMP_ZIPS=true
  1296             CMP_ZIPS=true
  1218             CMP_ZIPS_CONTENTS=false
  1297             CMP_ZIPS_CONTENTS=false
  1219             ;;
  1298             ;;
  1220         -jars)
  1299         -jars)
  1221             CMP_JARS=true
  1300             CMP_JARS=true
       
  1301             ;;
       
  1302         -jmods)
       
  1303             CMP_JMODS=true
  1222             ;;
  1304             ;;
  1223         -libs)
  1305         -libs)
  1224             CMP_LIBS=true
  1306             CMP_LIBS=true
  1225             ;;
  1307             ;;
  1226         -execs)
  1308         -execs)
  1262             CMP_NAMES=false
  1344             CMP_NAMES=false
  1263             CMP_PERMS=false
  1345             CMP_PERMS=false
  1264             CMP_TYPES=false
  1346             CMP_TYPES=false
  1265             CMP_ZIPS=true
  1347             CMP_ZIPS=true
  1266             CMP_JARS=true
  1348             CMP_JARS=true
       
  1349             CMP_JMODS=true
  1267             CMP_LIBS=true
  1350             CMP_LIBS=true
  1268             CMP_EXECS=true
  1351             CMP_EXECS=true
  1269 
  1352 
  1270             if [ -z "$FILTER" ]; then
  1353             if [ -z "$FILTER" ]; then
  1271                 FILTER="$GREP"
  1354                 FILTER="$GREP"
  1315     echo Comparing $THIS_DIR/$THIS_FILE_NAME and $OTHER_DIR/$OTHER_FILE_NAME
  1398     echo Comparing $THIS_DIR/$THIS_FILE_NAME and $OTHER_DIR/$OTHER_FILE_NAME
  1316     compare_bin_file $THIS_DIR $OTHER_DIR $COMPARE_ROOT/2bins $THIS_FILE_NAME $OTHER_FILE_NAME
  1399     compare_bin_file $THIS_DIR $OTHER_DIR $COMPARE_ROOT/2bins $THIS_FILE_NAME $OTHER_FILE_NAME
  1317     exit
  1400     exit
  1318 fi
  1401 fi
  1319 
  1402 
  1320 if [ "$CMP_NAMES" = "false" ] && [ "$CMP_TYPES" = "false" ] && [ "$CMP_PERMS" = "false" ] && [ "$CMP_GENERAL" = "false" ] && [ "$CMP_ZIPS" = "false" ] && [ "$CMP_JARS" = "false" ] && [ "$CMP_LIBS" = "false" ] && [ "$CMP_EXECS" = "false" ]; then
  1403 if [ "$CMP_NAMES" = "false" ] \
       
  1404        && [ "$CMP_TYPES" = "false" ] \
       
  1405        && [ "$CMP_PERMS" = "false" ] \
       
  1406        && [ "$CMP_GENERAL" = "false" ] \
       
  1407        && [ "$CMP_ZIPS" = "false" ] \
       
  1408        && [ "$CMP_JARS" = "false" ] \
       
  1409        && [ "$CMP_JMODS" = "false" ] \
       
  1410        && [ "$CMP_LIBS" = "false" ] \
       
  1411        && [ "$CMP_EXECS" = "false" ]; then
  1321     CMP_NAMES=true
  1412     CMP_NAMES=true
  1322     CMP_PERMS=true
  1413     CMP_PERMS=true
  1323     CMP_TYPES=true
  1414     CMP_TYPES=true
  1324     CMP_GENERAL=true
  1415     CMP_GENERAL=true
  1325     CMP_ZIPS=true
  1416     CMP_ZIPS=true
  1326     CMP_JARS=true
  1417     CMP_JARS=true
       
  1418     CMP_JMODS=true
  1327     CMP_LIBS=true
  1419     CMP_LIBS=true
  1328     CMP_EXECS=true
  1420     CMP_EXECS=true
  1329 fi
  1421 fi
  1330 
  1422 
  1331 if [ -z "$FILTER" ]; then
  1423 if [ -z "$FILTER" ]; then
  1371         OTHER="$(ls -d $OTHER/licensee-src/build/*)"
  1463         OTHER="$(ls -d $OTHER/licensee-src/build/*)"
  1372         THIS_JDK="$THIS/images/jdk"
  1464         THIS_JDK="$THIS/images/jdk"
  1373         OTHER_JDK="$OTHER/images/jdk"
  1465         OTHER_JDK="$OTHER/images/jdk"
  1374         # Rewrite the path to tools that are used from the build
  1466         # Rewrite the path to tools that are used from the build
  1375         JIMAGE="$(echo "$JIMAGE" | $SED "s|$OLD_THIS|$THIS|g")"
  1467         JIMAGE="$(echo "$JIMAGE" | $SED "s|$OLD_THIS|$THIS|g")"
       
  1468         JMOD="$(echo "$JMOD" | $SED "s|$OLD_THIS|$THIS|g")"
  1376         JAVAP="$(echo "$JAVAP" | $SED "s|$OLD_THIS|$THIS|g")"
  1469         JAVAP="$(echo "$JAVAP" | $SED "s|$OLD_THIS|$THIS|g")"
  1377     else
  1470     else
  1378         echo "No common images found."
  1471         echo "No common images found."
  1379         exit 1
  1472         exit 1
  1380     fi
  1473     fi
  1611     if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
  1704     if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
  1612         compare_all_jar_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
  1705         compare_all_jar_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
  1613     fi
  1706     fi
  1614 fi
  1707 fi
  1615 
  1708 
       
  1709 if [ "$CMP_JMODS" = "true" ]; then
       
  1710     if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
       
  1711         compare_all_jmod_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
       
  1712     fi
       
  1713     if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
       
  1714         compare_all_jmod_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
       
  1715     fi
       
  1716 fi
       
  1717 
  1616 if [ "$CMP_PERMS" = "true" ]; then
  1718 if [ "$CMP_PERMS" = "true" ]; then
  1617     if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
  1719     if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
  1618         echo -n "JDK "
  1720         echo -n "JDK "
  1619         compare_permissions $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
  1721         compare_permissions $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
  1620     fi
  1722     fi