Making cabal-install SSL capable

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

On Apr 30, 2015 7:42 AM, "Yitzchak Gale" <gale at> 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

You can read about the tools in development here:

> 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

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

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.


More information about the cabal-devel mailing list