commercialhaskell / commercialhaskell/stack

"Conflicting family instance declaration" error with same type/definition

Open
#4,705 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
4.1k
Forks
850
Avg merge
10h 37m
Merged PRs (30d)
4

Description

Please follow the steps below for reporting a bug:

### General summary/comments (optional)

### Steps to reproduce

```
$ git clone git@github.com:yesodweb/persistent
$ cd persistent
$ git checkout matt/stack-build-error
$ stack build --test --no-run-tests --fast
```

### Expected

`ExitSuccess`, or at least an actual error.

### Actual

```
λ ~/Projects/persistent/ matt/stack-build-error stack build --fast --test --no-run-tests
persistent-mongoDB-2.8.0: unregistering (local file changes: test/MongoInit.hs)
persistent-test-2.0.2.0: unregistering (missing dependencies: persistent-mongoDB)
persistent-2.9.2: Test running disabled by --no-run-tests flag.
persistent-mongoDB-2.8.0: configure
persistent-redis-2.5.2.2: Test running disabled by --no-run-tests flag.
persistent-sqlite-2.9.2: Test running disabled by --no-run-tests flag.
persistent-template-2.6.0: Test running disabled by --no-run-tests flag.
persistent-mongoDB-2.8.0: build
persistent-mongoDB-2.8.0: copy/register
persistent-test-2.0.2.0: configure (lib + exe)
persistent-test-2.0.2.0: build (lib + exe)
persistent-test-2.0.2.0: copy/register
persistent-mongoDB-2.8.0: configure (test)
persistent-mongoDB-2.8.0: build (test)
persistent-qq-2.9.1: configure (test)
persistent-qq-2.9.1: build (test)
persistent-qq-2.9.1: Test running disabled by --no-run-tests flag.
Log files have been written to: /home/matt/Projects/persistent/.stack-work/logs/
Progress 9/10

-- While building package persistent-mongoDB-2.8.0 using:
/home/matt/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.4 --
builddir=.stack-work/dist/x86_64-linux/Cabal-2.4.0.1 build test:test --ghc-options " -ddump-hi
-ddump-to-file -fdiagnostics-color=always"
Process exited with code: ExitFailure 1
Logs have been written to: /home/matt/Projects/persistent/.stack-work/logs/persistent-mongo
DB-2.8.0.log

Configuring persistent-mongoDB-2.8.0...
Preprocessing library for persistent-mongoDB-2.8.0..
Building library for persistent-mongoDB-2.8.0..
[1 of 1] Compiling Database.Persist.MongoDB ( Database/Persist/MongoDB.hs, .stack-work/dist
/x86_64-linux/Cabal-2.4.0.1/build/Database/Persist/MongoDB.o )
Preprocessing test suite 'test' for persistent-mongoDB-2.8.0..
Building test suite 'test' for persistent-mongoDB-2.8.0..
[1 of 4] Compiling MongoInit ( test/MongoInit.hs, .stack-work/dist/x86_64-linux/Caba
l-2.4.0.1/build/test/test-tmp/MongoInit.o )

/home/matt/Projects/persistent/persistent-mongoDB/test/MongoInit.hs:1:1: error:
Conflicting family instance declarations:
BackendKey MongoDB.MongoContext
-- Defined in ‘Database.Persist.MongoDB’
BackendKey MongoDB.MongoContext
-- Defined in ‘persistent-mongoDB-2.8.0:Database.Persist.MongoDB’
|
1 | {-# LANGUAGE ScopedTypeVariables #-}
| ^

/home/matt/Projects/persistent/persistent-mongoDB/test/MongoInit.hs:1:1: error:
Conflicting family instance declarations:
BackendSpecificFilter
MongoDB.MongoContext record = Database.Persist.MongoDB.MongoFilter
record
-- Defined in ‘Database.Persist.MongoDB’
BackendSpecificFilter
MongoDB.MongoContext
record = persistent-mongoDB-2.8.0:Database.Persist.MongoDB.MongoFilter
record
-- Defined in ‘persistent-mongoDB-2.8.0:Database.Persist.MongoDB’
|
1 | {-# LANGUAGE ScopedTypeVariables #-}
| ^

/home/matt/Projects/persistent/persistent-mongoDB/test/MongoInit.hs:1:1: error:
Conflicting family instance declarations:
BackendSpecificUpdate
MongoDB.MongoContext record = Database.Persist.MongoDB.MongoUpdate
record
-- Defined in ‘Database.Persist.MongoDB’
BackendSpecificUpdate
MongoDB.MongoContext
record = persistent-mongoDB-2.8.0:Database.Persist.MongoDB.MongoUpdate
record
-- Defined in ‘persistent-mongoDB-2.8.0:Database.Persist.MongoDB’
|
1 | {-# LANGUAGE ScopedTypeVariables #-}
| ^
```

The location it gives are for the exact same place. It would appear that the `test-suite` is somehow gaining privileged access to the `Database.Persist.MongoDB` module. Removing the dependency in the cabal file does not fix the problem - instead, we get an error where the module is not available to import.

[Gist with the command run with `--verbose`](https://gist.github.com/parsonsmatt/558f2bef8bed74acfeaa542a4805bfc4)

### Stack version

```
λ ~/Projects/persistent/ stack --version
Version 1.9.3, Git revision 40cf7b37526b86d1676da82167ea8758a854953b (6211 commits) x86_64 hpa
ck-0.31.1
```

### Method of installation

* Fresh upgrade via `stack upgrade`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.