Re: Making cabal-install SSL capable

On Apr 30, 2015 7:42 AM, "Yitzchak Gale"
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
participants (1)
-
Thomas Tuegel