[GHC] #11617: DYLD_LIBRARY_PATH ignored on Mac OS X 10.11.x

GHC ghc-devs at haskell.org
Thu Jul 7 08:01:29 UTC 2016


#11617: DYLD_LIBRARY_PATH ignored on Mac OS X 10.11.x
---------------------------------+--------------------------------------
        Reporter:  borsboom      |                Owner:
            Type:  bug           |               Status:  new
        Priority:  normal        |            Milestone:
       Component:  hsc2hs        |              Version:  7.10.3
      Resolution:                |             Keywords:
Operating System:  MacOS X       |         Architecture:  x86_64 (amd64)
 Type of failure:  None/Unknown  |            Test Case:
      Blocked By:                |             Blocking:
 Related Tickets:  #8266, #8721  |  Differential Rev(s):
       Wiki Page:                |
---------------------------------+--------------------------------------

Comment (by darchon):

 TL;DR @thomie: After some consideration, I agree with the "wontfix".

 I know of one "valid" reason to set the (DY)LD_LIBRARY_PATH environment
 variable in a "standard" Haskell development environment, and that is when
 there are dynamically-linked executables in a testing situation (i.e. a
 dynamically linked executable created by {{{cabal test}}}).

 This is based on what I said here:
 https://github.com/haskell/cabal/issues/2330#issuecomment-69201669

 As of Cabal-1.22, Cabal sets all the RPATHs instead of letting GHC handle
 them. What Cabal does differently from GHC, is that it sets the RPATHs to
 the final install locations, not the directory where the library currently
 resides. Now, for installed libraries, the final install location and the
 directory where the library currently resides are one and the same;
 however, for a library under development, the final install location is
 very must likely different from the place it currently resides:
 {{{./dist/build}}}.

 So, since a dynamically-linked executable created by {{{cabal test}}} is
 created the same way as any other dynamically-linked executable, I had to
 find a way for the created test executable to find the library under
 development. The way I did this is have {{{cabal test}}} run the test
 executable in an environment where (DY)LD_LIBRARY_PATH includes
 {{{.dist/build}}}:
 https://github.com/haskell/cabal/blob/6357bc536f993542fc385e3d1a59dac5f8b61268/Cabal/Distribution/Simple/Test/LibV09.hs#L85

 However, since I don't see how the dynamically linked testing executables
 can end up in one of the protected system locations, their
 (DY)LD_LIBRARY_PATH environment variables will not be stripped.
 Consequently, this one "valid" use of (DY)LD_LIBRARY_PATH is not affected
 by OS X's behaviour.

 So for now, I agree with the "wontfix", unless someone can truly point out
 another valid reason to set (DY)LD_LIBRARY_PATH.

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


More information about the ghc-tickets mailing list