Making cabal-install SSL capable

Thomas Tuegel ttuegel at gmail.com
Thu Apr 30 15:26:07 UTC 2015


On Apr 30, 2015 7:42 AM, "Yitzchak Gale" <gale at sefer.org> wrote:
>
> Thomas Tuegel wrote:
> > Michael is putting together some tools for us that should make added
> > Haskell dependencies a non-issue from the standpoint of distributing
> > cabal-install. We already have a bootstrap script for this purpose,
> > but the new tools should make it more robust. So, I don't think we
> > should continue to be concerned by that aspect of additional Haskell
> > dependencies.
>
> I am *very* troubled by it. I have experienced that pain, and
> found the current bootstrap script useless. I'm happy that
> someone is working on new tools, and I'd love to see them.

Is there an open ticket for the issues you experienced? The only
remaining problem that I know of is that the script sometimes picks
dependency versions poorly; that's something we're set up to solve
now.

You can read about the tools in development here:
https://github.com/fpco/stackage-server/issues/95

> But for Haskell to be a robust multi-platform portable language
> we need to keep it simple. It is nearly impossible to get complex
> tools, scripts, etc., to be completely general.
>
> The right approach is:
>
> 1. Make GHC itself portable. That itself is complex, but off-topic
> here.
>
> 2. Provide a simple process that can be done manually to get
> a working cabal given a working GHC.
>
> To do that, we need a simple cabal. Cabal has already become
> far too complex to be in such a critical role for bootstrapping.

The solution you propose adds to that complexity. Under your proposal,
to bootstrap cabal-install, a user needs to:
1. Download cabal-bootstrap.
2. Install curl or equivalent, if it's not part of their usual
platform (Windows).
3. Download and install a large number of dependencies, and finally
cabal-install.

Why is there an extra step at the beginning? Why does the user need to
install curl only to immediately replace it?

In contrast, under the Gershom's proposal, which I am endorsing, the
user only needs to:
1. Install curl or equivalent, if it's not part of their usual
platform (Windows).
2. Download and install a smaller number of dependencies, and finally
cabal-install.

That's a much simpler process. Having a separate bootstrap system is
just adding a step: once curl or an equivalent is available on the
user's system, there is no reason not to keep using it! I don't see
any reason to believe any library will do a better job. Cabal is
already very good at detecting available command-line utilities and
managing alternatives.

Regards,
Tom


More information about the cabal-devel mailing list