<p dir="ltr">That's right, the template-haskell API frequently changes between major releases of GHC.</p>
<br><div class="gmail_quote"><div dir="ltr">On Tue, Dec 12, 2017, 4:35 PM Baa <<a href="mailto:aquagnu@gmail.com">aquagnu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">@Michael Snoyman:<br>
<br>
I returned back all .cabal-files and added compiler: ghc-8.2.2, `stack build`<br>
printed out this:<br>
<br>
---cut---<br>
  Error: While constructing the build plan, the following exceptions were encountered:<br>
<br>
  In the dependencies for Cabal-1.24.2.0:<br>
      process-1.6.1.0 from stack configuration does not match >=1.1.0.1 && <1.5 (latest matching version is 1.4.3.0)<br>
  needed due to my-common-utils-0.2.0.0 -> Cabal-1.24.2.0<br>
<br>
  In the dependencies for versions-3.1.1:<br>
      base-4.10.1.0 from stack configuration does not match >=4.8 && <4.10 (latest matching version is 4.9.1.0)<br>
  needed due to my-common-utils-0.2.0.0 -> versions-3.1.1<br>
<br>
  Some potential ways to resolve this:<br>
<br>
    * Recommended action: try adding the following to your extra-deps in /home/pavel/prj/automation/revcompl-mon/stack.yaml:<br>
<br>
  - base-4.9.1.0<br>
  - process-1.4.3.0<br>
<br>
    * Set 'allow-newer: true' to ignore all version constraints and build anyway.<br>
<br>
    * You may also want to try using the 'stack solver' command.<br>
<br>
  Plan construction failed.<br>
---cut---<br>
<br>
After adding "allow-newer: true" build process starts, all looked fine until:<br>
<br>
   .../SimpleTagging.hs:281:51: error:<br>
        • Couldn't match type ‘Type’ with ‘DerivClause’<br>
          Expected type: [DerivClause]<br>
            Actual type: [Type]<br>
        • In the sixth argument of ‘DataD’, namely ‘derivs'’<br>
          In the expression: DataD [] ty' tyVars Nothing newCs derivs'<br>
          In the first argument of ‘(++)’, namely<br>
            ‘[DataD [] ty' tyVars Nothing newCs derivs']’<br>
        |<br>
    281 |       return $ [DataD [] ty' tyVars Nothing newCs derivs'] ++ showInst<br>
        |                                                   ^^^^^^^<br>
<br>
which IMHO means that TemplateHaskell ("API") was changed from 8.0.2 to<br>
8.2.2 because the same code is compiling with old GHC 8.0.2.<br>
<br>
<br>
> Hi Paul,<br>
><br>
> A Stackage snapshot specifies both a GHC version and a set of<br>
> packages. Stackage snapshots are built and tested to ensure that the<br>
> packages are compatible. While you could tell Stack to use a<br>
> different GHC version with a snapshot[1], this is unlikely to work,<br>
> since GHC major releases usually break some packages.<br>
><br>
> I think everyone who's trying to help you (both with Cabal and Stack<br>
> workflows) would be able to do so better if you explain which package<br>
> you're trying to use which is no longer available in Stackage<br>
> Nightly. In some cases, you can simply add it as an extra<br>
> dependencies for Stack (e.g., `extra-deps: [acme-missiles-0.3]`),<br>
> while in others there is some inherent incompatibility.<br>
><br>
> Right now, you'll just be getting guesses about how to theoretically<br>
> get some unknown package to build with a bunch of others.<br>
><br>
> Michael<br>
><br>
> [1] Using a setting like `compiler: ghc-8.2.2`<br>
><br>
> On Tue, Dec 12, 2017 at 3:43 PM, Baa <<a href="mailto:aquagnu@gmail.com" target="_blank">aquagnu@gmail.com</a>> wrote:<br>
><br>
> > @David: I tried to switch to nightly but in project's .yaml file and<br>
> > got error about missing of some library (as I understand, it is<br>
> > missing in last nightly). So, if I try to do it through .yaml file<br>
> > then how to use new GHC (8.2.2) but with LTS for 8.0.2? Is it<br>
> > possible? I need last stable LTS where all libraries (using in the<br>
> > projects) exist, but with new GHC 8.2.2 which is too new for stable<br>
> > LTS. As I read somewhere, GHC version and Stackage version are<br>
> > linked together hardly in stack tool, or?<br>
> ><br>
> > > You can see how to configure stack here:<br>
> > > <a href="https://github.com/commercialhaskell/stack/blob/release/doc/yaml_" rel="noreferrer" target="_blank">https://github.com/commercialhaskell/stack/blob/release/doc/yaml_</a><br>
> > <a href="http://configuration.md" rel="noreferrer" target="_blank">configuration.md</a><br>
> > ><br>
> > > The short of it is that to have stack ghci choose a particular<br>
> > > version of ghc, you probably need to modify<br>
> > > ~/.stack/global/stack.yaml, change resolver to something here<br>
> > > <a href="https://www.stackage.org/snapshots" rel="noreferrer" target="_blank">https://www.stackage.org/snapshots</a> that has your version of ghc<br>
> > > and dependencies similar to what your project wants.  For example<br>
> > > 'nightly-2017-12-10'.<br>
> > ><br>
> > > On Tue, Dec 12, 2017 at 7:53 AM, Baa <<a href="mailto:aquagnu@gmail.com" target="_blank">aquagnu@gmail.com</a>> wrote:<br>
> > ><br>
> > > > @Francesco: unfortunately nightly misses some package. So, I<br>
> > > > tried:<br>
> > > ><br>
> > > >   $ stack --resolver=ghc-8.2.2 setup --reinstall<br>
> > > >   Preparing to install GHC (tinfo6) to an isolated location.<br>
> > > > This will not interfere with any system-level installation.<br>
> > > > Already downloaded. Installed GHC.<br>
> > > ><br>
> > > >   stack will use a sandboxed GHC it installed<br>
> > > >   For more information on paths, see 'stack path' and 'stack<br>
> > > > exec env' To use this GHC and packages outside of a project,<br>
> > > > consider using: stack ghc, stack ghci, stack runghc, or stack<br>
> > > > exec<br>
> > > ><br>
> > > > So seems that 8.2.2 was installed, right? But how to build the<br>
> > > > project with new GHC now? I never used cabal before, `stack<br>
> > > > ghci` still runs 8.0.2 instead of 8.2.2. Installed GHC 8.2.2<br>
> > > > does not correspond to .yaml file LTS - maybe this is a reason<br>
> > > > why old 8.0.2 is stil used...<br>
> > > ><br>
> > > > When I try cabal build/new-build/repl I get:<br>
> > > ><br>
> > > >   cabal: The program 'ghc' version >=6.4 is required but it<br>
> > > > could not be found.<br>
> > > ><br>
> > > > So, cabal does not know about installed GHC versions (at least<br>
> > > > 8.0.2, used by stack). I tried --require-sandbox but without<br>
> > > > success.<br>
> > > ><br>
> > > ><br>
> > > > > On Tue, Dec 12, 2017 at 01:56:03PM +0200, Baa wrote:<br>
> > > > > > Would somebody explain me what is wrong here and how I can<br>
> > > > > > test a project with new 8.2.2 GHC?<br>
> > > > ><br>
> > > > > Hello Paul, I don't think stack lts has 8.2.2 just yet. Use a<br>
> > > > > nightly or download/install ghc from here and compile your<br>
> > > > > project with the new `cabal new-build`.<br>
> > > > ><br>
> > > > > [1]<br>
> > > > > <a href="https://www.haskell.org/ghc/download_ghc_8_2_2.html#binaries" rel="noreferrer" target="_blank">https://www.haskell.org/ghc/download_ghc_8_2_2.html#binaries</a><br>
> > > > ><br>
> > > > ><br>
> > > > > _______________________________________________<br>
> > > > > Beginners mailing list<br>
> > > > > <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
> > > > > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
> > > ><br>
> > > > _______________________________________________<br>
> > > > Beginners mailing list<br>
> > > > <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
> > > > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
> > > ><br>
> ><br>
> > _______________________________________________<br>
> > Beginners mailing list<br>
> > <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
> > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
> ><br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div>