agentm / project-m36

Project: M36 Relational Algebra Engine
The Unlicense
894 stars 48 forks source link

Win10 Build Issue #253

Closed ValeTheVioletMote closed 4 years ago

ValeTheVioletMote commented 4 years ago

Apologies if this is entirely ignorant, new to Haskell as of this project. Big fan of Date and wanted to try this out.

Actively working through my problems, but I did come across this:

C:\gerk\project-m36>stack --skip-msys --stack-yaml stack.ghc8.0.yaml build

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter
         * C:\gerk\project-m36\test\TutorialD\Interpreter.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter.Import.TutorialD

         * C:\gerk\project-m36\test\TutorialD\Interpreter\Import\TutorialD.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter\Import\TutorialD.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter
         * C:\gerk\project-m36\test\TutorialD\Interpreter.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter.Import.TutorialD

         * C:\gerk\project-m36\test\TutorialD\Interpreter\Import\TutorialD.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter\Import\TutorialD.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter
         * C:\gerk\project-m36\test\TutorialD\Interpreter.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter.Import.TutorialD

         * C:\gerk\project-m36\test\TutorialD\Interpreter\Import\TutorialD.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter\Import\TutorialD.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter
         * C:\gerk\project-m36\test\TutorialD\Interpreter.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter.Import.TutorialD

         * C:\gerk\project-m36\test\TutorialD\Interpreter\Import\TutorialD.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter\Import\TutorialD.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter
         * C:\gerk\project-m36\test\TutorialD\Interpreter.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter.Import.TutorialD

         * C:\gerk\project-m36\test\TutorialD\Interpreter\Import\TutorialD.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter\Import\TutorialD.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter
         * C:\gerk\project-m36\test\TutorialD\Interpreter.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter.hs

Warning: There were multiple candidates for the Cabal entry " TutorialD.Interpreter.Import.TutorialD

         * C:\gerk\project-m36\test\TutorialD\Interpreter\Import\TutorialD.hs
         picking: C:\gerk\project-m36\src\bin\TutorialD\Interpreter\Import\TutorialD.hs
WARNING: Ignoring out of range dependency (allow-newer enabled): Win32-2.3.1.1. project-m36 requires: >=2.5.4.1
WARNING: Ignoring out of range dependency (allow-newer enabled): primitive-0.6.1.0. deferred-folds requires: >=0.6.4 && <0.7
WARNING: Ignoring out of range dependency (allow-newer enabled): distributed-process-0.6.6. project-m36 requires: >=0.7.4
WARNING: Ignoring out of range dependency (allow-newer enabled): distributed-process-async-0.2.4. project-m36 requires: >=0.2.4.1
WARNING: Ignoring out of range dependency (allow-newer enabled): ghc-8.0.2. project-m36 requires: >=8.2 && <8.7
WARNING: Ignoring out of range dependency (allow-newer enabled): network-transport-tcp-0.5.1. project-m36 requires: >=0.6.0
WARNING: Ignoring out of range dependency (allow-newer enabled): aeson-1.2.1.0. scotty requires: >=0.6.2.1 && <1.2
WARNING: Ignoring out of range dependency (allow-newer enabled): stm-containers-0.2.15. project-m36 requires: >=1.0.0

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for project-m36-0.7:
    parser-combinators needed, but the stack configuration has no specified version  (latest
                       matching version is 1.2.1)
needed since project-m36 is a build target.

Some different approaches to resolving this:

  * Consider trying 'stack solver', which uses the cabal-install solver to attempt to find some
    working build configuration. This can be convenient when dealing with many complicated
    constraint errors, but results may be unpredictable.

  * Recommended action: try adding the following to your extra-deps
    in C:\gerk\project-m36\stack.ghc8.0.yaml:

parser-combinators-1.2.1@sha256:16c3490e007ec10b1255a2b36fb483d000156d555269107131241d9e0fa96412

Plan construction failed.

This is a fresh clone as of an hour ago.

I'll try the suggestions. Just unsure of what I'm doing and if I missed something obvious.

I installed the full Haskell Platform, which is why I believe I can skip mysys. If that's my problem, please let me know.

ValeTheVioletMote commented 4 years ago

Oh, the docs said to use stack.ghc8.0.yaml, but now I see stack.ghc8.6.yaml ... Giving that a go.

ValeTheVioletMote commented 4 years ago

I cannot skip msys. Running with stack --stack-yaml stack.ghc8.6.yaml build worked.

Possible that the docs need updated. Otherwise, feel free to close.

agentm commented 4 years ago

Sorry about the build issues, but thanks for putting in the extra effort to get Project:M36 working. I will certainly fix the documentation.

I have not been particularly good about making binary releases because I can't gauge if there would be interest. Given the option to download some console-based binaries, would you have chosen to download the binary in lieu of building from source?

I ask because I suspect that the majority of the current user base is likely comfortable with Haskell and using Project:M36 as a library rather than a TutorialD platform, but I would like to expand the base further. What do you think?

ValeTheVioletMote commented 4 years ago

@agentm

No problem at all.. Gave me a little experience with Haskell's tooling.

I only bothered with the Windows build because I thought there was a GUI. (And if there is one, forgive me, I didn't see it...)

I would've downloaded the binary first, correct. I noticed there was one out there, but it was 800+ commits behind master. Fair assumption that it probably wasn't up to date, I'd say...

As for your last question, I don't know how much of a userbase I represent. I've just been walking down the list of https://en.wikipedia.org/wiki/D_(data_language_specification)#Implementations looking to see if anyone has come up with an option where I can connect to their impl via something analogous to a *dbc driver.

I was drawn in by "Project:M36 can be used as an in-process or remote DBMS." Looks like that's Haskell -> Haskell though, as you mentioned? Which is perfectly fine. I may be a niche or looking for a miracle. My best bet may be to see what I can do with Reldb, as the Tutorial D there seems more robust (I could absolutely be wrong.. this just seems very limited: https://github.com/agentm/project-m36/blob/master/docs/tutd_tutorial.markdown#extend)

This project seems fantastic and I wish you (and anyone else supporting D) the best.

Edit: I now see you have a major advantage over Rel with how you handle the NULL question. https://github.com/agentm/project-m36/blob/master/docs/on_null.markdown What a brilliant idea. This encourages me more to see what I can do with PM36.

ValeTheVioletMote commented 4 years ago

On that note, sounds like I need to check out https://github.com/agentm/project-m36/blob/master/docs/websocket_server.markdown though both of the example links result in 404. Looks like the docs need the paths updated.

agentm commented 4 years ago

Thanks for the reports, @ValeTheVioletMote. Indeed, the simple websocket web interface is a quick way to be able to use a GUI with Project:M36 and the JSON-based websocket API is great for getting data in-and-out of Haskell-land.

I patched the documentation so that the websocket links are no longer broken and that the intro material suggests using a later version of GHC.

If you wish to discuss Project:M36's design decisions, I invite you to join us on IRC: irc.freenode.net#project-m36. Optionally, you can join using freenode's web-based client.