haskell / cabal

Official upstream development repository for Cabal and cabal-install
https://haskell.org/cabal
Other
1.62k stars 695 forks source link

Need some clarification re qualifiers and linking #3706

Closed ezyang closed 8 years ago

ezyang commented 8 years ago

Hey @grayjay, @edsko, @kosmikus ,

I was recently working on some solver changes (the commits are the tip of #3662) and I had a few questions:

  1. In my patch, I want to create a separate package path for every executable dependency a package has. For example, if I need the preprocessors happy and alex, I want Cabal to dependency solve for these separately (they shouldn't interfere with each other, nor my library dependencies.) The way I did this was by introducing a new constructor to Qualifier, Exe PackageName PackageName, which indicates that the package p1 has a dependency on an executable from package p2. First, is this the right way to do this? Second, this is only one level of qualification (since @edsko reverted arbitrarily wrong qualifications because it caused solver loops). Should I make this qualifier recursive?
  2. Suppose I am working on Cabal, which happens to have a dependency on something that uses happy, which itself uses Cabal (as a setup dependency). Is there a way to tell the solver to NOT link these two Cabal's? I've observed that sometimes the solver decides happy should be built in place, which makes me a sad panda (not a happy panda).

Thanks!

grayjay commented 8 years ago

I'll take a stab at answering these.

1. Using a constructor with two package names sounds fine. It might be better to name it something other than "Exe", though, since we could also add a qualifier for top-level executables.

Should I make this qualifier recursive?

It would be nice to have at least a few levels of qualification to avoid collisions, but I don't think it's necessary. One level of qualification here is probably no more restrictive than the existing qualification depth limit on setup dependencies.

2. The solver's cycle detection should prevent the two Cabals from being linked. Do you have the -v3 log from that run? I would expect the solver to link the two Cabals' dependencies, leading to the cycle pkg-happy-exe.happy -> happy-setup.Cabal -> happy-setup.pkg -> pkg-happy-exe.happy, where pkg is the intermediate dependency.

Now that #3662 is merged, is there a need for the dependency solver to solve for individual components rather than packages?

ezyang commented 8 years ago

Log is below. (You can repro yourself by gegtting Cabal HEAD and running it on cabal-install.)

I am not 100% sure how to interpret these logs but maybe there is no linking happneing. I chatted with Duncan and he said that it might be a preference problem: there is an inplace Cabal and we try to use it for setup dependencies even though we shouldn't (nothing to do with linking.)

strategy: PreferLatestForSelected
reorder goals: False
count conflicts: True
independent goals: False
avoid reinstalls: False
shadow packages: False
strong flags: False
max backjumps: 2000
[__0] trying: Cabal-1.25.0.0 (user goal)
[__1] trying: base-4.9.0.0/installed-4.9... (dependency of Cabal-1.25.0.0)
[__2] trying: rts-1.0/installedrts (dependency of base-4.9.0.0/installed-4.9...)
[__3] trying: integer-gmp-1.0.0.1/installed-1.0... (dependency of base-4.9.0.0/installed-4.9...)
[__4] trying: ghc-prim-0.5.0.0/installed-0.5... (dependency of base-4.9.0.0/installed-4.9...)
[__5] trying: unix-2.7.2.0/installed-2.7... (dependency of Cabal-1.25.0.0)
[__6] trying: binary-0.8.3.0/installed-0.8... (dependency of Cabal-1.25.0.0)
[__7] trying: directory-1.2.6.2/installed-1.2... (dependency of Cabal-1.25.0.0)
[__8] trying: time-1.6.0.1/installed-1.6... (dependency of Cabal-1.25.0.0)
[__9] trying: process-1.4.2.0/installed-1.4... (dependency of Cabal-1.25.0.0)
[_10] trying: pretty-1.1.3.3/installed-1.1... (dependency of Cabal-1.25.0.0)
[_11] trying: filepath-1.4.1.0/installed-1.4... (dependency of Cabal-1.25.0.0)
[_12] trying: deepseq-1.4.2.0/installed-1.4... (dependency of Cabal-1.25.0.0)
[_13] trying: containers-0.5.7.1/installed-0.5... (dependency of Cabal-1.25.0.0)
[_14] trying: bytestring-0.10.8.1/installed-0.1... (dependency of Cabal-1.25.0.0)
[_15] trying: array-0.5.1.1/installed-0.5... (dependency of Cabal-1.25.0.0)
[_16] trying: cabal-install-1.25.0.0 (user goal)
[_17] trying: cabal-install-setup.base~>base-4.9.0.0/installed-4.9... (dependency of cabal-install-1.25.0.0)
[_18] next goal: network (dependency of cabal-install-1.25.0.0)
[_18] rejecting: network-2.6.3.1, network-2.6.3.0 (constraint from project config TODO requires <2.6.3.0)
[_18] trying: network-2.6.2.1
[_19] trying: network-2.6.2.1:!test
[_20] trying: hackage-security-0.5.2.1 (dependency of cabal-install-1.25.0.0)
[_21] trying: hackage-security-0.5.2.1:!test
[_22] trying: template-haskell-2.11.0.0/installed-2.1... (dependency of hackage-security-0.5.2.1)
[_23] trying: ghc-boot-th-8.0.1/installed-8.0... (dependency of template-haskell-2.11.0.0/installed-2.1...)
[_24] trying: transformers-0.5.2.0/installed-0.5... (dependency of hackage-security-0.5.2.1)
[_25] trying: parsec-3.1.11 (dependency of hackage-security-0.5.2.1)
[_26] trying: parsec-3.1.11:!test
[_27] trying: text-1.2.2.1 (dependency of parsec-3.1.11)
[_28] trying: text-1.2.2.1:!test
[_29] trying: ed25519-0.0.5.0 (dependency of hackage-security-0.5.2.1)
[_30] trying: ed25519-0.0.5.0:!bench
[_31] trying: ed25519-0.0.5.0:!test
[_32] trying: ed25519-0.0.5.0:+no-donna
[_33] trying: base64-bytestring-1.0.0.1 (dependency of hackage-security-0.5.2.1)
[_34] trying: base64-bytestring-1.0.0.1:!test
[_35] trying: zlib-0.6.1.1 (dependency of cabal-install-1.25.0.0)
[_36] trying: zlib-0.6.1.1:!test
[_37] trying: tar-0.5.0.3 (dependency of cabal-install-1.25.0.0)
[_38] trying: tar-0.5.0.3:!bench
[_39] trying: tar-0.5.0.3:!test
[_40] trying: stm-2.4.4.1 (dependency of cabal-install-1.25.0.0)
[_41] trying: random-1.1 (dependency of cabal-install-1.25.0.0)
[_42] trying: random-1.1:!test
[_43] trying: mtl-2.2.1 (dependency of cabal-install-1.25.0.0)
[_44] trying: HTTP-4000.3.3 (dependency of cabal-install-1.25.0.0)
[_45] trying: HTTP-4000.3.3:!test
[_46] trying: hashable-1.2.4.0 (dependency of cabal-install-1.25.0.0)
[_47] trying: hashable-1.2.4.0:!bench
[_48] trying: hashable-1.2.4.0:!test
[_49] trying: cryptohash-sha256-0.11.100.1 (dependency of cabal-install-1.25.0.0)
[_50] trying: cryptohash-sha256-0.11.100.1:!bench
[_51] trying: cryptohash-sha256-0.11.100.1:!test
[_52] trying: base16-bytestring-0.1.1.6 (dependency of cabal-install-1.25.0.0)
[_53] trying: async-2.1.0 (dependency of cabal-install-1.25.0.0)
[_54] trying: async-2.1.0:!test
[_55] trying: cabal-install-1.25.0.0:*test
[_56] trying: regex-posix-0.95.2 (dependency of cabal-install-1.25.0.0:*test)
[_57] trying: regex-base-0.93.2 (dependency of regex-posix-0.95.2)
[_58] trying: pretty-show-1.6.12 (dependency of cabal-install-1.25.0.0:*test)
[_59] trying: pretty-show-happy-exe.happy-1.19.5 (dependency of pretty-show-1.6.12)
[_60] trying: pretty-show-happy-exe.base~>base-4.9.0.0/installed-4.9... (dependency of pretty-show-happy-exe.happy-1.19.5)
[_61] trying: happy-setup.base~>base-4.9.0.0/installed-4.9... (dependency of pretty-show-happy-exe.happy-1.19.5)
[_62] trying: pretty-show-happy-exe.rts~>rts-1.0/installedrts (dependency of pretty-show-happy-exe.base-4.9.0.0/installed-4.9...)
[_63] trying: pretty-show-happy-exe.integer-gmp~>integer-gmp-1.0.0.1/installed-1.0... (dependency of pretty-show-happy-exe.base-4.9.0.0/installed-4.9...)
[_64] trying: pretty-show-happy-exe.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of pretty-show-happy-exe.base-4.9.0.0/installed-4.9...)
[_65] trying: pretty-show-happy-exe.happy-1.19.5:!test
[_66] trying: pretty-show-happy-exe.mtl~>mtl-2.2.1 (dependency of pretty-show-happy-exe.happy-1.19.5)
[_67] trying: pretty-show-happy-exe.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of pretty-show-happy-exe.mtl-2.2.1)
[_68] trying: pretty-show-happy-exe.containers~>containers-0.5.7.1/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[_69] trying: pretty-show-happy-exe.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of pretty-show-happy-exe.containers-0.5.7.1/installed-0.5...)
[_70] trying: pretty-show-happy-exe.array~>array-0.5.1.1/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[_71] trying: haskell-lexer-1.0 (dependency of pretty-show-1.6.12)
[_72] trying: network-uri-2.6.1.0 (dependency of cabal-install-1.25.0.0:*test)
[_73] trying: network-uri-2.6.1.0:!test
[_74] trying: QuickCheck-2.9.1 (dependency of cabal-install-1.25.0.0:*test)
[_75] trying: QuickCheck-2.9.1:!test
[_76] trying: tf-random-0.5 (dependency of QuickCheck-2.9.1)
[_77] trying: primitive-0.6.1.0 (dependency of tf-random-0.5)
[_78] trying: primitive-0.6.1.0:!test
[_79] trying: tagged-0.8.5 (dependency of cabal-install-1.25.0.0:*test)
[_80] trying: tagged-0.8.5:+transformers
[_81] trying: transformers-compat-0.5.1.4 (dependency of tagged-0.8.5:+transformers)
[_82] trying: transformers-compat-0.5.1.4:-two
[_83] trying: transformers-compat-0.5.1.4:+mtl
[_84] trying: transformers-compat-0.5.1.4:-three
[_85] trying: tagged-0.8.5:+deepseq
[_86] trying: tasty-quickcheck-0.8.4 (dependency of cabal-install-1.25.0.0:*test)
[_87] trying: tasty-quickcheck-0.8.4:!test
[_88] trying: tasty-hunit-0.9.2 (dependency of cabal-install-1.25.0.0:*test)
[_89] trying: tasty-0.11.0.3 (dependency of cabal-install-1.25.0.0:*test)
[_90] trying: clock-0.7.2 (dependency of tasty-0.11.0.3)
[_91] trying: clock-0.7.2:!test
[_92] trying: ansi-terminal-0.6.2.3 (dependency of tasty-0.11.0.3)
[_93] trying: unbounded-delays-0.1.0.9 (dependency of tasty-0.11.0.3)
[_94] trying: unbounded-delays-setup.base~>base-4.9.0.0/installed-4.9... (dependency of unbounded-delays-0.1.0.9)
[_95] next goal: optparse-applicative (dependency of tasty-0.11.0.3)
[_95] rejecting: optparse-applicative-0.13.0.0 (conflict: tasty => optparse-applicative>=0.11 && <0.13)
[_95] trying: optparse-applicative-0.12.1.0
[_96] trying: ansi-wl-pprint-0.6.7.3 (dependency of optparse-applicative-0.12.1.0)
[_97] trying: regex-tdfa-1.2.2 (dependency of tasty-0.11.0.3)
[_98] trying: Cabal-1.25.0.0:*test
[_99] trying: exceptions-0.8.3 (dependency of Cabal-1.25.0.0:*test)
[100] trying: exceptions-0.8.3:!test
[101] trying: old-time-1.1.0.3 (dependency of Cabal-1.25.0.0:*test)
[102] trying: old-locale-1.0.0.7 (dependency of old-time-1.1.0.3)
[103] trying: regex-tdfa-1.2.2:-devel
[104] trying: ansi-wl-pprint-0.6.7.3:-example
[105] trying: ansi-wl-pprint-0.6.7.3:+newbase
[106] trying: ansi-terminal-0.6.2.3:-example
[107] trying: clock-0.7.2:-llvm
[108] trying: tasty-quickcheck-0.8.4:-old-quickcheck
[109] trying: QuickCheck-2.9.1:+templatehaskell
[110] trying: pretty-show-happy-exe.happy-1.19.5:+small_base
[111] trying: regex-base-0.93.2:+newbase
[112] trying: regex-base-0.93.2:+splitbase
[113] trying: regex-posix-0.95.2:+newbase
[114] trying: regex-posix-0.95.2:+splitbase
[115] trying: cabal-install-1.25.0.0:-old-directory
[116] trying: cabal-install-1.25.0.0:-old-bytestring
[117] trying: cabal-install-1.25.0.0:-debug-tracetree
[118] trying: cabal-install-1.25.0.0:-debug-conflict-sets
[119] trying: cabal-install-1.25.0.0:+network-uri
[120] trying: hashable-1.2.4.0:+integer-gmp
[121] trying: hashable-1.2.4.0:-sse41
[122] trying: hashable-1.2.4.0:+sse2
[123] trying: HTTP-4000.3.3:-warn-as-error
[124] trying: HTTP-4000.3.3:+network-uri
[125] trying: HTTP-4000.3.3:-mtl1
[126] trying: HTTP-4000.3.3:+warp-tests
[127] trying: HTTP-4000.3.3:-network23
[128] trying: HTTP-4000.3.3:-conduit10
[129] trying: tar-0.5.0.3:-old-bytestring
[130] trying: tar-0.5.0.3:-old-time
[131] trying: ed25519-0.0.5.0:+test-properties
[132] trying: ed25519-0.0.5.0:+test-hlint
[133] trying: ed25519-0.0.5.0:+test-doctests
[134] trying: text-1.2.2.1:-integer-simple
[135] trying: text-1.2.2.1:-developer
[136] trying: hackage-security-0.5.2.1:+use-network-uri
[137] trying: hackage-security-0.5.2.1:+base48
[138] trying: hackage-security-0.5.2.1:-old-directory
[139] trying: Cabal-1.25.0.0:-bundled-binary-generic
[140] trying: Cabal-1.25.0.0:-old-directory
[141] trying: unbounded-delays-setup.rts~>rts-1.0/installedrts (dependency of unbounded-delays-setup.base-4.9.0.0/installed-4.9...)
[142] trying: unbounded-delays-setup.integer-gmp~>integer-gmp-1.0.0.1/installed-1.0... (dependency of unbounded-delays-setup.base-4.9.0.0/installed-4.9...)
[143] trying: unbounded-delays-setup.Cabal~>Cabal-1.25.0.0 (dependency of unbounded-delays-0.1.0.9)
[144] rejecting: unbounded-delays-setup.Cabal-1.25.0.0:!test (dependencies not linked: stanza TestStanzas incompatible; conflict set: Cabal, unbounded-delays-setup.Cabal, Cabal-1.25.0.0:test, unbounded-delays-setup.Cabal-1.25.0.0:test)
[144] trying: unbounded-delays-setup.Cabal-1.25.0.0:*test
[145] trying: unbounded-delays-setup.Cabal-1.25.0.0:-bundled-binary-generic
[146] trying: unbounded-delays-setup.Cabal-1.25.0.0:-old-directory
[147] trying: unbounded-delays-setup.exceptions~>exceptions-0.8.3 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[148] trying: unbounded-delays-setup.exceptions-0.8.3:!test
[149] trying: unbounded-delays-setup.mtl~>mtl-2.2.1 (dependency of unbounded-delays-setup.exceptions-0.8.3)
[150] trying: unbounded-delays-setup.transformers-compat~>transformers-compat-0.5.1.4 (dependency of unbounded-delays-setup.exceptions-0.8.3)
[151] trying: unbounded-delays-setup.transformers-compat-0.5.1.4:-two
[152] trying: unbounded-delays-setup.transformers-compat-0.5.1.4:+mtl
[153] trying: unbounded-delays-setup.transformers-compat-0.5.1.4:-three
[154] trying: unbounded-delays-setup.stm~>stm-2.4.4.1 (dependency of unbounded-delays-setup.exceptions-0.8.3)
[155] trying: unbounded-delays-setup.regex-posix~>regex-posix-0.95.2 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[156] trying: unbounded-delays-setup.regex-posix-0.95.2:+newbase
[157] trying: unbounded-delays-setup.regex-posix-0.95.2:+splitbase
[158] trying: unbounded-delays-setup.regex-base~>regex-base-0.93.2 (dependency of unbounded-delays-setup.regex-posix-0.95.2)
[159] trying: unbounded-delays-setup.regex-base-0.93.2:+newbase
[160] trying: unbounded-delays-setup.regex-base-0.93.2:+splitbase
[161] trying: unbounded-delays-setup.QuickCheck~>QuickCheck-2.9.1 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[162] trying: unbounded-delays-setup.QuickCheck-2.9.1:!test
[163] trying: unbounded-delays-setup.QuickCheck-2.9.1:+templatehaskell
[164] trying: unbounded-delays-setup.tf-random~>tf-random-0.5 (dependency of unbounded-delays-setup.QuickCheck-2.9.1)
[165] trying: unbounded-delays-setup.primitive~>primitive-0.6.1.0 (dependency of unbounded-delays-setup.tf-random-0.5)
[166] trying: unbounded-delays-setup.primitive-0.6.1.0:!test
[167] trying: unbounded-delays-setup.random~>random-1.1 (dependency of unbounded-delays-setup.QuickCheck-2.9.1)
[168] trying: unbounded-delays-setup.random-1.1:!test
[169] trying: unbounded-delays-setup.tagged~>tagged-0.8.5 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[170] trying: unbounded-delays-setup.tagged-0.8.5:+transformers
[171] trying: unbounded-delays-setup.tagged-0.8.5:+deepseq
[172] trying: unbounded-delays-setup.tasty-quickcheck~>tasty-quickcheck-0.8.4 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[173] trying: unbounded-delays-setup.tasty-quickcheck-0.8.4:!test
[174] trying: unbounded-delays-setup.tasty-quickcheck-0.8.4:-old-quickcheck
[175] trying: unbounded-delays-setup.tasty-hunit~>tasty-hunit-0.9.2 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[176] trying: unbounded-delays-setup.tasty~>tasty-0.11.0.3 (dependency of unbounded-delays-setup.Cabal-1.25.0.0:*test)
[177] trying: unbounded-delays-setup.clock~>clock-0.7.2 (dependency of unbounded-delays-setup.tasty-0.11.0.3)
[178] trying: unbounded-delays-setup.clock-0.7.2:!test
[179] trying: unbounded-delays-setup.clock-0.7.2:-llvm
[180] trying: unbounded-delays-setup.ansi-terminal~>ansi-terminal-0.6.2.3 (dependency of unbounded-delays-setup.tasty-0.11.0.3)
[181] trying: unbounded-delays-setup.ansi-terminal-0.6.2.3:-example
[182] trying: unbounded-delays-setup.async~>async-2.1.0 (dependency of unbounded-delays-setup.tasty-0.11.0.3)
[183] trying: unbounded-delays-setup.async-2.1.0:!test
[184] trying: unbounded-delays-setup.unbounded-delays~>unbounded-delays-0.1.0.9 (dependency of unbounded-delays-setup.tasty-0.11.0.3)
[185] trying: unbounded-delays-setup.optparse-applicative~>optparse-applicative-0.12.1.0 (dependency of unbounded-delays-setup.tasty-0.11.0.3)
[186] trying: unbounded-delays-setup.ansi-wl-pprint~>ansi-wl-pprint-0.6.7.3 (dependency of unbounded-delays-setup.optparse-applicative-0.12.1.0)
[187] trying: unbounded-delays-setup.ansi-wl-pprint-0.6.7.3:-example
[188] trying: unbounded-delays-setup.ansi-wl-pprint-0.6.7.3:+newbase
[189] trying: unbounded-delays-setup.regex-tdfa~>regex-tdfa-1.2.2 (dependency of unbounded-delays-setup.tasty-0.11.0.3)
[190] trying: unbounded-delays-setup.regex-tdfa-1.2.2:-devel
[191] trying: unbounded-delays-setup.parsec~>parsec-3.1.11 (dependency of unbounded-delays-setup.regex-tdfa-1.2.2)
[192] trying: unbounded-delays-setup.parsec-3.1.11:!test
[193] trying: unbounded-delays-setup.text~>text-1.2.2.1 (dependency of unbounded-delays-setup.parsec-3.1.11)
[194] trying: unbounded-delays-setup.text-1.2.2.1:!test
[195] trying: unbounded-delays-setup.text-1.2.2.1:-integer-simple
[196] trying: unbounded-delays-setup.text-1.2.2.1:-developer
[197] trying: unbounded-delays-setup.template-haskell~>template-haskell-2.11.0.0/installed-2.1... (dependency of unbounded-delays-0.1.0.9)
[198] trying: unbounded-delays-setup.ghc-boot-th~>ghc-boot-th-8.0.1/installed-8.0... (dependency of unbounded-delays-setup.template-haskell-2.11.0.0/installed-2.1...)
[199] trying: unbounded-delays-setup.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[200] trying: unbounded-delays-setup.unix~>unix-2.7.2.0/installed-2.7... (dependency of unbounded-delays-0.1.0.9)
[201] trying: unbounded-delays-setup.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[202] trying: unbounded-delays-setup.time~>time-1.6.0.1/installed-1.6... (dependency of unbounded-delays-0.1.0.9)
[203] trying: unbounded-delays-setup.process~>process-1.4.2.0/installed-1.4... (dependency of unbounded-delays-0.1.0.9)
[204] trying: unbounded-delays-setup.pretty~>pretty-1.1.3.3/installed-1.1... (dependency of unbounded-delays-0.1.0.9)
[205] trying: unbounded-delays-setup.old-time~>old-time-1.1.0.3 (dependency of unbounded-delays-0.1.0.9)
[206] trying: unbounded-delays-setup.old-locale~>old-locale-1.0.0.7 (dependency of unbounded-delays-setup.old-time-1.1.0.3)
[207] trying: unbounded-delays-setup.filepath~>filepath-1.4.1.0/installed-1.4... (dependency of unbounded-delays-0.1.0.9)
[208] trying: unbounded-delays-setup.directory~>directory-1.2.6.2/installed-1.2... (dependency of unbounded-delays-0.1.0.9)
[209] trying: unbounded-delays-setup.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of unbounded-delays-0.1.0.9)
[210] trying: unbounded-delays-setup.containers~>containers-0.5.7.1/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[211] trying: unbounded-delays-setup.bytestring~>bytestring-0.10.8.1/installed-0.1... (dependency of unbounded-delays-0.1.0.9)
[212] trying: unbounded-delays-setup.binary~>binary-0.8.3.0/installed-0.8... (dependency of unbounded-delays-0.1.0.9)
[213] trying: unbounded-delays-setup.array~>array-0.5.1.1/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[214] trying: happy-setup.rts~>rts-1.0/installedrts (dependency of happy-setup.base-4.9.0.0/installed-4.9...)
[215] trying: happy-setup.integer-gmp~>integer-gmp-1.0.0.1/installed-1.0... (dependency of happy-setup.base-4.9.0.0/installed-4.9...)
[216] trying: happy-setup.Cabal~>Cabal-1.25.0.0 (dependency of pretty-show-happy-exe.happy-1.19.5)
[217] rejecting: happy-setup.Cabal-1.25.0.0:!test (dependencies not linked: stanza TestStanzas incompatible; conflict set: Cabal, happy-setup.Cabal, unbounded-delays-setup.Cabal, unbounded-delays-setup.unbounded-delays, Cabal-1.25.0.0:test, happy-setup.Cabal-1.25.0.0:test, unbounded-delays-setup.Cabal-1.25.0.0:test)
[217] trying: happy-setup.Cabal-1.25.0.0:*test
[218] trying: happy-setup.Cabal-1.25.0.0:-bundled-binary-generic
[219] trying: happy-setup.Cabal-1.25.0.0:-old-directory
[220] trying: happy-setup.exceptions~>exceptions-0.8.3 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[221] trying: happy-setup.exceptions-0.8.3:!test
[222] trying: happy-setup.mtl~>mtl-2.2.1 (dependency of happy-setup.exceptions-0.8.3)
[223] trying: happy-setup.transformers-compat~>transformers-compat-0.5.1.4 (dependency of happy-setup.exceptions-0.8.3)
[224] trying: happy-setup.transformers-compat-0.5.1.4:-two
[225] trying: happy-setup.transformers-compat-0.5.1.4:+mtl
[226] trying: happy-setup.transformers-compat-0.5.1.4:-three
[227] trying: happy-setup.stm~>stm-2.4.4.1 (dependency of happy-setup.exceptions-0.8.3)
[228] trying: happy-setup.regex-posix~>regex-posix-0.95.2 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[229] trying: happy-setup.regex-posix-0.95.2:+newbase
[230] trying: happy-setup.regex-posix-0.95.2:+splitbase
[231] trying: happy-setup.regex-base~>regex-base-0.93.2 (dependency of happy-setup.regex-posix-0.95.2)
[232] trying: happy-setup.regex-base-0.93.2:+newbase
[233] trying: happy-setup.regex-base-0.93.2:+splitbase
[234] trying: happy-setup.QuickCheck~>QuickCheck-2.9.1 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[235] trying: happy-setup.QuickCheck-2.9.1:!test
[236] trying: happy-setup.QuickCheck-2.9.1:+templatehaskell
[237] trying: happy-setup.tf-random~>tf-random-0.5 (dependency of happy-setup.QuickCheck-2.9.1)
[238] trying: happy-setup.primitive~>primitive-0.6.1.0 (dependency of happy-setup.tf-random-0.5)
[239] trying: happy-setup.primitive-0.6.1.0:!test
[240] trying: happy-setup.random~>random-1.1 (dependency of happy-setup.QuickCheck-2.9.1)
[241] trying: happy-setup.random-1.1:!test
[242] trying: happy-setup.tagged~>tagged-0.8.5 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[243] trying: happy-setup.tagged-0.8.5:+transformers
[244] trying: happy-setup.tagged-0.8.5:+deepseq
[245] trying: happy-setup.tasty-quickcheck~>tasty-quickcheck-0.8.4 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[246] trying: happy-setup.tasty-quickcheck-0.8.4:!test
[247] trying: happy-setup.tasty-quickcheck-0.8.4:-old-quickcheck
[248] trying: happy-setup.tasty-hunit~>tasty-hunit-0.9.2 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[249] trying: happy-setup.tasty~>tasty-0.11.0.3 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[250] trying: happy-setup.clock~>clock-0.7.2 (dependency of happy-setup.tasty-0.11.0.3)
[251] trying: happy-setup.clock-0.7.2:!test
[252] trying: happy-setup.clock-0.7.2:-llvm
[253] trying: happy-setup.ansi-terminal~>ansi-terminal-0.6.2.3 (dependency of happy-setup.tasty-0.11.0.3)
[254] trying: happy-setup.ansi-terminal-0.6.2.3:-example
[255] trying: happy-setup.async~>async-2.1.0 (dependency of happy-setup.tasty-0.11.0.3)
[256] trying: happy-setup.async-2.1.0:!test
[257] trying: happy-setup.unbounded-delays~>unbounded-delays-0.1.0.9 (dependency of happy-setup.tasty-0.11.0.3)
[258] trying: happy-setup.optparse-applicative~>optparse-applicative-0.12.1.0 (dependency of happy-setup.tasty-0.11.0.3)
[259] trying: happy-setup.ansi-wl-pprint~>ansi-wl-pprint-0.6.7.3 (dependency of happy-setup.optparse-applicative-0.12.1.0)
[260] trying: happy-setup.ansi-wl-pprint-0.6.7.3:-example
[261] trying: happy-setup.ansi-wl-pprint-0.6.7.3:+newbase
[262] trying: happy-setup.regex-tdfa~>regex-tdfa-1.2.2 (dependency of happy-setup.tasty-0.11.0.3)
[263] trying: happy-setup.regex-tdfa-1.2.2:-devel
[264] trying: happy-setup.parsec~>parsec-3.1.11 (dependency of happy-setup.regex-tdfa-1.2.2)
[265] trying: happy-setup.parsec-3.1.11:!test
[266] trying: happy-setup.text~>text-1.2.2.1 (dependency of happy-setup.parsec-3.1.11)
[267] trying: happy-setup.text-1.2.2.1:!test
[268] trying: happy-setup.text-1.2.2.1:-integer-simple
[269] trying: happy-setup.text-1.2.2.1:-developer
[270] trying: happy-setup.template-haskell~>template-haskell-2.11.0.0/installed-2.1... (dependency of pretty-show-happy-exe.happy-1.19.5)
[271] trying: happy-setup.ghc-boot-th~>ghc-boot-th-8.0.1/installed-8.0... (dependency of happy-setup.template-haskell-2.11.0.0/installed-2.1...)
[272] trying: happy-setup.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[273] trying: happy-setup.unix~>unix-2.7.2.0/installed-2.7... (dependency of pretty-show-happy-exe.happy-1.19.5)
[274] trying: happy-setup.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[275] trying: happy-setup.time~>time-1.6.0.1/installed-1.6... (dependency of pretty-show-happy-exe.happy-1.19.5)
[276] trying: happy-setup.process~>process-1.4.2.0/installed-1.4... (dependency of pretty-show-happy-exe.happy-1.19.5)
[277] trying: happy-setup.pretty~>pretty-1.1.3.3/installed-1.1... (dependency of pretty-show-happy-exe.happy-1.19.5)
[278] trying: happy-setup.old-time~>old-time-1.1.0.3 (dependency of pretty-show-happy-exe.happy-1.19.5)
[279] trying: happy-setup.old-locale~>old-locale-1.0.0.7 (dependency of happy-setup.old-time-1.1.0.3)
[280] trying: happy-setup.filepath~>filepath-1.4.1.0/installed-1.4... (dependency of pretty-show-happy-exe.happy-1.19.5)
[281] trying: happy-setup.directory~>directory-1.2.6.2/installed-1.2... (dependency of pretty-show-happy-exe.happy-1.19.5)
[282] trying: happy-setup.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of pretty-show-happy-exe.happy-1.19.5)
[283] trying: happy-setup.containers~>containers-0.5.7.1/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[284] trying: happy-setup.bytestring~>bytestring-0.10.8.1/installed-0.1... (dependency of pretty-show-happy-exe.happy-1.19.5)
[285] trying: happy-setup.binary~>binary-0.8.3.0/installed-0.8... (dependency of pretty-show-happy-exe.happy-1.19.5)
[286] trying: happy-setup.array~>array-0.5.1.1/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[287] trying: cabal-install-setup.rts~>rts-1.0/installedrts (dependency of cabal-install-setup.base-4.9.0.0/installed-4.9...)
[288] trying: cabal-install-setup.integer-gmp~>integer-gmp-1.0.0.1/installed-1.0... (dependency of cabal-install-setup.base-4.9.0.0/installed-4.9...)
[289] trying: cabal-install-setup.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of cabal-install-setup.base-4.9.0.0/installed-4.9...)
[290] trying: cabal-install-setup.filepath~>filepath-1.4.1.0/installed-1.4... (dependency of cabal-install-1.25.0.0)
[291] trying: cabal-install-setup.process~>process-1.4.2.0/installed-1.4... (dependency of cabal-install-1.25.0.0)
[292] trying: cabal-install-setup.unix~>unix-2.7.2.0/installed-2.7... (dependency of cabal-install-setup.process-1.4.2.0/installed-1.4...)
[293] trying: cabal-install-setup.time~>time-1.6.0.1/installed-1.6... (dependency of cabal-install-setup.unix-2.7.2.0/installed-2.7...)
[294] trying: cabal-install-setup.bytestring~>bytestring-0.10.8.1/installed-0.1... (dependency of cabal-install-setup.unix-2.7.2.0/installed-2.7...)
[295] trying: cabal-install-setup.directory~>directory-1.2.6.2/installed-1.2... (dependency of cabal-install-setup.process-1.4.2.0/installed-1.4...)
[296] trying: cabal-install-setup.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of cabal-install-setup.process-1.4.2.0/installed-1.4...)
[297] trying: cabal-install-setup.array~>array-0.5.1.1/installed-0.5... (dependency of cabal-install-setup.deepseq-1.4.2.0/installed-1.4...)
[298] trying: cabal-install-setup.Cabal~>Cabal-1.25.0.0 (dependency of cabal-install-1.25.0.0)
[299] rejecting: cabal-install-setup.Cabal-1.25.0.0:!test (dependencies not linked: stanza TestStanzas incompatible; conflict set: Cabal, cabal-install-setup.Cabal, happy-setup.Cabal, happy-setup.unbounded-delays, unbounded-delays-setup.Cabal, unbounded-delays-setup.unbounded-delays, Cabal-1.25.0.0:test, cabal-install-setup.Cabal-1.25.0.0:test, happy-setup.Cabal-1.25.0.0:test, unbounded-delays-setup.Cabal-1.25.0.0:test)
[299] trying: cabal-install-setup.Cabal-1.25.0.0:*test
[300] trying: cabal-install-setup.Cabal-1.25.0.0:-bundled-binary-generic
[301] trying: cabal-install-setup.Cabal-1.25.0.0:-old-directory
[302] trying: cabal-install-setup.exceptions~>exceptions-0.8.3 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[303] trying: cabal-install-setup.exceptions-0.8.3:!test
[304] trying: cabal-install-setup.mtl~>mtl-2.2.1 (dependency of cabal-install-setup.exceptions-0.8.3)
[305] trying: cabal-install-setup.transformers-compat~>transformers-compat-0.5.1.4 (dependency of cabal-install-setup.exceptions-0.8.3)
[306] trying: cabal-install-setup.transformers-compat-0.5.1.4:-two
[307] trying: cabal-install-setup.transformers-compat-0.5.1.4:+mtl
[308] trying: cabal-install-setup.transformers-compat-0.5.1.4:-three
[309] trying: cabal-install-setup.template-haskell~>template-haskell-2.11.0.0/installed-2.1... (dependency of cabal-install-setup.exceptions-0.8.3)
[310] trying: cabal-install-setup.ghc-boot-th~>ghc-boot-th-8.0.1/installed-8.0... (dependency of cabal-install-setup.template-haskell-2.11.0.0/installed-2.1...)
[311] trying: cabal-install-setup.stm~>stm-2.4.4.1 (dependency of cabal-install-setup.exceptions-0.8.3)
[312] trying: cabal-install-setup.old-time~>old-time-1.1.0.3 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[313] trying: cabal-install-setup.old-locale~>old-locale-1.0.0.7 (dependency of cabal-install-setup.old-time-1.1.0.3)
[314] trying: cabal-install-setup.regex-posix~>regex-posix-0.95.2 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[315] trying: cabal-install-setup.regex-posix-0.95.2:+newbase
[316] trying: cabal-install-setup.regex-posix-0.95.2:+splitbase
[317] trying: cabal-install-setup.regex-base~>regex-base-0.93.2 (dependency of cabal-install-setup.regex-posix-0.95.2)
[318] trying: cabal-install-setup.regex-base-0.93.2:+newbase
[319] trying: cabal-install-setup.regex-base-0.93.2:+splitbase
[320] trying: cabal-install-setup.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[321] trying: cabal-install-setup.QuickCheck~>QuickCheck-2.9.1 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[322] trying: cabal-install-setup.QuickCheck-2.9.1:!test
[323] trying: cabal-install-setup.QuickCheck-2.9.1:+templatehaskell
[324] trying: cabal-install-setup.tf-random~>tf-random-0.5 (dependency of cabal-install-setup.QuickCheck-2.9.1)
[325] trying: cabal-install-setup.primitive~>primitive-0.6.1.0 (dependency of cabal-install-setup.tf-random-0.5)
[326] trying: cabal-install-setup.primitive-0.6.1.0:!test
[327] trying: cabal-install-setup.random~>random-1.1 (dependency of cabal-install-setup.QuickCheck-2.9.1)
[328] trying: cabal-install-setup.random-1.1:!test
[329] trying: cabal-install-setup.tagged~>tagged-0.8.5 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[330] trying: cabal-install-setup.tagged-0.8.5:+transformers
[331] trying: cabal-install-setup.tagged-0.8.5:+deepseq
[332] trying: cabal-install-setup.tasty-quickcheck~>tasty-quickcheck-0.8.4 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[333] trying: cabal-install-setup.tasty-quickcheck-0.8.4:!test
[334] trying: cabal-install-setup.tasty-quickcheck-0.8.4:-old-quickcheck
[335] trying: cabal-install-setup.tasty-hunit~>tasty-hunit-0.9.2 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[336] trying: cabal-install-setup.tasty~>tasty-0.11.0.3 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[337] trying: cabal-install-setup.clock~>clock-0.7.2 (dependency of cabal-install-setup.tasty-0.11.0.3)
[338] trying: cabal-install-setup.clock-0.7.2:!test
[339] trying: cabal-install-setup.clock-0.7.2:-llvm
[340] trying: cabal-install-setup.ansi-terminal~>ansi-terminal-0.6.2.3 (dependency of cabal-install-setup.tasty-0.11.0.3)
[341] trying: cabal-install-setup.ansi-terminal-0.6.2.3:-example
[342] trying: cabal-install-setup.async~>async-2.1.0 (dependency of cabal-install-setup.tasty-0.11.0.3)
[343] trying: cabal-install-setup.async-2.1.0:!test
[344] trying: cabal-install-setup.unbounded-delays~>unbounded-delays-0.1.0.9 (dependency of cabal-install-setup.tasty-0.11.0.3)
[345] trying: cabal-install-setup.optparse-applicative~>optparse-applicative-0.12.1.0 (dependency of cabal-install-setup.tasty-0.11.0.3)
[346] trying: cabal-install-setup.ansi-wl-pprint~>ansi-wl-pprint-0.6.7.3 (dependency of cabal-install-setup.optparse-applicative-0.12.1.0)
[347] trying: cabal-install-setup.ansi-wl-pprint-0.6.7.3:-example
[348] trying: cabal-install-setup.ansi-wl-pprint-0.6.7.3:+newbase
[349] trying: cabal-install-setup.regex-tdfa~>regex-tdfa-1.2.2 (dependency of cabal-install-setup.tasty-0.11.0.3)
[350] trying: cabal-install-setup.regex-tdfa-1.2.2:-devel
[351] trying: cabal-install-setup.parsec~>parsec-3.1.11 (dependency of cabal-install-setup.regex-tdfa-1.2.2)
[352] trying: cabal-install-setup.parsec-3.1.11:!test
[353] trying: cabal-install-setup.text~>text-1.2.2.1 (dependency of cabal-install-setup.parsec-3.1.11)
[354] trying: cabal-install-setup.text-1.2.2.1:!test
[355] trying: cabal-install-setup.text-1.2.2.1:-integer-simple
[356] trying: cabal-install-setup.text-1.2.2.1:-developer
[357] trying: cabal-install-setup.binary~>binary-0.8.3.0/installed-0.8... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[358] trying: cabal-install-setup.pretty~>pretty-1.1.3.3/installed-1.1... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[359] next goal: cabal-install-setup.containers (dependency of cabal-install-setup.Cabal-1.25.0.0)
[359] rejecting: cabal-install-setup.containers~>containers-0.5.7.1/installed-0.5... (cyclic dependencies; conflict set: unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays)
[185] fail (backjumping, conflict set: unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays)
[184] rejecting: unbounded-delays-setup.unbounded-delays-0.1.0.9 (multiple instances)
[184] rejecting: unbounded-delays-setup.unbounded-delays-0.1.0.8, unbounded-delays-setup.unbounded-delays-0.1.0.7, unbounded-delays-setup.unbounded-delays-0.1.0.6, unbounded-delays-setup.unbounded-delays-0.1.0.5, unbounded-delays-setup.unbounded-delays-0.1.0.4, unbounded-delays-setup.unbounded-delays-0.1.0.3, unbounded-delays-setup.unbounded-delays-0.1.0.2, unbounded-delays-setup.unbounded-delays-0.1.0.1, unbounded-delays-setup.unbounded-delays-0.1 (dependencies not linked: cannot make unbounded-delays-setup.unbounded-delays canonical member of {*unbounded-delays-0.1.0.9,unbounded-delays-setup.unbounded-delays-0.1.0.9}; conflict set: unbounded-delays, unbounded-delays-setup.tasty, unbounded-delays-setup.unbounded-delays)
[177] fail (backjumping, conflict set: unbounded-delays, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays)
[176] rejecting: unbounded-delays-setup.tasty-0.11.0.3 (multiple instances)
[176] rejecting: unbounded-delays-setup.tasty-0.11.0.2, unbounded-delays-setup.tasty-0.11.0.1, unbounded-delays-setup.tasty-0.11, unbounded-delays-setup.tasty-0.10.1.2, unbounded-delays-setup.tasty-0.10.1.1, unbounded-delays-setup.tasty-0.10.1, unbounded-delays-setup.tasty-0.10.0.4, unbounded-delays-setup.tasty-0.10.0.3, unbounded-delays-setup.tasty-0.10.0.2, unbounded-delays-setup.tasty-0.10.0.1, unbounded-delays-setup.tasty-0.10, unbounded-delays-setup.tasty-0.9.0.1, unbounded-delays-setup.tasty-0.8.1.3, unbounded-delays-setup.tasty-0.8.1.2, unbounded-delays-setup.tasty-0.8.1.1, unbounded-delays-setup.tasty-0.8.0.4, unbounded-delays-setup.tasty-0.8.0.2, unbounded-delays-setup.tasty-0.8, unbounded-delays-setup.tasty-0.7, unbounded-delays-setup.tasty-0.6, unbounded-delays-setup.tasty-0.5.2.1, unbounded-delays-setup.tasty-0.5.2, unbounded-delays-setup.tasty-0.5.1, unbounded-delays-setup.tasty-0.5, unbounded-delays-setup.tasty-0.4.2, unbounded-delays-setup.tasty-0.4.1.1, unbounded-delays-setup.tasty-0.4.0.1, unbounded-delays-setup.tasty-0.4, unbounded-delays-setup.tasty-0.3.1, unbounded-delays-setup.tasty-0.3, unbounded-delays-setup.tasty-0.2, unbounded-delays-setup.tasty-0.1.1, unbounded-delays-setup.tasty-0.1 (dependencies not linked: cannot make unbounded-delays-setup.tasty canonical member of {*tasty-0.11.0.3,unbounded-delays-setup.tasty-0.11.0.3}; conflict set: tasty, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.Cabal-1.25.0.0:test)
[176] fail (backjumping, conflict set: tasty, unbounded-delays, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays, unbounded-delays-setup.Cabal-1.25.0.0:test)
[175] rejecting: unbounded-delays-setup.tasty-hunit-0.9.2 (multiple instances)
[175] rejecting: unbounded-delays-setup.tasty-hunit-0.9.1, unbounded-delays-setup.tasty-hunit-0.9.0.1, unbounded-delays-setup.tasty-hunit-0.9, unbounded-delays-setup.tasty-hunit-0.8.0.1, unbounded-delays-setup.tasty-hunit-0.8, unbounded-delays-setup.tasty-hunit-0.4.1, unbounded-delays-setup.tasty-hunit-0.2, unbounded-delays-setup.tasty-hunit-0.1 (dependencies not linked: cannot make unbounded-delays-setup.tasty-hunit canonical member of {*tasty-hunit-0.9.2,unbounded-delays-setup.tasty-hunit-0.9.2}; conflict set: tasty-hunit, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.Cabal-1.25.0.0:test)
[173] fail (backjumping, conflict set: tasty, tasty-hunit, unbounded-delays, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays, unbounded-delays-setup.Cabal-1.25.0.0:test)
[172] rejecting: unbounded-delays-setup.tasty-quickcheck-0.8.4 (multiple instances)
[172] rejecting: unbounded-delays-setup.tasty-quickcheck-0.8.3.2, unbounded-delays-setup.tasty-quickcheck-0.8.3.1, unbounded-delays-setup.tasty-quickcheck-0.8.3, unbounded-delays-setup.tasty-quickcheck-0.8.2, unbounded-delays-setup.tasty-quickcheck-0.8.1, unbounded-delays-setup.tasty-quickcheck-0.8.0.3, unbounded-delays-setup.tasty-quickcheck-0.8, unbounded-delays-setup.tasty-quickcheck-0.3.1, unbounded-delays-setup.tasty-quickcheck-0.3, unbounded-delays-setup.tasty-quickcheck-0.2, unbounded-delays-setup.tasty-quickcheck-0.1 (dependencies not linked: cannot make unbounded-delays-setup.tasty-quickcheck canonical member of {*tasty-quickcheck-0.8.4,unbounded-delays-setup.tasty-quickcheck-0.8.4}; conflict set: tasty-quickcheck, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.Cabal-1.25.0.0:test)
[145] fail (backjumping, conflict set: tasty, tasty-hunit, tasty-quickcheck, unbounded-delays, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays, unbounded-delays-setup.Cabal-1.25.0.0:test)
[144] fail (backjumping, conflict set: Cabal, tasty, tasty-hunit, tasty-quickcheck, unbounded-delays, unbounded-delays-setup.Cabal, unbounded-delays-setup.tasty, unbounded-delays-setup.tasty-hunit, unbounded-delays-setup.tasty-quickcheck, unbounded-delays-setup.unbounded-delays, Cabal-1.25.0.0:test, unbounded-delays-setup.Cabal-1.25.0.0:test)
[143] rejecting: unbounded-delays-setup.Cabal-1.25.0.0 (multiple instances)
[143] trying: unbounded-delays-setup.Cabal-1.24.0.0/installed-1.2...
[144] trying: happy-setup.Cabal~>Cabal-1.25.0.0 (dependency of pretty-show-happy-exe.happy-1.19.5)
[145] rejecting: happy-setup.Cabal-1.25.0.0:!test (dependencies not linked: stanza TestStanzas incompatible; conflict set: Cabal, happy-setup.Cabal, Cabal-1.25.0.0:test, happy-setup.Cabal-1.25.0.0:test)
[145] trying: happy-setup.Cabal-1.25.0.0:*test
[146] trying: happy-setup.Cabal-1.25.0.0:-bundled-binary-generic
[147] trying: happy-setup.Cabal-1.25.0.0:-old-directory
[148] trying: cabal-install-setup.Cabal~>Cabal-1.25.0.0 (dependency of cabal-install-1.25.0.0)
[149] rejecting: cabal-install-setup.Cabal-1.25.0.0:!test (dependencies not linked: stanza TestStanzas incompatible; conflict set: Cabal, cabal-install-setup.Cabal, happy-setup.Cabal, Cabal-1.25.0.0:test, cabal-install-setup.Cabal-1.25.0.0:test, happy-setup.Cabal-1.25.0.0:test)
[149] trying: cabal-install-setup.Cabal-1.25.0.0:*test
[150] trying: cabal-install-setup.Cabal-1.25.0.0:-bundled-binary-generic
[151] trying: cabal-install-setup.Cabal-1.25.0.0:-old-directory
[152] trying: cabal-install-setup.exceptions~>exceptions-0.8.3 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[153] trying: cabal-install-setup.exceptions-0.8.3:!test
[154] trying: cabal-install-setup.mtl~>mtl-2.2.1 (dependency of cabal-install-setup.exceptions-0.8.3)
[155] trying: cabal-install-setup.transformers-compat~>transformers-compat-0.5.1.4 (dependency of cabal-install-setup.exceptions-0.8.3)
[156] trying: cabal-install-setup.transformers-compat-0.5.1.4:-two
[157] trying: cabal-install-setup.transformers-compat-0.5.1.4:+mtl
[158] trying: cabal-install-setup.transformers-compat-0.5.1.4:-three
[159] trying: cabal-install-setup.template-haskell~>template-haskell-2.11.0.0/installed-2.1... (dependency of cabal-install-setup.exceptions-0.8.3)
[160] trying: cabal-install-setup.ghc-boot-th~>ghc-boot-th-8.0.1/installed-8.0... (dependency of cabal-install-setup.template-haskell-2.11.0.0/installed-2.1...)
[161] trying: cabal-install-setup.stm~>stm-2.4.4.1 (dependency of cabal-install-setup.exceptions-0.8.3)
[162] trying: cabal-install-setup.old-time~>old-time-1.1.0.3 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[163] trying: cabal-install-setup.old-locale~>old-locale-1.0.0.7 (dependency of cabal-install-setup.old-time-1.1.0.3)
[164] trying: cabal-install-setup.regex-posix~>regex-posix-0.95.2 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[165] trying: cabal-install-setup.regex-posix-0.95.2:+newbase
[166] trying: cabal-install-setup.regex-posix-0.95.2:+splitbase
[167] trying: cabal-install-setup.regex-base~>regex-base-0.93.2 (dependency of cabal-install-setup.regex-posix-0.95.2)
[168] trying: cabal-install-setup.regex-base-0.93.2:+newbase
[169] trying: cabal-install-setup.regex-base-0.93.2:+splitbase
[170] trying: cabal-install-setup.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[171] trying: cabal-install-setup.QuickCheck~>QuickCheck-2.9.1 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[172] trying: cabal-install-setup.QuickCheck-2.9.1:!test
[173] trying: cabal-install-setup.QuickCheck-2.9.1:+templatehaskell
[174] trying: cabal-install-setup.tf-random~>tf-random-0.5 (dependency of cabal-install-setup.QuickCheck-2.9.1)
[175] trying: cabal-install-setup.primitive~>primitive-0.6.1.0 (dependency of cabal-install-setup.tf-random-0.5)
[176] trying: cabal-install-setup.primitive-0.6.1.0:!test
[177] trying: cabal-install-setup.random~>random-1.1 (dependency of cabal-install-setup.QuickCheck-2.9.1)
[178] trying: cabal-install-setup.random-1.1:!test
[179] trying: cabal-install-setup.tagged~>tagged-0.8.5 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[180] trying: cabal-install-setup.tagged-0.8.5:+transformers
[181] trying: cabal-install-setup.tagged-0.8.5:+deepseq
[182] trying: cabal-install-setup.tasty-quickcheck~>tasty-quickcheck-0.8.4 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[183] trying: cabal-install-setup.tasty-quickcheck-0.8.4:!test
[184] trying: cabal-install-setup.tasty-quickcheck-0.8.4:-old-quickcheck
[185] trying: cabal-install-setup.tasty-hunit~>tasty-hunit-0.9.2 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[186] trying: cabal-install-setup.tasty~>tasty-0.11.0.3 (dependency of cabal-install-setup.Cabal-1.25.0.0:*test)
[187] trying: cabal-install-setup.clock~>clock-0.7.2 (dependency of cabal-install-setup.tasty-0.11.0.3)
[188] trying: cabal-install-setup.clock-0.7.2:!test
[189] trying: cabal-install-setup.clock-0.7.2:-llvm
[190] trying: cabal-install-setup.ansi-terminal~>ansi-terminal-0.6.2.3 (dependency of cabal-install-setup.tasty-0.11.0.3)
[191] trying: cabal-install-setup.ansi-terminal-0.6.2.3:-example
[192] trying: cabal-install-setup.async~>async-2.1.0 (dependency of cabal-install-setup.tasty-0.11.0.3)
[193] trying: cabal-install-setup.async-2.1.0:!test
[194] trying: cabal-install-setup.unbounded-delays~>unbounded-delays-0.1.0.9 (dependency of cabal-install-setup.tasty-0.11.0.3)
[195] trying: cabal-install-setup.optparse-applicative~>optparse-applicative-0.12.1.0 (dependency of cabal-install-setup.tasty-0.11.0.3)
[196] trying: cabal-install-setup.ansi-wl-pprint~>ansi-wl-pprint-0.6.7.3 (dependency of cabal-install-setup.optparse-applicative-0.12.1.0)
[197] trying: cabal-install-setup.ansi-wl-pprint-0.6.7.3:-example
[198] trying: cabal-install-setup.ansi-wl-pprint-0.6.7.3:+newbase
[199] trying: cabal-install-setup.regex-tdfa~>regex-tdfa-1.2.2 (dependency of cabal-install-setup.tasty-0.11.0.3)
[200] trying: cabal-install-setup.regex-tdfa-1.2.2:-devel
[201] trying: cabal-install-setup.parsec~>parsec-3.1.11 (dependency of cabal-install-setup.regex-tdfa-1.2.2)
[202] trying: cabal-install-setup.parsec-3.1.11:!test
[203] trying: cabal-install-setup.text~>text-1.2.2.1 (dependency of cabal-install-setup.parsec-3.1.11)
[204] trying: cabal-install-setup.text-1.2.2.1:!test
[205] trying: cabal-install-setup.text-1.2.2.1:-integer-simple
[206] trying: cabal-install-setup.text-1.2.2.1:-developer
[207] trying: cabal-install-setup.unix~>unix-2.7.2.0/installed-2.7... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[208] trying: cabal-install-setup.binary~>binary-0.8.3.0/installed-0.8... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[209] trying: cabal-install-setup.directory~>directory-1.2.6.2/installed-1.2... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[210] trying: cabal-install-setup.time~>time-1.6.0.1/installed-1.6... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[211] trying: cabal-install-setup.pretty~>pretty-1.1.3.3/installed-1.1... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[212] trying: cabal-install-setup.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[213] trying: cabal-install-setup.containers~>containers-0.5.7.1/installed-0.5... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[214] trying: cabal-install-setup.bytestring~>bytestring-0.10.8.1/installed-0.1... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[215] trying: cabal-install-setup.array~>array-0.5.1.1/installed-0.5... (dependency of cabal-install-setup.Cabal-1.25.0.0)
[216] trying: happy-setup.exceptions~>exceptions-0.8.3 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[217] trying: happy-setup.exceptions-0.8.3:!test
[218] trying: happy-setup.mtl~>mtl-2.2.1 (dependency of happy-setup.exceptions-0.8.3)
[219] trying: happy-setup.transformers-compat~>transformers-compat-0.5.1.4 (dependency of happy-setup.exceptions-0.8.3)
[220] trying: happy-setup.transformers-compat-0.5.1.4:-two
[221] trying: happy-setup.transformers-compat-0.5.1.4:+mtl
[222] trying: happy-setup.transformers-compat-0.5.1.4:-three
[223] trying: happy-setup.stm~>stm-2.4.4.1 (dependency of happy-setup.exceptions-0.8.3)
[224] trying: happy-setup.regex-posix~>regex-posix-0.95.2 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[225] trying: happy-setup.regex-posix-0.95.2:+newbase
[226] trying: happy-setup.regex-posix-0.95.2:+splitbase
[227] trying: happy-setup.regex-base~>regex-base-0.93.2 (dependency of happy-setup.regex-posix-0.95.2)
[228] trying: happy-setup.regex-base-0.93.2:+newbase
[229] trying: happy-setup.regex-base-0.93.2:+splitbase
[230] trying: happy-setup.QuickCheck~>QuickCheck-2.9.1 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[231] trying: happy-setup.QuickCheck-2.9.1:!test
[232] trying: happy-setup.QuickCheck-2.9.1:+templatehaskell
[233] trying: happy-setup.tf-random~>tf-random-0.5 (dependency of happy-setup.QuickCheck-2.9.1)
[234] trying: happy-setup.primitive~>primitive-0.6.1.0 (dependency of happy-setup.tf-random-0.5)
[235] trying: happy-setup.primitive-0.6.1.0:!test
[236] trying: happy-setup.random~>random-1.1 (dependency of happy-setup.QuickCheck-2.9.1)
[237] trying: happy-setup.random-1.1:!test
[238] trying: happy-setup.tagged~>tagged-0.8.5 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[239] trying: happy-setup.tagged-0.8.5:+transformers
[240] trying: happy-setup.tagged-0.8.5:+deepseq
[241] trying: happy-setup.tasty-quickcheck~>tasty-quickcheck-0.8.4 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[242] trying: happy-setup.tasty-quickcheck-0.8.4:!test
[243] trying: happy-setup.tasty-quickcheck-0.8.4:-old-quickcheck
[244] trying: happy-setup.tasty-hunit~>tasty-hunit-0.9.2 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[245] trying: happy-setup.tasty~>tasty-0.11.0.3 (dependency of happy-setup.Cabal-1.25.0.0:*test)
[246] trying: happy-setup.unbounded-delays~>unbounded-delays-0.1.0.9 (dependency of happy-setup.tasty-0.11.0.3)
[247] trying: happy-setup.clock~>clock-0.7.2 (dependency of happy-setup.tasty-0.11.0.3)
[248] trying: happy-setup.clock-0.7.2:!test
[249] trying: happy-setup.clock-0.7.2:-llvm
[250] trying: happy-setup.ansi-terminal~>ansi-terminal-0.6.2.3 (dependency of happy-setup.tasty-0.11.0.3)
[251] trying: happy-setup.ansi-terminal-0.6.2.3:-example
[252] trying: happy-setup.async~>async-2.1.0 (dependency of happy-setup.tasty-0.11.0.3)
[253] trying: happy-setup.async-2.1.0:!test
[254] trying: happy-setup.optparse-applicative~>optparse-applicative-0.12.1.0 (dependency of happy-setup.tasty-0.11.0.3)
[255] trying: happy-setup.ansi-wl-pprint~>ansi-wl-pprint-0.6.7.3 (dependency of happy-setup.optparse-applicative-0.12.1.0)
[256] trying: happy-setup.ansi-wl-pprint-0.6.7.3:-example
[257] trying: happy-setup.ansi-wl-pprint-0.6.7.3:+newbase
[258] trying: happy-setup.regex-tdfa~>regex-tdfa-1.2.2 (dependency of happy-setup.tasty-0.11.0.3)
[259] trying: happy-setup.regex-tdfa-1.2.2:-devel
[260] trying: happy-setup.parsec~>parsec-3.1.11 (dependency of happy-setup.regex-tdfa-1.2.2)
[261] trying: happy-setup.parsec-3.1.11:!test
[262] trying: happy-setup.text~>text-1.2.2.1 (dependency of happy-setup.parsec-3.1.11)
[263] trying: happy-setup.text-1.2.2.1:!test
[264] trying: happy-setup.text-1.2.2.1:-integer-simple
[265] trying: happy-setup.text-1.2.2.1:-developer
[266] trying: unbounded-delays-setup.template-haskell~>template-haskell-2.11.0.0/installed-2.1... (dependency of unbounded-delays-0.1.0.9)
[267] trying: unbounded-delays-setup.ghc-boot-th~>ghc-boot-th-8.0.1/installed-8.0... (dependency of unbounded-delays-setup.template-haskell-2.11.0.0/installed-2.1...)
[268] trying: unbounded-delays-setup.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[269] trying: unbounded-delays-setup.unix~>unix-2.7.2.0/installed-2.7... (dependency of unbounded-delays-0.1.0.9)
[270] trying: unbounded-delays-setup.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[271] trying: unbounded-delays-setup.time~>time-1.6.0.1/installed-1.6... (dependency of unbounded-delays-0.1.0.9)
[272] trying: unbounded-delays-setup.process~>process-1.4.2.0/installed-1.4... (dependency of unbounded-delays-0.1.0.9)
[273] trying: unbounded-delays-setup.pretty~>pretty-1.1.3.3/installed-1.1... (dependency of unbounded-delays-0.1.0.9)
[274] trying: unbounded-delays-setup.old-time~>old-time-1.1.0.3 (dependency of unbounded-delays-0.1.0.9)
[275] trying: unbounded-delays-setup.old-locale~>old-locale-1.0.0.7 (dependency of unbounded-delays-setup.old-time-1.1.0.3)
[276] trying: unbounded-delays-setup.filepath~>filepath-1.4.1.0/installed-1.4... (dependency of unbounded-delays-0.1.0.9)
[277] trying: unbounded-delays-setup.directory~>directory-1.2.6.2/installed-1.2... (dependency of unbounded-delays-0.1.0.9)
[278] trying: unbounded-delays-setup.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of unbounded-delays-0.1.0.9)
[279] trying: unbounded-delays-setup.containers~>containers-0.5.7.1/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[280] trying: unbounded-delays-setup.bytestring~>bytestring-0.10.8.1/installed-0.1... (dependency of unbounded-delays-0.1.0.9)
[281] trying: unbounded-delays-setup.binary~>binary-0.8.3.0/installed-0.8... (dependency of unbounded-delays-0.1.0.9)
[282] trying: unbounded-delays-setup.array~>array-0.5.1.1/installed-0.5... (dependency of unbounded-delays-0.1.0.9)
[283] trying: happy-setup.rts~>rts-1.0/installedrts (dependency of happy-setup.base-4.9.0.0/installed-4.9...)
[284] trying: happy-setup.integer-gmp~>integer-gmp-1.0.0.1/installed-1.0... (dependency of happy-setup.base-4.9.0.0/installed-4.9...)
[285] trying: happy-setup.template-haskell~>template-haskell-2.11.0.0/installed-2.1... (dependency of pretty-show-happy-exe.happy-1.19.5)
[286] trying: happy-setup.ghc-boot-th~>ghc-boot-th-8.0.1/installed-8.0... (dependency of happy-setup.template-haskell-2.11.0.0/installed-2.1...)
[287] trying: happy-setup.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[288] trying: happy-setup.unix~>unix-2.7.2.0/installed-2.7... (dependency of pretty-show-happy-exe.happy-1.19.5)
[289] trying: happy-setup.transformers~>transformers-0.5.2.0/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[290] trying: happy-setup.time~>time-1.6.0.1/installed-1.6... (dependency of pretty-show-happy-exe.happy-1.19.5)
[291] trying: happy-setup.process~>process-1.4.2.0/installed-1.4... (dependency of pretty-show-happy-exe.happy-1.19.5)
[292] trying: happy-setup.pretty~>pretty-1.1.3.3/installed-1.1... (dependency of pretty-show-happy-exe.happy-1.19.5)
[293] trying: happy-setup.old-time~>old-time-1.1.0.3 (dependency of pretty-show-happy-exe.happy-1.19.5)
[294] trying: happy-setup.old-locale~>old-locale-1.0.0.7 (dependency of happy-setup.old-time-1.1.0.3)
[295] trying: happy-setup.filepath~>filepath-1.4.1.0/installed-1.4... (dependency of pretty-show-happy-exe.happy-1.19.5)
[296] trying: happy-setup.directory~>directory-1.2.6.2/installed-1.2... (dependency of pretty-show-happy-exe.happy-1.19.5)
[297] trying: happy-setup.deepseq~>deepseq-1.4.2.0/installed-1.4... (dependency of pretty-show-happy-exe.happy-1.19.5)
[298] trying: happy-setup.containers~>containers-0.5.7.1/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[299] trying: happy-setup.bytestring~>bytestring-0.10.8.1/installed-0.1... (dependency of pretty-show-happy-exe.happy-1.19.5)
[300] trying: happy-setup.binary~>binary-0.8.3.0/installed-0.8... (dependency of pretty-show-happy-exe.happy-1.19.5)
[301] trying: happy-setup.array~>array-0.5.1.1/installed-0.5... (dependency of pretty-show-happy-exe.happy-1.19.5)
[302] trying: cabal-install-setup.rts~>rts-1.0/installedrts (dependency of cabal-install-setup.base-4.9.0.0/installed-4.9...)
[303] trying: cabal-install-setup.integer-gmp~>integer-gmp-1.0.0.1/installed-1.0... (dependency of cabal-install-setup.base-4.9.0.0/installed-4.9...)
[304] trying: cabal-install-setup.ghc-prim~>ghc-prim-0.5.0.0/installed-0.5... (dependency of cabal-install-setup.base-4.9.0.0/installed-4.9...)
[305] trying: cabal-install-setup.filepath~>filepath-1.4.1.0/installed-1.4... (dependency of cabal-install-1.25.0.0)
[306] next goal: cabal-install-setup.process (dependency of cabal-install-1.25.0.0)
[306] trying: cabal-install-setup.process~>process-1.4.2.0/installed-1.4...
[307] done
Elaborating the install plan...
grayjay commented 8 years ago

Thanks. It looks like happy is a dependency of cabal-install, so there isn't a cycle. Here are the relevant lines:

[__0] trying: Cabal-1.25.0.0 (user goal)
[_16] trying: cabal-install-1.25.0.0 (user goal)
[_55] trying: cabal-install-1.25.0.0:*test
[_58] trying: pretty-show-1.6.12 (dependency of cabal-install-1.25.0.0:*test)
[_59] trying: pretty-show-happy-exe.happy-1.19.5 (dependency of pretty-show-1.6.12)
[216] trying: happy-setup.Cabal~>Cabal-1.25.0.0 (dependency of pretty-show-happy-exe.happy-1.19.5)

happy-setup.Cabal~>Cabal-1.25.0 means that happy's setup dependency is linked to the top-level Cabal goal.

I'm not sure how we should determine which goals should be built with the local version of a package. Does it make sense to always rank the local version last for setup dependencies and build tools? I can see how that behavior might be confusing if someone wanted to use the local version everywhere, though.

Preventing the linking wouldn't be enough to fix the problem, because we could remove the single instance restriction, which would allow the local version to be built twice.

ezyang commented 8 years ago

Clearly, there needs to be a way for a user to specify, in cabal.project, "Please ensure that this inplace package is used here." For non-qualified goals, this clearly always applies, because within the qualifier we are only allowed to pick one version of the package, and we must pick the local version. If a user is doing something tricky like vendoring something that is used for a setup script, they probably want to say they are explicitly doing it anyway.

Or we could consider the inverse: here the use of vendored Cabal is undesirable because we just wanted the vendored Cabal to be used as a library dependency for cabal-install, and nothing else. Perhaps Cabal is a special case and so we should put something in our cabal.project to prevent this from happening. But how do we specify such a constraint?

grayjay commented 8 years ago

I agree; there needs to be a way for the user to specify which version to use. I prefer always defaulting to the inplace package, because it's more consistent.

3502 discusses qualified constraints.

ezyang commented 8 years ago

Thanks, I'll close this for now.