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

GHC ghc-devs at haskell.org
Sat Oct 22 00:21:34 UTC 2016


#12479: build fail of commercialhaskell.com with stack build on mac os x sierra
-------------------------------------+-------------------------------------
        Reporter:  stephenb          |                Owner:
            Type:  bug               |               Status:  upstream
        Priority:  highest           |            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 Edward Z. Yang <ezyang@…>):

 In [changeset:"f41a8a369796985a75dd618b969292e1e7033112/ghc"
 f41a8a36/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="f41a8a369796985a75dd618b969292e1e7033112"
 Add and use a new dynamic-library-dirs field in the ghc-pkg info

 Summary:
 Build systems / package managers want to be able to control the file
 layout of installed libraries. In general they may want/need to be able
 to put the static libraries and dynamic libraries in different places.
 The ghc-pkg library regisrtation needs to be able to handle this.

 This is already possible in principle by listing both a static lib dir
 and a dynamic lib dir in the library-dirs field (indeed some previous
 versions of Cabal did this for shared libs on ELF platforms).

 The downside of listing both dirs is twofold. There is a lack of
 precision, if we're not careful with naming then we could end up
 picking up the wrong library. The more immediate problem however is
 that if we list both directories then both directories get included
 into the ELF and Mach-O shared object runtime search paths. On ELF this
 merely slows down loading of shared libs (affecting prog startup time).
 On the latest OSX versions this provokes a much more serious problem:
 that there is a rather low limit on the total size of the section
 containing the runtime search path (and lib names and related) and thus
 listing any unnecessary directories wastes the limited space.

 So the solution in this patch is fairly straightforward: split the
 static and dynamic library search paths in the ghc-pkg db and its use
 within ghc. This is a traditional solution: pkg-config has the same
 static / dynamic split (though it describes in in terms of private and
 public, but it translates into different behaviour for static and
 dynamic linking).

 Indeed it would make perfect sense to also have a static/dynamic split
 for the list of the libraries to use i.e. to have dynamic variants of
 the hs-libraries and extra-libraries fields. These are not immediately
 required so this patch does not add it, but it is a reasonable
 direction to follow.

 To handle compatibility, if the new dynamic-library-dirs field is not
 specified then its value is taken from the library-dirs field.

 Contains Cabal submodule update.

 Test Plan:
 Run ./validate

 Get christiaanb and carter to test it on OSX Sierra, in combination
 with Cabal/cabal-install changes to the default file layout for
 libraries.

 Reviewers: carter, austin, hvr, christiaanb, bgamari

 Reviewed By: christiaanb, bgamari

 Subscribers: ezyang, Phyx, thomie

 Differential Revision: https://phabricator.haskell.org/D2611

 GHC Trac Issues: #12479
 }}}

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


More information about the ghc-tickets mailing list