[GHC] #10126: Test framework should not assume that GHC tools are in the same directory as GHC itself

GHC ghc-devs at haskell.org
Sun Mar 1 16:32:34 UTC 2015


#10126: Test framework should not assume that GHC tools are in the same directory
as GHC itself
-------------------------------------+-------------------------------------
              Reporter:  Rufflewind  |             Owner:  Rufflewind
                  Type:  feature     |            Status:  new
  request                            |         Milestone:
              Priority:  normal      |           Version:  7.8.4
             Component:  Test Suite  |  Operating System:  Unknown/Multiple
              Keywords:  test        |   Type of failure:  Other
  framework makefile                 |        Blocked By:
          Architecture:              |   Related Tickets:
  Unknown/Multiple                   |
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 The GHC test framework assumes that the GHC tools (`ghc-pkg`, `runghc`,
 `hsc2hs`, etc) are always in the same directory as `ghc` itself

 While this is probably a safe assumption for "in-tree" compilers, it's not
 necessarily true for "out-of-tree" compilers.  For example, I currently
 have a thin wrapper of `ghc` in `$HOME/bin/ghc`, which causes the test
 framework to think that `ghc-pkg` is in `$HOME/bin/ghc-pkg`.

 I think the restriction should be relaxed as long as `TEST_HC` is not
 specified and an out-of-tree compiler is used.

 I suggest changing `testsuite/mk/boilerplate.mk` in the following way:
 {{{#!patch
 @@ -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))
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10126>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list