Print this page
4522 the build doesn't fail nearly often enough
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Jens Elkner <jel+illumos@cs.uni-magdeburg.de>

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/scripts/nightly.sh
          +++ new/usr/src/tools/scripts/nightly.sh
↓ open down ↓ 191 lines elided ↑ open up ↑
 192  192          rm -f $SRC/${INSTALLOG}.out
 193  193          cd $SRC
 194  194          /bin/time $MAKE -e install 2>&1 | \
 195  195              tee -a $SRC/${INSTALLOG}.out >> $LOGFILE
 196  196  
 197  197          echo "\n==== Build errors ($LABEL) ====\n" >> $mail_msg_file
 198  198          egrep ":" $SRC/${INSTALLOG}.out |
 199  199                  egrep -e "(^${MAKE}:|[  ]error[:        \n])" | \
 200  200                  egrep -v "Ignoring unknown host" | \
 201  201                  egrep -v "cc .* -o error " | \
 202      -                egrep -v "warning" >> $mail_msg_file
 203      -        if [ "$?" = "0" ]; then
      202 +                egrep -v "warning" | tee $TMPDIR/build_errs${SUFFIX} \
      203 +                >> $mail_msg_file
      204 +        if [[ -s $TMPDIR/build_errs${SUFFIX} ]]; then
 204  205                  build_ok=n
 205  206                  this_build_ok=n
 206  207          fi
 207  208          grep "bootblock image is .* bytes too big" $SRC/${INSTALLOG}.out \
 208  209                  >> $mail_msg_file
 209  210          if [ "$?" = "0" ]; then
 210  211                  build_ok=n
 211  212                  this_build_ok=n
 212  213          fi
 213  214  
 214  215          echo "\n==== Build warnings ($LABEL) ====\n" >>$mail_msg_file
 215  216          egrep -i warning: $SRC/${INSTALLOG}.out \
 216  217                  | egrep -v '^tic:' \
 217  218                  | egrep -v "symbol (\`|')timezone' has differing types:" \
 218  219                  | egrep -v "parameter <PSTAMP> set to" \
 219  220                  | egrep -v "Ignoring unknown host" \
 220  221                  | egrep -v "redefining segment flags attribute for" \
 221      -                >> $mail_msg_file
      222 +                | tee $TMPDIR/build_warnings${SUFFIX} >> $mail_msg_file
      223 +        if [[ -s $TMPDIR/build_warnings${SUFFIX} ]]; then
      224 +                build_ok=n
      225 +                this_build_ok=n
      226 +        fi
 222  227  
 223  228          echo "\n==== Ended OS-Net source build at `date` ($LABEL) ====\n" \
 224  229                  >> $LOGFILE
 225  230  
 226  231          echo "\n==== Elapsed build time ($LABEL) ====\n" >>$mail_msg_file
 227  232          tail -3  $SRC/${INSTALLOG}.out >>$mail_msg_file
 228  233  
 229  234          if [ "$i_FLAG" = "n" ]; then
 230  235                  rm -f $SRC/${NOISE}.ref
 231  236                  if [ -f $SRC/${NOISE}.out ]; then
↓ open down ↓ 94 lines elided ↑ open up ↑
 326  331                          cd $SRC/pkg
 327  332                          /bin/time $MAKE -e install 2>&1 | \
 328  333                              tee -a $SRC/pkg/${INSTALLOG}.out >> $LOGFILE
 329  334  
 330  335                          echo "\n==== package build errors ($LABEL) ====\n" \
 331  336                                  >> $mail_msg_file
 332  337  
 333  338                          egrep "${MAKE}|ERROR|WARNING" $SRC/pkg/${INSTALLOG}.out | \
 334  339                                  grep ':' | \
 335  340                                  grep -v PSTAMP | \
 336      -                                egrep -v "Ignoring unknown host" \
 337      -                                >> $mail_msg_file
      341 +                                egrep -v "Ignoring unknown host" | \
      342 +                                tee $TMPDIR/package >> $mail_msg_file
      343 +                        if [[ -s $TMPDIR/package ]]; then
      344 +                                build_extras_ok=n
      345 +                                this_build_ok=n
      346 +                        fi
 338  347                  else
 339  348                          #
 340  349                          # Handle it gracefully if -p was set but there so
 341  350                          # no pkg directory.
 342  351                          #
 343  352                          echo "\n==== No $LABEL packages to build ====\n" \
 344  353                                  >> $LOGFILE
 345  354                  fi
 346  355          else
 347  356                  echo "\n==== Not creating $LABEL packages ====\n" >> $LOGFILE
↓ open down ↓ 40 lines elided ↑ open up ↑
 388  397          cd $lintdir
 389  398          #
 390  399          # Remove all .ln files to ensure a full reference file
 391  400          #
 392  401          rm -f Nothing_to_remove \
 393  402              `find . \( -name SCCS -o -name .hg -o -name .svn -o -name .git \) \
 394  403                  -prune -o -type f -name '*.ln' -print `
 395  404  
 396  405          /bin/time $MAKE -ek lint 2>&1 | \
 397  406              tee -a $LINTOUT >> $LOGFILE
      407 +
 398  408          echo "\n==== '$MAKE lint' of $base ERRORS ====\n" >> $mail_msg_file
      409 +
 399  410          grep "$MAKE:" $LINTOUT |
 400      -                egrep -v "Ignoring unknown host" \
 401      -                >> $mail_msg_file
      411 +                egrep -v "Ignoring unknown host" | \
      412 +                tee $TMPDIR/lint_errs >> $mail_msg_file
      413 +        if [[ -s $TMPDIR/lint_errs ]]; then
      414 +                build_extras_ok=n
      415 +        fi
 402  416  
 403  417          echo "\n==== Ended '$MAKE lint' of $base at `date` ====\n" >> $LOGFILE
 404  418  
 405  419          echo "\n==== Elapsed time of '$MAKE lint' of $base ====\n" \
 406  420                  >>$mail_msg_file
 407  421          tail -3  $LINTOUT >>$mail_msg_file
 408  422  
 409  423          rm -f ${LINTNOISE}.ref
 410  424          if [ -f ${LINTNOISE}.out ]; then
 411  425                  mv ${LINTNOISE}.out ${LINTNOISE}.ref
↓ open down ↓ 1 lines elided ↑ open up ↑
 413  427          grep : $LINTOUT | \
 414  428                  egrep -v '^(real|user|sys)' |
 415  429                  egrep -v '(library construction)' | \
 416  430                  egrep -v ': global crosschecks' | \
 417  431                  egrep -v 'Ignoring unknown host' | \
 418  432                  egrep -v '\.c:$' | \
 419  433                  sort | uniq > ${LINTNOISE}.out
 420  434          if [ ! -f ${LINTNOISE}.ref ]; then
 421  435                  cp ${LINTNOISE}.out ${LINTNOISE}.ref
 422  436          fi
      437 +
 423  438          if [ "$dodiff" != "n" ]; then
 424  439                  echo "\n==== lint warnings $base ====\n" \
 425  440                          >>$mail_msg_file
 426  441                  # should be none, though there are a few that were filtered out
 427  442                  # above
 428  443                  egrep -i '(warning|lint):' ${LINTNOISE}.out \
 429      -                        | sort | uniq >> $mail_msg_file
      444 +                        | sort | uniq | tee $TMPDIR/lint_warns >> $mail_msg_file
      445 +                if [[ -s $TMPDIR/lint_warns ]]; then
      446 +                        build_extras_ok=n
      447 +                fi
 430  448                  echo "\n==== lint noise differences $base ====\n" \
 431  449                          >> $mail_msg_file
 432  450                  diff ${LINTNOISE}.ref ${LINTNOISE}.out \
 433  451                          >> $mail_msg_file
 434  452          fi
 435  453  }
 436  454  
 437  455  #
 438  456  # Build and install the onbld tools.
 439  457  #
↓ open down ↓ 12 lines elided ↑ open up ↑
 452  470          rm -f ${TOOLS}/${INSTALLOG}.out
 453  471          cd ${TOOLS}
 454  472          /bin/time $MAKE TOOLS_PROTO=${DESTROOT} -e install 2>&1 | \
 455  473              tee -a ${TOOLS}/${INSTALLOG}.out >> $LOGFILE
 456  474  
 457  475          echo "\n==== Tools build errors ====\n" >> $mail_msg_file
 458  476  
 459  477          egrep ":" ${TOOLS}/${INSTALLOG}.out |
 460  478                  egrep -e "(${MAKE}:|[   ]error[:        \n])" | \
 461  479                  egrep -v "Ignoring unknown host" | \
 462      -                egrep -v warning >> $mail_msg_file
 463      -        return $?
      480 +                egrep -v warning | tee $TMPDIR/tools_errors >> $mail_msg_file
      481 +
      482 +        if [[ -s $TMPDIR/tools_errors ]]; then
      483 +                return 1
      484 +        fi
      485 +        return 0
 464  486  }
 465  487  
 466  488  #
 467  489  # Set up to use locally installed tools.
 468  490  #
 469  491  # usage: use_tools TOOLSROOT
 470  492  #
 471  493  function use_tools {
 472  494          TOOLSROOT=$1
 473  495  
↓ open down ↓ 189 lines elided ↑ open up ↑
 663  685  n_FLAG=n
 664  686  p_FLAG=n
 665  687  r_FLAG=n
 666  688  t_FLAG=y
 667  689  U_FLAG=n
 668  690  u_FLAG=n
 669  691  V_FLAG=n
 670  692  w_FLAG=n
 671  693  #
 672  694  build_ok=y
      695 +build_extras_ok=y
 673  696  
 674  697  #
 675  698  # examine arguments
 676  699  #
 677  700  
 678  701  OPTIND=1
 679  702  while getopts +intV: FLAG
 680  703  do
 681  704          case $FLAG in
 682  705            i )   i_FLAG=y; i_CMD_LINE_FLAG=y
↓ open down ↓ 460 lines elided ↑ open up ↑
1143 1166                  y)
1144 1167                          state=Completed
1145 1168                          ;;
1146 1169                  i)
1147 1170                          state=Interrupted
1148 1171                          ;;
1149 1172                  *)
1150 1173                          state=Failed
1151 1174                          ;;
1152 1175          esac
     1176 +
     1177 +        if [[ $state != "Interrupted" && $build_extras_ok != "y" ]]; then
     1178 +                state=Failed
     1179 +        fi
     1180 +
1153 1181          NIGHTLY_STATUS=$state
1154 1182          export NIGHTLY_STATUS
1155 1183  
1156 1184          run_hook POST_NIGHTLY $state
1157 1185          run_hook SYS_POST_NIGHTLY $state
1158 1186  
1159 1187          #
1160 1188          # mailx(1) sets From: based on the -r flag
1161 1189          # if it is given.
1162 1190          #
↓ open down ↓ 325 lines elided ↑ open up ↑
1488 1516  
1489 1517          # Remove all .make.state* files, just in case we are restarting
1490 1518          # the build after having interrupted a previous 'make clobber'.
1491 1519          find . \( -name SCCS -o -name .hg -o -name .svn -o -name .git \
1492 1520                  -o -name 'interfaces.*' \) -prune \
1493 1521                  -o -name '.make.*' -print | xargs rm -f
1494 1522  
1495 1523          $MAKE -ek clobber 2>&1 | tee -a $SRC/clobber-${MACH}.out >> $LOGFILE
1496 1524          echo "\n==== Make clobber ERRORS ====\n" >> $mail_msg_file
1497 1525          grep "$MAKE:" $SRC/clobber-${MACH}.out |
1498      -                egrep -v "Ignoring unknown host" \
1499      -                >> $mail_msg_file
     1526 +                egrep -v "Ignoring unknown host" | \
     1527 +                tee $TMPDIR/clobber_errs >> $mail_msg_file
     1528 +
     1529 +        if [[ -s $TMPDIR/clobber_errs ]]; then
     1530 +                build_extras_ok=n
     1531 +        fi
1500 1532  
1501 1533          if [[ "$t_FLAG" = "y" ]]; then
1502 1534                  echo "\n==== Make tools clobber at `date` ====\n" >> $LOGFILE
1503 1535                  cd ${TOOLS}
1504 1536                  rm -f ${TOOLS}/clobber-${MACH}.out
1505 1537                  $MAKE TOOLS_PROTO=$TOOLS_PROTO -ek clobber 2>&1 | \
1506 1538                          tee -a ${TOOLS}/clobber-${MACH}.out >> $LOGFILE
1507 1539                  echo "\n==== Make tools clobber ERRORS ====\n" \
1508 1540                          >> $mail_msg_file
1509 1541                  grep "$MAKE:" ${TOOLS}/clobber-${MACH}.out \
1510 1542                          >> $mail_msg_file
     1543 +                if (( $? == 0 )); then
     1544 +                        build_extras_ok=n
     1545 +                fi
1511 1546                  rm -rf ${TOOLS_PROTO}
1512 1547                  mkdir -p ${TOOLS_PROTO}
1513 1548          fi
1514 1549  
1515 1550          typeset roots=$(allprotos)
1516 1551          echo "\n\nClearing $roots" >> "$LOGFILE"
1517 1552          rm -rf $roots
1518 1553  
1519 1554          # Get back to a clean workspace as much as possible to catch
1520 1555          # problems that only occur on fresh workspaces.
↓ open down ↓ 250 lines elided ↑ open up ↑
1771 1806              tee -a $build_environ_file >> $LOGFILE
1772 1807  fi
1773 1808  
1774 1809  #
1775 1810  # Build and use the workspace's tools if requested
1776 1811  #
1777 1812  if [[ "$t_FLAG" = "y" ]]; then
1778 1813          set_non_debug_build_flags
1779 1814  
1780 1815          build_tools ${TOOLS_PROTO}
1781      -        if [[ $? != 0  && "$t_FLAG" = y ]]; then
     1816 +        if (( $? != 0 )); then
     1817 +                build_ok=n
     1818 +        else
1782 1819                  use_tools $TOOLS_PROTO
1783 1820          fi
1784 1821  fi
1785 1822  
1786 1823  # timestamp the start of the normal build; the findunref tool uses it.
1787 1824  touch $SRC/.build.tstamp
1788 1825  
1789 1826  normal_build
1790 1827  
1791 1828  ORIG_SRC=$SRC
↓ open down ↓ 37 lines elided ↑ open up ↑
1829 1866                  for f in $f2; do
1830 1867                          if [ -f "$f" ]; then
1831 1868                                  E2="$E2 -e $f"
1832 1869                          fi
1833 1870                  done
1834 1871          fi
1835 1872  
1836 1873          if [ "$N_FLAG" != "y" -a -d $SRC/pkg ]; then
1837 1874                  echo "\n==== Validating manifests against proto area ====\n" \
1838 1875                      >> $mail_msg_file
1839      -                ( cd $SRC/pkg ; $MAKE -e protocmp ROOT="$checkroot" ) \
1840      -                    >> $mail_msg_file
1841      -
     1876 +                ( cd $SRC/pkg ; $MAKE -e protocmp ROOT="$checkroot" ) | \
     1877 +                    tee $TMPDIR/protocmp_noise >> $mail_msg_file
     1878 +                if [[ -s $TMPDIR/protocmp_noise ]]; then
     1879 +                        build_extras_ok=n
     1880 +                fi
1842 1881          fi
1843 1882  
1844 1883          if [ "$N_FLAG" != "y" -a -f "$REF_PROTO_LIST" ]; then
1845 1884                  echo "\n==== Impact on proto area ====\n" >> $mail_msg_file
1846 1885                  if [ -n "$E2" ]; then
1847 1886                          ELIST=$E2
1848 1887                  else
1849 1888                          ELIST=$E1
1850 1889                  fi
1851 1890                  $PROTOCMPTERSE \
1852 1891                          "Files in yesterday's proto area, but not today's:" \
1853 1892                          "Files in today's proto area, but not yesterday's:" \
1854 1893                          "Files that changed between yesterday and today:" \
1855 1894                          ${ELIST} \
1856 1895                          -d $REF_PROTO_LIST \
1857 1896                          $ATLOG/proto_list_${MACH} \
1858 1897                          >> $mail_msg_file
1859 1898          fi
1860 1899  fi
1861 1900  
1862      -if [ "$u_FLAG" = "y"  -a "$build_ok" = "y" ]; then
     1901 +if [[ "$u_FLAG" == "y" && "$build_ok" == "y" && \
     1902 +    "$build_extras_ok" == "y" ]]; then
1863 1903          staffer cp $ATLOG/proto_list_${MACH} \
1864 1904                  $PARENT_WS/usr/src/proto_list_${MACH}
1865 1905  fi
1866 1906  
1867 1907  # Update parent proto area if necessary. This is done now
1868 1908  # so that the proto area has either DEBUG or non-DEBUG kernels.
1869 1909  # Note that this clears out the lock file, so we can dispense with
1870 1910  # the variable now.
1871 1911  if [ "$U_FLAG" = "y" -a "$build_ok" = "y" ]; then
1872 1912          echo "\n==== Copying proto area to $NIGHTLY_PARENT_ROOT ====\n" | \
↓ open down ↓ 24 lines elided ↑ open up ↑
1897 1937                              ( cd $NIGHTLY_PARENT_TOOLS_ROOT; 
1898 1938                              umask 0; tar xpf - ) ) 2>&1 |
1899 1939                              tee -a $mail_msg_file >> $LOGFILE
1900 1940                  fi
1901 1941          fi
1902 1942  fi
1903 1943  
1904 1944  #
1905 1945  # ELF verification: ABI (-A) and runtime (-r) checks
1906 1946  #
1907      -if [[ ($build_ok = y) && ( ($A_FLAG = y) || ($r_FLAG = y) ) ]]; then
     1947 +if [[ ($build_ok = y) && (($A_FLAG = y) || ($r_FLAG = y)) ]]; then
1908 1948          # Directory ELF-data.$MACH holds the files produced by these tests.
1909 1949          elf_ddir=$SRC/ELF-data.$MACH
1910 1950  
1911 1951          # If there is a previous ELF-data backup directory, remove it. Then,
1912 1952          # rotate current ELF-data directory into its place and create a new
1913 1953          # empty directory
1914 1954          rm -rf $elf_ddir.ref
1915 1955          if [[ -d $elf_ddir ]]; then
1916 1956                  mv $elf_ddir $elf_ddir.ref
1917 1957          fi
↓ open down ↓ 6 lines elided ↑ open up ↑
1924 1964  
1925 1965          if [[ $A_FLAG = y ]]; then
1926 1966                  echo "\n==== Check versioning and ABI information ====\n"  | \
1927 1967                      tee -a $LOGFILE >> $mail_msg_file
1928 1968  
1929 1969                  # Produce interface description for the proto. Report errors.
1930 1970                  interface_check -o -w $elf_ddir -f object_list \
1931 1971                          -i interface -E interface.err
1932 1972                  if [[ -s $elf_ddir/interface.err ]]; then
1933 1973                          tee -a $LOGFILE < $elf_ddir/interface.err \
1934      -                                >> $mail_msg_file
     1974 +                            >> $mail_msg_file
     1975 +                        build_extras_ok=n
1935 1976                  fi
1936 1977  
1937 1978                  # If ELF_DATA_BASELINE_DIR is defined, compare the new interface
1938 1979                  # description file to that from the baseline gate. Issue a
1939 1980                  # warning if the baseline is not present, and keep going.
1940 1981                  if [[ "$ELF_DATA_BASELINE_DIR" != '' ]]; then
1941 1982                          base_ifile="$ELF_DATA_BASELINE_DIR/interface"
1942 1983  
1943 1984                          echo "\n==== Compare versioning and ABI information" \
1944 1985                              "to baseline ====\n"  | \
↓ open down ↓ 1 lines elided ↑ open up ↑
1946 1987                          echo "Baseline:  $base_ifile\n" >> $LOGFILE
1947 1988  
1948 1989                          if [[ -f $base_ifile ]]; then
1949 1990                                  interface_cmp -d -o $base_ifile \
1950 1991                                      $elf_ddir/interface > $elf_ddir/interface.cmp
1951 1992                                  if [[ -s $elf_ddir/interface.cmp ]]; then
1952 1993                                          echo | tee -a $LOGFILE >> $mail_msg_file
1953 1994                                          tee -a $LOGFILE < \
1954 1995                                              $elf_ddir/interface.cmp \
1955 1996                                              >> $mail_msg_file
     1997 +                                        build_extras_ok=n
1956 1998                                  fi
1957 1999                          else
1958 2000                                  echo "baseline not available. comparison" \
1959 2001                                      "skipped" | \
1960 2002                                      tee -a $LOGFILE >> $mail_msg_file
1961 2003                          fi
1962 2004  
1963 2005                  fi
1964 2006          fi
1965 2007  
↓ open down ↓ 4 lines elided ↑ open up ↑
1970 2012                  # If we're doing a DEBUG build the proto area will be left
1971 2013                  # with debuggable objects, thus don't assert -s.
1972 2014                  if [[ $D_FLAG = y ]]; then
1973 2015                          rtime_sflag=""
1974 2016                  else
1975 2017                          rtime_sflag="-s"
1976 2018                  fi
1977 2019                  check_rtime -i -m -v $rtime_sflag -o -w $elf_ddir \
1978 2020                          -D object_list  -f object_list -E runtime.err \
1979 2021                          -I runtime.attr.raw
     2022 +                if (( $? != 0 )); then
     2023 +                        build_extras_ok=n
     2024 +                fi
1980 2025  
1981 2026                  # check_rtime -I output needs to be sorted in order to 
1982 2027                  # compare it to that from previous builds.
1983 2028                  sort $elf_ddir/runtime.attr.raw > $elf_ddir/runtime.attr
1984 2029                  rm $elf_ddir/runtime.attr.raw
1985 2030  
1986 2031                  # Report errors
1987 2032                  if [[ -s $elf_ddir/runtime.err ]]; then
1988 2033                          tee -a $LOGFILE < $elf_ddir/runtime.err \
1989 2034                                  >> $mail_msg_file
     2035 +                        build_extras_ok=n
1990 2036                  fi
1991 2037  
1992 2038                  # If there is an ELF-data directory from a previous build,
1993 2039                  # then diff the attr files. These files contain information
1994 2040                  # about dependencies, versioning, and runpaths. There is some
1995 2041                  # overlap with the ABI checking done above, but this also
1996 2042                  # flushes out non-ABI interface differences along with the
1997 2043                  # other information.
1998 2044                  echo "\n==== Diff ELF runtime attributes" \
1999 2045                      "(since last build) ====\n" | \
↓ open down ↓ 53 lines elided ↑ open up ↑
2053 2099          rm -f $SRC/check.out
2054 2100  
2055 2101          rm -f $SRC/check-${MACH}.out
2056 2102          cd $SRC
2057 2103          $MAKE -ek check ROOT="$checkroot" 2>&1 | tee -a $SRC/check-${MACH}.out \
2058 2104              >> $LOGFILE
2059 2105          echo "\n==== cstyle/hdrchk errors ====\n" >> $mail_msg_file
2060 2106  
2061 2107          grep ":" $SRC/check-${MACH}.out |
2062 2108                  egrep -v "Ignoring unknown host" | \
2063      -                sort | uniq >> $mail_msg_file
     2109 +                sort | uniq | tee $TMPDIR/check_errors >> $mail_msg_file
     2110 +
     2111 +        if [[ -s $TMPDIR/check_errors ]]; then
     2112 +                build_extras_ok=n
     2113 +        fi
2064 2114  else
2065 2115          echo "\n==== No '$MAKE check' ====\n" >> $LOGFILE
2066 2116  fi
2067 2117  
2068 2118  echo "\n==== Find core files ====\n" | \
2069 2119      tee -a $LOGFILE >> $mail_msg_file
2070 2120  
2071 2121  find $abssrcdirs -name core -a -type f -exec file {} \; | \
2072 2122          tee -a $LOGFILE >> $mail_msg_file
2073 2123  
↓ open down ↓ 18 lines elided ↑ open up ↑
2092 2142  
2093 2143  # Verify that the usual lists of files, such as exception lists,
2094 2144  # contain only valid references to files.  If the build has failed,
2095 2145  # then don't check the proto area.
2096 2146  CHECK_PATHS=${CHECK_PATHS:-y}
2097 2147  if [ "$CHECK_PATHS" = y -a "$N_FLAG" != y ]; then
2098 2148          echo "\n==== Check lists of files ====\n" | tee -a $LOGFILE \
2099 2149                  >>$mail_msg_file
2100 2150          arg=-b
2101 2151          [ "$build_ok" = y ] && arg=
2102      -        checkpaths $arg $checkroot 2>&1 | tee -a $LOGFILE >>$mail_msg_file
     2152 +        checkpaths $arg $checkroot > $SRC/checkpaths.out 2>&1
     2153 +        if [[ -s $SRC/checkpaths.out ]]; then
     2154 +                tee -a $LOGFILE < $SRC/checkpaths.out >> $mail_msg_file
     2155 +                build_extras_ok=n
     2156 +        fi
2103 2157  fi
2104 2158  
2105 2159  if [ "$M_FLAG" != "y" -a "$build_ok" = y ]; then
2106 2160          echo "\n==== Impact on file permissions ====\n" \
2107 2161                  >> $mail_msg_file
2108 2162  
2109 2163          abspkg=
2110 2164          for d in $abssrcdirs; do
2111 2165                  if [ -d "$d/pkg" ]; then
2112 2166                          abspkg="$abspkg $d"
↓ open down ↓ 62 lines elided ↑ open up ↑
2175 2229          done
2176 2230  
2177 2231          staffer cp ${TMPDIR}/unref.merge $PARENT_WS/usr/src/unrefmaster.out
2178 2232  fi
2179 2233  
2180 2234  #
2181 2235  # All done save for the sweeping up.
2182 2236  # (whichever exit we hit here will trigger the "cleanup" trap which
2183 2237  # optionally sends mail on completion).
2184 2238  #
2185      -if [ "$build_ok" = "y" ]; then
     2239 +if [[ "$build_ok" == "y" && "$build_extras_ok" == "y" ]]; then
2186 2240          exit 0
2187 2241  fi
2188 2242  exit 1
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX