<div dir="ltr">There's this devilish thing where an initial install of cabal goes to /usr/bin/cabal, but then a subsequent update<div><br></div><div>$ cabal install cabal-install</div><div><br></div><div>puts things in my ~/.cabal/bin/</div><div><br></div><div>Once I adjusted my PATH to go to ~/.cabal/bin/cabal first, then</div><div><br></div><div>cabal -z install --lib string-conversions<br></div><div><br></div><div>works with the -z. And now everything works accordingly. My /usr/bin/cabal was version 3.0...</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 29, 2021 at 10:40 PM Viktor Dukhovni <<a href="mailto:ietf-dane@dukhovni.org">ietf-dane@dukhovni.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, Jun 29, 2021 at 10:18:47PM -0500, Galaxy Being wrote:<br>
<br>
> Sorry, but this didn't work for me. First,<br>
> <br>
> $ cabal -z install --lib string-conversions<br>
> cabal: unrecognized 'install' option `-z'<br>
<br>
You must have a materially older version of cabal-install than I do.<br>
The "-z" option makes "cabal" ignore any local ".cabal" or<br>
"cabal.project" files, and operate in the "global" project.<br>
<br>
>From "cabal install --help":<br>
<br>
     ...<br>
     -z --ignore-project           Ignore local project configuration<br>
     ...<br>
<br>
If I previously wrote "cabal -z install ...", the more strictly correct<br>
syntax would probably be "cabal install -z ...", perhaps your version<br>
of cabal supports the latter (but quite possibly neither).<br>
<br>
> $ cabal repl -z<br>
> > :set -package string-conversions<br>
> <no location info>: error:<br>
>     Could not load module ‘Data.String.Conversions’<br>
>     It is a member of the hidden package ‘string-conversions-0.4.0.1’.<br>
>     Perhaps you need to add ‘string-conversions’ to the build-depends in your .cabal file.<br>
<br>
Something is missing from the above.  I see no attempt to load the<br>
module, and yet an error about failure to load it.  If "cabal repl" did<br>
accept the "-z" option,<br>
<br>
> $ stack install string-conversions<br>
> <br>
> then<br>
> <br>
> $ stack ghci --package string-conversions<br>
><br>
> [...]<br>
><br>
> *But*, now I am able to follow your cabal way and it does work.<br>
> <br>
> So this is very confusing for a beginner. But happy ending this time. Any<br>
> lessons I can learn from this? For example, why was this so difficult?<br>
<br>
It is tricky because cabal operates in a sanboxed mode by default, and<br>
because GHC and GHCi don't by default have any knowledge of cabal's<br>
package store.  The Haskell tool chain is somewhat fragmented, but IIRC<br>
there are plans afoot to reduce some of the friction.<br>
<br>
I use Cabal 3.4, and it does what I need.  Others use stack which meets<br>
their needs.  GHC is agnostic, and ghci mostly knows just about the<br>
packages bundled with GHC, except when cabal or stack create GHC<br>
"environment" files that specify the package-db locations which GHC<br>
is then able to use.<br>
<br>
Someone else who understands the space better may be able to give a more<br>
detailed answer, and perhaps share any plans to improve toolchain<br>
integration.<br>
<br>
-- <br>
    Viktor.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>⨽<br></div>Lawrence Bottorff<div>Grand Marais, MN, USA</div><div><a href="mailto:borgauf@gmail.com" target="_blank">borgauf@gmail.com</a></div></div></div>