I'm attempting to install one small Haskell package.
I set up a project using stack:
stack new my-project simple
This worked out fine. I'm able to build and run the code.
But then I stumbled into needing to use some other library. Searching the internet, I found that I should use cabal to do that. First installed it:
brew install cabal-install
Then updated it:
cabal update
Then tried to install a library with it:
cabal install --lib split
This resulted in:
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 supports
'ghc' version < 9.8): /usr/local/bin/ghc is version 9.8.1
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 supports
'ghc' version < 9.8): /usr/local/bin/ghc is version 9.8.1
Resolving dependencies...
Build profile: -w ghc-9.8.1 -O1
In order, the following will be built (use -v for more details):
- split-0.2.4 (lib) (requires download & build)
Downloading split-0.2.4
Downloaded split-0.2.4
Starting split-0.2.4 (lib)
Building split-0.2.4 (lib)
Failed to build split-0.2.4.
Build log ( /Users/nene/.cache/cabal/logs/ghc-9.8.1/splt-0.2.4-d1ef7190.log ):
Configuring library for split-0.2.4..
Preprocessing library for split-0.2.4..
Building library for split-0.2.4..
[1 of 2] Compiling Data.List.Split.Internals ( src/Data/List/Split/Internals.hs, dist/build/Data/List/Split/Internals.o, dist/build/Data/List/Split/Internals.dyn_o )
[2 of 2] Compiling Data.List.Split ( src/Data/List/Split.hs, dist/build/Data/List/Split.o, dist/build/Data/List/Split.dyn_o )
ld: warning: directory not found for option '-L/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/lib'
ld: unknown option: -no_fixup_chains
clang: error: linker command failed with exit code 1 (use -v to see invocation)
`clang' failed in phase `Linker'. (Exit code: 1)
Error: cabal: Failed to build split-0.2.4. See the build log above for
details.
There seems to be a conflict with cabal version (3.10.1.0) and GHC version (9.8.1). Not sure how to solve it.
Additionally I have a my-project.cabal file that stack created. Inside it I see:
cabal-version: 2.2
If my mental model is correct, then stack uses its own separate GHC installation and (possibly) also its own Cabal installation. But I have no idea how to access these.
I tried creating package.yaml file (as suggested by Silvio Mayolo) with the following contents:
dependencies:
- split
But this seems to have no effect. The build simply complains that it's unable to find Data.List.Split module (which the split library should provide).
PS: For now I have simply implemented the little function I wanted to import by myself. But it would be nice to figure out how to install some Haskell libraries.
To add a dependency to a project created with the simple template, you need to add it to the
build-dependsfield in the.cabalfile created by the template - in your casemy-project.cabal.After that, your cabal file should look like this: