[MacPorts] #48899: ghc & haskell-platform update?

MacPorts noreply at macports.org
Fri Jan 4 23:05:05 UTC 2019

#48899: ghc & haskell-platform update?
  Reporter:  J.Gilbey@…            |      Owner:  neverpanic
      Type:  update                |     Status:  assigned
  Priority:  Normal                |  Milestone:
 Component:  ports                 |    Version:
Resolution:                        |   Keywords:
      Port:  haskell-platform ghc  |

Comment (by neverpanic):

 Replying to [comment:44 mouse07410]:
 > For example, I use Macports not because I can't do {{{pip install
 pycryptodome}}}, but because it's convenient for me to, e.g., install a
 reasonable version of OpenSSL via {{{sudo port install openssl}}}
 (actually, a bad example - as one of the contributors, I do keep source
 tree of OpenSSL, and regularly rebuild master and stable branches ;).
 > I see absolutely nothing wrong for the user to do {{{sudo port install
 gcc8 && pip-3.7 install numpy}}}. It does not seem much harder than
 {{{sudo port install py37-numpy}}}.

 That's fine if (and only if) the `pip-3.7 install numpy` will work out of
 the box. It usually does with stuff in `/usr/local`, but making your pip
 find stuff in `/opt/local` commonly requires flags. Additionally, using
 MacPorts pip will put files in MacPorts prefix that MacPorts doesn't know
 about, which has previously led to problems. We want to avoid that.

 > >  Approaching this as "if you want pandoc, install cabal/stack and...
 > Why would a Haskell user want to install {{{pandoc}}} via Macports???
 Any more than installing {{{Haskell-libsodium}}} via Macports? Or <put
 your favorite Haskell package here>?

 Because people don't (and shouldn't) care that pandoc or shellcheck are
 written in Haskell. They just want the tool.

 > Yes, non-trivial - which is why I'd be perfectly content packaging pre-
 built {{{stack}}} binary and keeping it. For example, my system uses pre-
 built {{{stack}}} - I did not rebuilt it, not do I want to. It works. I
 don't need Macports to provide it to me, nor do I feel like I'm obligated
 to rebuild it from sources.

 Sure, but given this argument, we might as well not package Haskell at all
 in MacPorts. We could just remove it and tell people to use the upstream
 binaries provided by the GHC developers.

 > There already is {{{Haskell Platform}}}. The main reason I don't use it
 in its entirety is because it's GHC conflicts with Macports
 {{{libiconv}}}. So I had to rebuild GHC myself.

 Hm, that's weird. Binaries on macOS reference their libraries using
 absolute paths, and the upstream GHC binary shouldn't link against
 `/opt/local/lib/libiconv.2.dylib`, so unless you have `DYLD_LIBRARY_PATH`
 in your environment, the upstream Haskell Platform should just work. Have
 you looked into why that's not the case?

 > > Maybe a good approach would also be to build all tools (such as
 pandoc) using stack from a Portfile, so that they all ship their
 dependencies in a private folder. We've recently adopted a similar
 approach for ports using rust's cargo
 > Now, **that** is an idea. But I'm getting concerned when I hear "to
 build ***all** tools" from you. My question is - since those tools are
 trivially installed by {{{stack}}}, what benefit is there in offering what
 essentially is a Macports wrapper for it? And is it worth the cost (time
 and efforts)? Is {{{sudo port install pandoc}}} really that much simpler
 than {{{stack install pandoc}}}, especially for somebody who presumably
 got GHC (with cabal and stack) because that somebody is developing within
 the Haskell ecosystem?

 You're making a few assumptions here that I don't think are correct:

 - I'm not trying to put an emphasis on **all** tools, but an emphasis on
 **tools**, i.e. it wouldn't make sense to package libraries in this way.
 - The benefit of having those wrapped is that you have a single way to
 update them and a single interface to manage them. I don't want to have to
 care about five different language-specific package managers when all I
 want is a single end-user tool.
 - Most of the Haskell stuff is distributable, so our build servers will
 provide precompiled binaries. This significantly speeds up installation.
 - Given sufficient automation (and none of the dependency hell), the time
 required to do this would probably not be very high, i.e. the cost would
 be low. In my eyes, that would make it worth the effort.

 I agree there's not a big difference for somebody who develops in the
 Haskell ecosystem, but those people really don't need our help in figuring
 this out anyway.

Ticket URL: <https://trac.macports.org/ticket/48899#comment:45>
MacPorts <https://www.macports.org/>
Ports system for macOS

More information about the macports-tickets mailing list