<p>Cabal doesn&#39;t play well with version constraints on the template-haskell package - it doesn&#39;t know it can&#39;t reinstall template-haskell.</p>
<p>The workaround is to figure out why QuickCheck has version constraints on template-haskell and solve that problem in the QuickCheck package a different way - perhaps with CPP conditonal compilation macros - and then remove the problematic version constraints.</p>

<div class="gmail_quote">On Jul 17, 2012 11:44 AM, &quot;Alexander Foremny&quot; &lt;<a href="mailto:alexanderforemny@gmail.com">alexanderforemny@gmail.com</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear Levent,<br>
<br>
unfortunately I am at a loss here. As far as I understand it this<br>
should be fixed in QuickCheck&#39;s .cabal file or on Hackage. But I am<br>
not experienced enough to decide.<br>
<br>
You best wait for someone else to comment on this. Depending on<br>
template-haskell in your .cabal file is not the way to go as far as I<br>
understand it. But maybe it&#39;s a possible work-around in case you<br>
depend on the package being available on Hackage timely.<br>
<br>
Regards,<br>
Alexander Foremny<br>
<br>
2012/7/17 Levent Erkok &lt;<a href="mailto:erkokl@gmail.com">erkokl@gmail.com</a>&gt;:<br>
&gt; It builds fine locally on my box; but not on hackage. Here&#39;s the page:<br>
&gt; <a href="http://hackage.haskell.org/package/sbv-2.2" target="_blank">http://hackage.haskell.org/package/sbv-2.2</a><br>
&gt;<br>
&gt; Thanks for looking into this Alexander, I appreciate your help.<br>
&gt;<br>
&gt; -Levent.<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Jul 17, 2012 at 9:09 AM, Alexander Foremny<br>
&gt; &lt;<a href="mailto:alexanderforemny@gmail.com">alexanderforemny@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Which package are you trying to build? Is it a local package that<br>
&gt;&gt; fails to build or something on Hackage? Its .cabal file or at least<br>
&gt;&gt; full dependencies would be of interest.<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; Alexander Foremny<br>
&gt;&gt;<br>
&gt;&gt; 2012/7/17 Levent Erkok &lt;<a href="mailto:erkokl@gmail.com">erkokl@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; Thanks Alexander. However, I&#39;m not sure how to use the workaround<br>
&gt;&gt; &gt; described<br>
&gt;&gt; &gt; so I can get hackage to properly compile my package. It sounds like I<br>
&gt;&gt; &gt; have<br>
&gt;&gt; &gt; to add a &quot;template-haskell &gt;= 2.7.0.0&quot;  dependency to my own cabal file,<br>
&gt;&gt; &gt; which sounds like the wrong thing to do in the long-run.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Is there something that can be done on the hackage/ghc side to avoid<br>
&gt;&gt; &gt; this<br>
&gt;&gt; &gt; issue? Or something less drastic than adding a template-haskell<br>
&gt;&gt; &gt; dependency<br>
&gt;&gt; &gt; on my own package&#39;s cabal file?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; -Levent.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Tue, Jul 17, 2012 at 7:31 AM, Alexander Foremny<br>
&gt;&gt; &gt; &lt;<a href="mailto:alexanderforemny@gmail.com">alexanderforemny@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Dear Levent,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I think this [1] could be related.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt; Alexander Foremny<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; PS. Sent this to Levent directly. Here&#39;s a copy for the mailing list.<br>
&gt;&gt; &gt;&gt; Sorry for the noise.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; [1]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; <a href="http://haskell.1045720.n5.nabble.com/Bad-interface-problem-td5714184.html" target="_blank">http://haskell.1045720.n5.nabble.com/Bad-interface-problem-td5714184.html</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; ---------- Forwarded message ----------<br>
&gt;&gt; &gt;&gt; From: Alexander Foremny &lt;<a href="mailto:alexanderforemny@gmail.com">alexanderforemny@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; Date: 2012/7/17<br>
&gt;&gt; &gt;&gt; Subject: Re: [Haskell-cafe] hackage compile failure with QuickCheck 2.5<br>
&gt;&gt; &gt;&gt; To: Levent Erkok &lt;<a href="mailto:erkokl@gmail.com">erkokl@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Dear Levent,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I think this [1] could be related.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt; Alexander Foremny<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; [1]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; <a href="http://haskell.1045720.n5.nabble.com/Bad-interface-problem-td5714184.html" target="_blank">http://haskell.1045720.n5.nabble.com/Bad-interface-problem-td5714184.html</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2012/7/17 Levent Erkok &lt;<a href="mailto:erkokl@gmail.com">erkokl@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt; [This message is more appropriate for a hackage mailing list I<br>
&gt;&gt; &gt;&gt; &gt; presume,<br>
&gt;&gt; &gt;&gt; &gt; but<br>
&gt;&gt; &gt;&gt; &gt; that doesn&#39;t seem to exist. Let me know if there&#39;s a better place to<br>
&gt;&gt; &gt;&gt; &gt; send<br>
&gt;&gt; &gt;&gt; &gt; it.]<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I&#39;m having a hackage compile failure for a newly uplodaded package<br>
&gt;&gt; &gt;&gt; &gt; that<br>
&gt;&gt; &gt;&gt; &gt; has<br>
&gt;&gt; &gt;&gt; &gt; a QuickCheck 2.5 dependence. The error message is:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; [13 of 13] Compiling Test.QuickCheck.All ( Test/QuickCheck/All.hs,<br>
&gt;&gt; &gt;&gt; &gt; dist/build/Test/QuickCheck/All.o )<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Test/QuickCheck/All.hs:15:1:<br>
&gt;&gt; &gt;&gt; &gt;     Bad interface file:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; /usr/local/tmp/archive/install/lib/template-haskell-2.6.0.0/ghc-7.4.1/Language/Haskell/TH.hi<br>
&gt;&gt; &gt;&gt; &gt;         Something is amiss; requested module<br>
&gt;&gt; &gt;&gt; &gt; template-haskell-2.6.0.0:<a href="http://Language.Haskell.TH" target="_blank">Language.Haskell.TH</a> differs from name found<br>
&gt;&gt; &gt;&gt; &gt; in<br>
&gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt; interface file template-haskell:<a href="http://Language.Haskell.TH" target="_blank">Language.Haskell.TH</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; The full log file is at (search for &quot;Something is a miss&quot; in it):<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; <a href="http://hackage.haskell.org/packages/archive/sbv/2.2/logs/failure/ghc-7.4" target="_blank">http://hackage.haskell.org/packages/archive/sbv/2.2/logs/failure/ghc-7.4</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Needless to say, I don&#39;t see this problem when I compile this package<br>
&gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt; home with the same compiler (ghc 7.4.1) as hackage is using; also<br>
&gt;&gt; &gt;&gt; &gt; Hackage<br>
&gt;&gt; &gt;&gt; &gt; has a successfully compiled QuickCheck 2.5 package.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Could it be something related to the particular cabal/ghc<br>
&gt;&gt; &gt;&gt; &gt; installation<br>
&gt;&gt; &gt;&gt; &gt; on<br>
&gt;&gt; &gt;&gt; &gt; the hackage server? In particular, I don&#39;t understand why it picks<br>
&gt;&gt; &gt;&gt; &gt; template-haskell 2.6.0.0 when there&#39;s a newer version (2.7.0.0). As<br>
&gt;&gt; &gt;&gt; &gt; far<br>
&gt;&gt; &gt;&gt; &gt; as I<br>
&gt;&gt; &gt;&gt; &gt; can see, QuickCheck doesn&#39;t put an upper limit on its template<br>
&gt;&gt; &gt;&gt; &gt; haskell<br>
&gt;&gt; &gt;&gt; &gt; version dependency.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I&#39;d appreciate any pointers with this. (Googling and questions on the<br>
&gt;&gt; &gt;&gt; &gt; #haskell irc channel didn&#39;t help much, unfortunately.)<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; -Levent.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt; Haskell-Cafe mailing list<br>
&gt;&gt; &gt;&gt; &gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; &gt;&gt; &gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; &gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<br>
&gt;<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div>