<div dir="ltr"><br><br><div class="gmail_quote">On Thu, Mar 26, 2015 at 11:40 AM Erik Hesselink <<a href="mailto:hesselink@gmail.com">hesselink@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, Mar 23, 2015 at 6:44 AM, Mark Lentczner<br>
<<a href="mailto:mark.lentczner@gmail.com" target="_blank">mark.lentczner@gmail.com</a>> wrote:<br>
<br>
> 7. Cabal incompatible API change<br>
> In particular, the api that a custom Setup.hs uses.<br>
> Distribution.Simple.UserHooks changed the type of a hook. It should not, it<br>
> should have added another to do what it wanted. The poblem is you can't use<br>
> CPP in Setup.hs. And so now anyone using the testHook hook is in a pickle:<br>
> Your Setup.hs can't work in both 7.10 and 7.8!<br>
<br>
It can, but it's a bit tricky. When this happened before, people used<br>
a type class with two instances, where one of them filled in a default<br>
argument, IIRC. I can't find the exact code now, perhaps others<br>
remember this better.<br>
<br><br></blockquote><div><br></div><div>I wrote a blog post in June of last year[1] and was told that some of those tricks are used to Cabal files. I also don't have a link to a real example, but the blog post may help.</div><div><br></div><div>Michael</div><div><br></div><div>[1] <a href="http://www.yesodweb.com/blog/2014/06/evil-conditional-compile">http://www.yesodweb.com/blog/2014/06/evil-conditional-compile</a> </div></div></div>