[BACK]Return to bsd.regress.mk CVS log [TXT][DIR] Up to [local] / src / share / mk

Annotation of src/share/mk/bsd.regress.mk, Revision 1.17

1.17    ! bluhm       1: # $OpenBSD: bsd.regress.mk,v 1.16 2018/10/05 11:15:29 bluhm Exp $
1.10      avsm        2: # Documented in bsd.regress.mk(5)
                      3:
1.1       art         4: # No man pages for regression tests.
                      5: NOMAN=
                      6:
                      7: # No installation.
                      8: install:
                      9:
1.10      avsm       10: # If REGRESS_TARGETS is defined and PROG is not defined, set NOPROG
                     11: .if defined(REGRESS_TARGETS) && !defined(PROG)
1.2       art        12: NOPROG=
1.1       art        13: .endif
                     14:
                     15: .include <bsd.prog.mk>
1.7       art        16:
                     17: .MAIN: all
                     18: all: regress
1.1       art        19:
1.10      avsm       20: # XXX - Need full path to REGRESS_LOG, otherwise there will be much pain.
                     21: REGRESS_LOG?=/dev/null
                     22: REGRESS_SKIP_TARGETS?=
                     23: REGRESS_SKIP_SLOW?=no
1.11      halex      24: REGRESS_FAIL_EARLY?=no
1.10      avsm       25:
                     26: _REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///}
                     27: _REGRESS_TMP?=/dev/null
                     28: _REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null
1.1       art        29:
                     30: .if defined(PROG) && !empty(PROG)
1.3       art        31: run-regress-${PROG}: ${PROG}
1.1       art        32:        ./${PROG}
                     33: .endif
                     34:
1.12      kettenis   35: .if defined(PROG) && !defined(REGRESS_TARGETS)
1.10      avsm       36: REGRESS_TARGETS=run-regress-${PROG}
                     37: .  if defined(REGRESS_SKIP)
                     38: REGRESS_SKIP_TARGETS=run-regress-${PROG}
1.1       art        39: .  endif
                     40: .endif
                     41:
1.13      miod       42: .if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW} != no
1.10      avsm       43: REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS}
1.9       marc       44: .endif
                     45:
1.11      halex      46: .if ${REGRESS_FAIL_EARLY} != no
                     47: _SKIP_FAIL=
                     48: .else
                     49: _SKIP_FAIL=-
                     50: .endif
                     51:
1.10      avsm       52: .if defined(REGRESS_ROOT_TARGETS)
                     53: _ROOTUSER!=id -g
1.9       marc       54: SUDO?=
1.10      avsm       55: .  if (${_ROOTUSER} != 0) && empty(SUDO)
                     56: REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS}
                     57: .  endif
1.4       art        58: .endif
                     59:
1.10      avsm       60: .if defined(ERRORS)
                     61: .BEGIN:
                     62: .  for _m in ${ERRORS}
                     63:        @echo 1>&2 ${_m}
                     64: .  endfor
                     65: .  if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*')
                     66:        @exit 1
                     67: .  endif
1.15      bluhm      68: .endif
                     69:
                     70: REGRESS_SETUP?=
1.16      bluhm      71: REGRESS_SETUP_ONCE?=
1.15      bluhm      72: REGRESS_CLEANUP?=
1.16      bluhm      73:
1.15      bluhm      74: .if !empty(REGRESS_SETUP)
                     75: ${REGRESS_TARGETS}: ${REGRESS_SETUP}
                     76: .endif
1.1       art        77:
1.16      bluhm      78: .if !empty(REGRESS_SETUP_ONCE)
                     79: CLEANFILES+=${REGRESS_SETUP_ONCE:S/^/stamp-/}
                     80: ${REGRESS_TARGETS}: ${REGRESS_SETUP_ONCE:S/^/stamp-/}
                     81: ${REGRESS_SETUP_ONCE:S/^/stamp-/}: .SILENT
                     82:        ${MAKE} -C ${.CURDIR} ${@:S/^stamp-//}
                     83:        date >$@
                     84: REGRESS_CLEANUP+=${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/}
                     85: ${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/}: .SILENT
                     86:        rm -f ${@:S/^cleanup-//}
                     87: .endif
                     88:
1.10      avsm       89: regress: .SILENT
                     90: .if ! ${REGRESS_LOG:M/*}
                     91:        echo =========================================================
                     92:        echo REGRESS_LOG must contain an absolute path to the log-file.
                     93:        echo It currently points to: ${REGRESS_LOG}
                     94:        echo =========================================================
                     95:        exit 1
1.16      bluhm      96: .endif
                     97: .if !empty(REGRESS_SETUP_ONCE)
                     98:        rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/}
1.10      avsm       99: .endif
1.15      bluhm     100: .for RT in ${REGRESS_TARGETS} ${REGRESS_CLEANUP}
1.10      avsm      101: .  if ${REGRESS_SKIP_TARGETS:M${RT}}
                    102:        @echo -n "SKIP " ${_REGRESS_OUT}
1.17    ! bluhm     103:        @echo SKIPPED
1.1       art       104: .  else
1.3       art       105: # XXX - we need a better method to see if a test fails due to timeout or just
                    106: #       normal failure.
1.10      avsm      107: .   if !defined(REGRESS_MAXTIME)
1.11      halex     108:        ${_SKIP_FAIL}if cd ${.CURDIR} && ${MAKE} ${RT}; then \
1.10      avsm      109:            echo -n "SUCCESS " ${_REGRESS_OUT} ; \
1.3       art       110:        else \
1.10      avsm      111:            echo -n "FAIL " ${_REGRESS_OUT} ; \
1.1       art       112:            echo FAILED ; \
1.11      halex     113:            false; \
1.1       art       114:        fi
1.3       art       115: .   else
1.11      halex     116:        ${_SKIP_FAIL}if cd ${.CURDIR} && \
                    117:            (ulimit -t ${REGRESS_MAXTIME} ; ${MAKE} ${RT}); then \
1.10      avsm      118:            echo -n "SUCCESS " ${_REGRESS_OUT} ; \
1.3       art       119:        else \
1.10      avsm      120:            echo -n "FAIL (possible timeout) " ${_REGRESS_OUT} ; \
1.3       art       121:            echo FAILED ; \
1.11      halex     122:            false; \
1.3       art       123:        fi
                    124: .   endif
1.1       art       125: .  endif
1.10      avsm      126:        @echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT}
1.1       art       127: .endfor
                    128:
                    129: .PHONY: regress