Cannot build a hello world program with Stack because of flag bytestring--lt-0_10_4

匿名 (未验证) 提交于 2019-12-03 01:20:02

问题:

With a bare "hello world" project generated by

stack new myproject simple 

whenever I run stack setup, stack init or stack build I have the following error all the time:

Downloading lts-10.0 build plan Downloaded lts-10.0 build plan. AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\"" 

I saw some guys talk about the issue, and argue about whether it is accepted or not to have two sequential - in a flag name, that it is the fault of stack or cassava or cabal etc...

Someone constructively suggests a workaround with

stack upgrade 

However even after running stack upgrade command, I still have the issue. And I cannot build the "hello world" program.

Any idea how to fix this or workaround ?

I use NixOs, if there are solutions that works best with NixOs.

This is the output to stack --version:

Version 1.5.1 x86_64 Compiled with: - Cabal-1.24.2.0 - Glob-0.8.0 - HUnit-1.5.0.0 - MonadRandom-0.5.1 - QuickCheck-2.9.2 - SHA-1.6.4.2 - StateVar-1.1.0.4 - aeson-1.1.2.0 - aeson-compat-0.3.6 - annotated-wl-pprint-0.7.0 - ansi-terminal-0.6.3.1 - ansi-wl-pprint-0.6.7.3 - array-0.5.1.1 - asn1-encoding-0.9.5 - asn1-parse-0.9.4 - asn1-types-0.3.2 - async-2.1.1.1 - attoparsec-0.13.1.0 - attoparsec-iso8601-1.0.0.0 - auto-update-0.1.4 - base-4.9.1.0 - base-compat-0.9.3 - base-orphans-0.6 - base16-bytestring-0.1.1.6 - base64-bytestring-1.0.0.1 - bifunctors-5.4.2 - binary-0.8.3.0 - binary-tagged-0.1.4.2 - bitarray-0.0.1.1 - blaze-builder-0.4.0.2 - blaze-html-0.9.0.1 - blaze-markup-0.8.0.0 - byteable-0.1.1 - bytestring-0.10.8.1 - call-stack-0.1.0 - case-insensitive-1.2.0.10 - cereal-0.5.4.0 - clock-0.7.2 - comonad-5.0.2 - conduit-1.2.11 - conduit-extra-1.1.16 - connection-0.2.8 - constraints-0.9.1 - containers-0.5.7.1 - contravariant-1.4 - cookie-0.4.2.1 - cryptohash-0.11.9 - cryptohash-sha256-0.11.100.1 - cryptonite-0.23 - cryptonite-conduit-0.2.0 - data-default-class-0.1.2.0 - deepseq-1.4.2.0 - digest-0.0.1.2 - directory-1.3.0.0 - distributive-0.5.3 - dlist-0.8.0.3 - easy-file-0.2.1 - echo-0.1.3 - ed25519-0.0.5.0 - either-4.4.1.1 - errors-2.2.1 - exceptions-0.8.3 - extra-1.5.3 - fail-4.9.0.0 - fast-logger-2.4.10 - file-embed-0.0.10 - filelock-0.1.1.2 - filepath-1.4.1.1 - foundation-0.0.13 - free-4.12.4 - fsnotify-0.2.1.1 - generic-deriving-1.11.2 - generics-sop-0.3.1.0 - ghc-boot-th-8.0.2 - ghc-prim-0.5.0.0 - gitrev-1.3.1 - hackage-security-0.5.2.2 - hashable-1.2.6.1 - hastache-0.6.1 - hinotify-0.3.9 - hourglass-0.2.10 - hpack-0.18.1 - hpc-0.6.0.3 - hspec-2.4.4 - hspec-core-2.4.4 - hspec-discover-2.4.4 - hspec-expectations-0.8.2 - hspec-smallcheck-0.4.2 - http-api-data-0.3.7.1 - http-client-0.5.7.0 - http-client-tls-0.3.5.1 - http-conduit-2.2.3.2 - http-types-0.9.1 - ieee754-0.8.0 - integer-gmp-1.0.0.1 - integer-logarithms-1.0.2 - lifted-async-0.9.3 - lifted-base-0.2.3.11 - logict-0.6.0.2 - memory-0.14.6 - microlens-0.4.8.1 - microlens-mtl-0.1.11.0 - microlens-th-0.4.1.1 - mime-types-0.1.0.7 - mintty-0.1.1 - mmorph-1.0.9 - monad-control-1.0.2.2 - monad-logger-0.3.25 - monad-loops-0.4.3 - monad-unlift-0.2.0 - mono-traversable-1.0.2.1 - mtl-2.2.1 - nats-1.1.1 - network-2.6.3.2 - network-uri-2.6.1.0 - old-locale-1.0.0.7 - old-time-1.1.0.3 - open-browser-0.2.1.0 - optparse-applicative-0.13.2.0 - optparse-simple-0.0.3 - parsec-3.1.11 - path-0.5.13 - path-io-1.2.2 - path-pieces-0.2.1 - pem-0.2.2 - persistent-2.7.0 - persistent-sqlite-2.6.2 - persistent-template-2.5.2 - pid1-0.1.2.0 - prelude-extras-0.4.0.3 - pretty-1.1.3.3 - primitive-0.6.2.0 - process-1.4.3.0 - profunctors-5.2.1 - project-template-0.2.0 - quickcheck-io-0.2.0 - random-1.1 - regex-applicative-0.3.3 - regex-applicative-text-0.1.0.1 - resource-pool-0.2.3.2 - resourcet-1.1.9 - retry-0.7.4.2 - rts-1.0 - safe-0.3.15 - safe-exceptions-0.1.6.0 - scientific-0.3.5.2 - semigroupoids-5.2.1 - semigroups-0.18.3 - setenv-0.1.1.3 - silently-1.2.5 - smallcheck-1.1.2 - socks-0.5.5 - split-0.2.3.2 - stm-2.4.4.1 - stm-chans-3.0.0.4 - store-0.4.3.2 - store-core-0.4.1 - streaming-commons-0.1.17 - syb-0.7 - tagged-0.8.5 - tar-0.5.0.3 - template-haskell-2.11.1.0 - temporary-1.2.1.1 - text-1.2.2.2 - text-binary-0.2.1.1 - text-metrics-0.3.0 - tf-random-0.5 - th-expand-syns-0.4.3.0 - th-lift-0.7.7 - th-lift-instances-0.1.11 - th-orphans-0.13.4 - th-reify-many-0.1.8 - th-utilities-0.2.0.1 - time-1.6.0.1 - time-locale-compat-0.1.1.3 - tls-1.3.11 - transformers-0.5.2.0 - transformers-base-0.4.4 - transformers-compat-0.5.1.4 - unexceptionalio-0.3.0 - unicode-transforms-0.3.3 - unix-2.7.2.1 - unix-compat-0.4.3.1 - unix-time-0.3.7 - unordered-containers-0.2.8.0 - uri-bytestring-0.2.3.3 - uuid-types-1.0.3 - vector-0.12.0.1 - vector-algorithms-0.7.0.1 - vector-binary-instances-0.2.3.5 - void-0.7.2 - x509-1.7.2 - x509-store-1.6.5 - x509-system-1.6.6 - x509-validation-1.6.9 - yaml-0.8.23.3 - zip-archive-0.3.1.1 - zlib-0.6.1.2 

回答1:

For bypassing the issue with the cassava flag:

Use --nix and --resolver with a former lts version for stack commands:

stack new myproject --nix --resolver lts-9.14 stack setup --nix --resolver lts-9.14 stack build --nix --resolver lts-9.14 

It is not necessary, but so as to install a more recent version of stack.

First, we have to add the nixos-unstable channel so as to pick a more recent version of stack from it:

nix-channel --add 'https://nixos.org/channels/nixos-unstable' unstable nix-channel --update 

Then, update the nixos configuration.nix file so as to install the unstable version of stack:

{ config, pkgs, ... }:   let       unstable = import <unstable> {};   in {       environment.systemPackages = [ unstable.stack ]; } 

and rebuild the system:

$ nixos-rebuild reboot 


回答2:

Short answer: Upgrade stack using:

nix-channel --add 'https://nixos.org/channels/unstable' unstable nix-channel --update nix-env -iA unstable.stack 

Long answer:

The issue here is, as you have correctly identified, the double -- in the flag you mentioned. See this issue for details.

The recommendations you have got, upgrading stack, are good.

The only thing you seem to be missing is how to upgrade stack on your NixOS.

Here's how to do it if you use nix-channels:

% nix-channel --list nixpkgs https://nixos.org/channels/nixos-17.09  % nix-channel --add 'https://nixos.org/channels/nixpkgs-unstable' unstable  % nix-channel --list nixpkgs https://nixos.org/channels/nixos-17.09 unstable https://nixos.org/channels/nixpkgs-unstable  % nix-channel --update downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixos/17.09/nixos-17.09.2476.53e6d671a96/nixexprs.tar.xz’... downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixos/17.09/nixos-17.09.2476.53e6d671a96/nixexprs.tar.xz’... [0/0 KiB, 0.0 KiB/s] downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-18.03pre123609.93829f1b031/nixexprs.tar.xz’... downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-18.03pre123609.93829f1b031/nixexprs.tar.xz’... [0/0 KiB, 0.0 KiB/s] unpacking channels... created 7 symlinks in user environment  % nix-env -iA unstable.stack installing ‘stack-1.6.3’ these derivations will be built:   /nix/store/d0laffx9yarcb6r243pfcd2xyvmxylgn-remove-references-to.drv   /nix/store/6da8kmc6pdxzgmi4bpahwckl8y6ify1z-stack-1.6.3.drv these paths will be fetched (218.74 MiB download, 2452.84 MiB unpacked):   ... 

In the above, I have added the unstable NixOS release, and then I fetched its contents and installed stack from it using nix-env -iA unstable.stack.

That gets me stack-1.6.3 as of writing (as opposed from release-17.09, which has stack-1.5.1).



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!