[GHC] #12479: build fail of commercialhaskell.com with stack build on mac os x sierra beta 4

GHC ghc-devs at haskell.org
Tue Sep 20 19:17:29 UTC 2016


#12479: build fail of commercialhaskell.com with stack build on mac os x sierra
beta 4
-------------------------------------+-------------------------------------
        Reporter:  stephenb          |                Owner:
            Type:  bug               |               Status:  infoneeded
        Priority:  normal            |            Milestone:  8.0.2
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  MacOS X           |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash                              |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #12198            |  Differential Rev(s):  Phab:D2532
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by rwbarton):

 The OS X linker has an option

     '''-dylib_file''' ''install_name:file_name''

     Specifies that a dynamic shared library is in a different location
 than its standard location. Use this option when you link with a library
 that is dependent on a dynamic library, and the dynamic library is in a
 location other than its default location. ''install_name'' specifies the
 path where the library normally resides. ''file_name'' specifies the path
 of the library you want to use instead. For example, if you link to a
 library that depends upon the dynamic library libsys and you have libsys
 installed in a nondefault location, you would use this option:
 '''-dylib_file /lib/libsys_s.A.dylib:/me/lib/libsys_s.A.dylib'''.

 So GHC could do something like this. When it needs to link a temporary
 shared library against a Haskell package, rather than using `-Ll
 -Wl,-rpath -Wl,l` to add the package's library directory `l` to the rpath,
 since `l` typically has a form like `/home/rwbarton/.cabal/lib/x86_64
 -linux-ghc-7.8.4/text-1.1.1.3`, instead add the parent directory of `l` to
 the rpath and use `-dylib_file` to link against the library with an
 install name of `@rpath/text-1.1.1.3/libHStext-1.1.1.3-ghc7.8.4.dylib`.
 Since the parent directories of the package libraries will generally be
 mostly the same (like `/home/rwbarton/.cabal/lib/x86_64-linux-ghc-7.8.4`),
 they can be deduplicated to save most of the size of the load commands.

 This is kind of a hack that relies on the directory structure that Cabal
 produces to be effective, but it has the advantage of being a local
 change. Cabal would also need some similar change in order for the final
 libraries that it links to be loadable.

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


More information about the ghc-tickets mailing list