Hi,<br><br>I&#39;m bringing up an old thread, because it&#39;s very relevant to my problem.<br><br><div class="gmail_quote">On Tue, Nov 18, 2008 at 22:30, Duncan Coutts<span dir="ltr"></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Tue, 2008-11-18 at 01:48 -0800, Jason Dusek wrote:<br>
&gt; I&#39;d like to be able to do something like:<br>
&gt;<br>
&gt; &nbsp; &nbsp; if (template-haskell &lt; 2.3)<br>
&gt; &nbsp; &nbsp; &nbsp; cpp-options: -D TH_THE_YOUNGER<br>
&gt; &nbsp; &nbsp; else<br>
&gt; &nbsp; &nbsp; &nbsp; cpp-options: -D TH_THE_ELDER<br>
&gt;<br>
&gt; &nbsp; I guess this kind of thing is not possible at present?<br>
<br>
</div>It is possible, in two different ways.<br>
<br>
The easiest way is that if you&#39;re using Cabal-1.6 then it provides cpp<br>
macros to test the version number of packages you&#39;re using.<br>
<br>
#if MIN_VERSION_template_haskell(2,3,0)<br>
...<br>
#elseif<br>
...<br>
#endif<br>
<br>
The alternative that works back to Cabal-1.2 is to use:<br>
<br>
flag newer-th<br>
<br>
...<br>
 &nbsp;if flag(newer-th)<br>
 &nbsp; &nbsp;build-depends: template-haskell &gt;= 2.3<br>
 &nbsp; &nbsp;cpp-options: -D TH_THE_ELDER<br>
 &nbsp;else<br>
 &nbsp; &nbsp;build-depends: template-haskell &lt; 2.3<br>
<div class="Ih2E3d"> &nbsp; &nbsp;cpp-options: -D TH_THE_YOUNGER<br></div></blockquote></div><br>Either I&#39;m doing something wrong or this doesn&#39;t work for cabal-install and GHC 6.8.3. I used the &quot;flag newer-th&quot; approach in EMGM:<br>
<br>&nbsp; <a href="https://svn.cs.uu.nl:12443/viewvc/dgp-haskell/EMGM/tags/emgm-0.2/emgm.cabal?view=markup">https://svn.cs.uu.nl:12443/viewvc/dgp-haskell/EMGM/tags/emgm-0.2/emgm.cabal?view=markup</a><br><br><span style="font-family: courier new,monospace;">[...]</span><br style="font-family: courier new,monospace;">
<br><span style="font-family: courier new,monospace;">flag th23</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;  description:          Define a CPP flag that enables conditional compilation<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for template-haskell package version 2.3 and newer.</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Library</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; [...]</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;  build-depends:        base &gt;= 3.0 &amp;&amp; &lt; 4.0,</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                       template-haskell &lt; 2.4</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; -- Include deriveRep for Loc. This was introduced with</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;  -- template-haskell-2.3, included with GHC 6.10.</span><span style="font-family: courier new,monospace;"><br>&nbsp; if flag(th23)</span><span style="font-family: courier new,monospace;"><br>
&nbsp;&nbsp;&nbsp; build-depends:      template-haskell &gt;= 2.3</span><span style="font-family: courier new,monospace;"><br>&nbsp;&nbsp;&nbsp; cpp-options:        -DTH_LOC_DERIVEREP</span><span style="font-family: courier new,monospace;"><br>&nbsp; else</span><span style="font-family: courier new,monospace;"><br>
&nbsp;&nbsp;&nbsp; build-depends:      template-haskell &lt; 2.3</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; [...]</span><br style="font-family: courier new,monospace;">
<br>When I run <span style="font-family: courier new,monospace;">cabal install emgm</span> (with GHC 6.8.3 and either Cabal 1.2 or 1.6), it tries (and fails) to install template-haskell-2.3. That&#39;s exactly what I don&#39;t want. Any suggestions?<br>
<br>Thanks,<br>Sean<br>