# allow ghc and its tools to be located in different directories --- testsuite/mk/boilerplate.mk +++ testsuite/mk/boilerplate.mk @@ -56,6 +56,7 @@ TEST_HC := $(STAGE2_GHC) endif else +implicit_compiler = YES IN_TREE_COMPILER = NO TEST_HC := $(shell which ghc) endif @@ -87,24 +88,30 @@ endif # containing spaces BIN_ROOT = $(shell dirname '$(TEST_HC)') +ifeq "$(implicit_compiler)" "YES" +find_tool = $(shell which $(1)) +else +find_tool = $(BIN_ROOT)/$(1) +endif + ifeq "$(GHC_PKG)" "" -GHC_PKG := $(BIN_ROOT)/ghc-pkg +GHC_PKG := $(call find_tool,ghc-pkg) endif ifeq "$(RUNGHC)" "" -RUNGHC := $(BIN_ROOT)/runghc +RUNGHC := $(call find_tool,runghc) endif ifeq "$(HSC2HS)" "" -HSC2HS := $(BIN_ROOT)/hsc2hs +HSC2HS := $(call find_tool,hsc2hs) endif ifeq "$(HP2PS_ABS)" "" -HP2PS_ABS := $(BIN_ROOT)/hp2ps +HP2PS_ABS := $(call find_tool,hp2ps) endif ifeq "$(HPC)" "" -HPC := $(BIN_ROOT)/hpc +HPC := $(call find_tool,hpc) endif $(eval $(call canonicaliseExecutable,TEST_HC)) # 'die' is not available until GHC 7.10 --- testsuite/timeout/timeout.hs +++ testsuite/timeout/timeout.hs @@ -30,8 +30,8 @@ main = do [secs,cmd] -> case reads secs of [(secs', "")] -> run secs' cmd - _ -> die ("Can't parse " ++ show secs ++ " as a number of seconds") - _ -> die ("Bad arguments " ++ show args) + _ -> ((>> exitFailure) . hPutStrLn stderr) ("Can't parse " ++ show secs ++ " as a number of seconds") + _ -> ((>> exitFailure) . hPutStrLn stderr) ("Bad arguments " ++ show args) timeoutMsg :: String timeoutMsg = "Timeout happened...killing process..."