Hi Manuel,

thanks for the link!  Ahh yes lovely RPATH (this reminds me, I should look
to verify if I can make GHC link recursively.)  The conf files came up on
#ghc yesterday as well. Maybe we need some $home, $sysroot or similar marker
to make them relocatable.

I'll probably take a crack at this today.  Not sure how far I get though.
The primary motivation is that packaging the cross compilers in a neat
way looks like layering patched upon patches onto the configure script. And
in light of Hadrian, we might just want to package up a directory and not
deal with the binary-dist logic where we can?

Cheers,
 Moritz

> On Oct 24, 2017, at 9:45 AM, Manuel M T Chakravarty <c...@justtesting.org> 
> wrote:
> 
> Hi Moritz,
> 
> Haskell for Mac is fully relocatable (as every Mac users expects this of a 
> Mac app).
> 
> Unfortunately, it is not just the libdir in the wrapper scripts that’s in the 
> way of a relocatable GHC. Additional problems are (1) the (at least, as of 
> 8.0) still not macOS-friendly RPATHs in dynamic libraries and (2) the 
> absolute paths in package .conf files.
> 
> In Haskell for Mac, I use two arguably hacky solutions to those two issues. I 
> rewrite all RPATHs in .dylibs to be relative and I have got a little tool 
> that relocates .conf files. I’d certainly prefer a cleaner solution!
> 
> Those aspects of Haskell for Mac are actually in a separate framework 
> (GHC.framework) that wraps GHC and some other tools. This is all in a public 
> repo if you like to have a look
> 
>   https://github.com/haskellformac/GHCframework
> 
> I haven’t put a license on it, but I’d be happy to make it all BSD3. It is of 
> course all highly Mac specific and requires Xcode to build for all the code 
> signing, sandboxing, etc.
> 
> Cheers,
> Manuel
> 
>> Am 23.10.2017 um 17:04 schrieb Moritz Angermann <moritz.angerm...@gmail.com>:
>> 
>> Hi,
>> 
>> while trying to make the binary-distribution logic work for
>> cross compilers.  I've come wonder, how hard it could be to
>> make GHC relocatable. (e.g. just unpack the distribution, 
>> and use the compiler from the `bin` folder within).
>> 
>> Right now this does not work due to the need for the path to
>> package.conf, and this is hardcoded in the wrapper script to
>> provide the proper libdir to ghc via -B[1]. Supposedly this
>> is not an issue on Windows, as a relative path is common on
>> windows and finding the location of the executable can be done
>> safely. Or that's at least how I understand[1].
>> 
>> For macOS there is the haskell-platform, and ghc-dot-app[2]
>> 
>> From [3], it sounds like automake is a build, and not a packaging
>> system, and the binary dist usecase with configure is not
>> really a standard use case.
>> 
>> So why do I bring this up NOW? Apart from me trying to make
>> cross compiler binary distributions working?  The reason is
>> that we are also trying to move towards hadrian, and by "starting
>> from scratch", maybe we have a chance to reconsider how we
>> do things?
>> 
>> I must admit, I'm quite happy to use packages like llvm, by
>> just downloading a package and adding the `bin` path to my
>> $PATH.
>> 
>> There is however one thing that the current configure appraoch
>> does, which I think is quite noteworthy (apart from setting
>> $prefix).  That is, it does check for compilers and sets them
>> accordingly, which might be desirable.
>> 
>> Cheers,
>> Moritz
>> 
>> --
>> [1]: https://ghc.haskell.org/trac/ghc/wiki/Building/Installing
>> [2]: https://ghc.haskell.org/trac/ghc/wiki/Building/MacOSX/Installer
>> [3]: https://lists.gnu.org/archive/html/automake/2006-10/msg00005.html
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> 

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to