GaloisInc / crucible

Crucible is a library for symbolic simulation of imperative programs
637 stars 42 forks source link

crux fails to build golang-0.1.0.0 #888

Closed sp1ff closed 2 years ago

sp1ff commented 3 years ago

New user here, following the "quickstart" guide. cabal new-build all fails while building golang-0.1.0.0:

Click to expand! ``` [5 of 6] Compiling Language.Go.Parser ( src/Language/Go/Parser.hs, /home/mgh/code/projects/crucible/dist-newstyle/build/x86_64-linux/ghc-8.10.7/golang-0.1.0.0/build/Language/Go/Parser.o, /home/mgh/code/projects/crucible/dist-newstyle/build/x86_64-linux/ghc-8.10.7/golang-0.1.0.0/build/Language/Go/Parser.dyn_o ) src/Language/Go/Parser.hs:199:50: error: • Couldn't match type ‘Data.Aeson.KeyMap.KeyMap Value’ with ‘HM.HashMap k0 Value’ Expected type: HM.HashMap k0 Value Actual type: Object • In the second argument of ‘HM.lookup’, namely ‘v’ In the expression: HM.lookup "value" v In the expression: case HM.lookup "value" v of Just (Object v') -> case HM.lookup "type" v' of Just "IOTA" -> return $ IdentExpr pos go_tp Nothing $ Ident IdentNoKind "IOTA" _ -> IdentExpr pos go_tp <$> v .:? "qualifier" <*> v .: "value" _ -> fail "" | 199 | "identifier" -> case HM.lookup "value" v of | ^ src/Language/Go/Parser.hs:200:55: error: • Couldn't match type ‘Data.Aeson.KeyMap.KeyMap Value’ with ‘HM.HashMap k1 a0’ Expected type: HM.HashMap k1 a0 Actual type: Object • In the second argument of ‘HM.lookup’, namely ‘v'’ In the expression: HM.lookup "type" v' In the expression: case HM.lookup "type" v' of Just "IOTA" -> return $ IdentExpr pos go_tp Nothing $ Ident IdentNoKind "IOTA" _ -> IdentExpr pos go_tp <$> v .:? "qualifier" <*> v .: "value" | 200 | Just (Object v') -> case HM.lookup "type" v' of | ^^ Installing bv-sized-1.0.3 (lib) Completed bv-sized-1.0.3 (lib) cabal: Failed to build golang-0.1.0.0 (which is required by exe:crux-go from crucible-go-0.1.0.0). ```
RyanGlScott commented 3 years ago

Thanks for the bug report. I thought I had fixed all of the aeson issues in #882, but I must have missed this one. As a workaround, you can either:

  1. Invoke cabal new-build all --constraint="aeson<2", or
  2. Build components besides crucible-go, as that is the only component that depends on the golang package.

Note that there is a separate repo for the golang package, so this issue probably should live there instead.

Lanninger08 commented 2 years ago

Hi @RyanGlScott , I have a similar problem when using cabal v2-build with the latest version of uc-crux-llvm. The following is the detailed information.

Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: crucible-go-0.1.0.0 (user goal)
[__1] unknown package: golang (dependency of crucible-go)
[__1] fail (backjumping, conflict set: crucible-go, golang)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: crucible-go, golang

I cloned and tried to build golang program but the problem still exists.

Sorry to interrupt, but do u have any ideas?

langston-barrett commented 2 years ago

@Lanninger08 Have you downloaded the git submodules? Try git submodule update --init. If that doesn't work, please open a new ticket describing what steps you've taken and what's not working.

Lanninger08 commented 2 years ago

@langston-barrett It works, thanks a lot! :)

faysalhossain2007 commented 2 years ago

t

Thanks! this also solve my problem. Maybe you can add it in the readme. In case others have the same issue?

langston-barrett commented 2 years ago

Thanks! this also solve my problem. Maybe you can add it in the readme. In case others have the same issue?

https://github.com/GaloisInc/crucible/pull/1030