Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issues with example? #186

Open
DrYSG opened this issue Feb 4, 2020 · 7 comments
Open

issues with example? #186

DrYSG opened this issue Feb 4, 2020 · 7 comments

Comments

@DrYSG
Copy link

DrYSG commented Feb 4, 2020

platform: windows 10
Dune: version 2.1.2
Cygwin: CYGWIN_NT-10.0 YSG4206 3.1.2(0.340/5/3) 2019-12-21 15:25 x86_64 Cygwin

$ git clone https://github.com/andreas/ocaml-graphql-server.git
$ cd ocaml-graphql-server
$ dune exec examples/server.exe
ocaml-crunch graphql-cohttp/src/assets.ml (exit 1)
(cd _build/default/graphql-cohttp/src && D:\cygwin64\home\ysg4206\.opam
\ocaml-variants.4.07.1+mingw64c\bin\ocaml-crunch.exe -m plain assets -o assets.m
l)
Generating assets.ml
ocaml-crunch: internal error, uncaught exception:
              End_of_file

@andreas
Copy link
Owner

andreas commented Feb 6, 2020

Thanks for reporting this @DrYSG 😄 What version of crunch do you have installed? Check with:

opam info crunch

I suspect it could be an issue of portability with crunch. Could you please try the following and reply with the output (OCAMLRUNPARAM=b enables backtraces):

$ export OCAMLRUNPARAM=b
$ dune exec examples/server.exe

@DrYSG
Copy link
Author

DrYSG commented Feb 7, 2020

This might be OBE, I found the this project, which uses esy, and it builds fine:

https://github.com/anmonteiro/reason-graphql-fullstack

opam info crunch

$ opam info crunch

<><> crunch: information on all versions ><><><><><><><><><><><><><><><><><><><>
name         crunch
all-versions 1.0.1  1.1.0  1.1.1  1.1.2  1.2.0  1.2.1  1.2.2  1.2.3  1.3.0  1.4.0  1.4.1  2.0.0  2.1.0  2.2.0  3.0.0
             3.1.0  3.2.0

<><> Version-specific details <><><><><><><><><><><><><><><><><><><><><><><><><>
version       3.2.0
repository    default
url.src:      "https://github.com/mirage/ocaml-crunch/releases/download/v3.2.0/crunch-v3.2.0.tbz"
url.checksum:
          "sha256=0a1a4ebb86ab643dd193b5c0046e4d168c6e1cb41e6e5e5b6fbd3b7492e8c6de"
          "sha512=8666e4081c96b7e0820c621197cb02de2238ddc911e4e95f439c69a685a5791dd4f874ba1084f56c9b44d3d579b877b1ed1f7
b0421cd56d3f36ad39c669ee4eb"
homepage:     "https://github.com/mirage/ocaml-crunch"
bug-reports:  "https://github.com/mirage/ocaml-crunch/issues"
dev-repo:     "git+https://github.com/mirage/ocaml-crunch.git"
authors:      "Anil Madhavapeddy" "Thomas Gazagnaire" "Stefanie Schirmer" "Hannes Mehnert"
maintainer:   "MirageOS team"
license:      "ISC"
tags:         "org:mirage" "org:xapi-project"
depends:      "ocaml" {>= "4.05.0"}
              "cmdliner"
              "ptime"
              "dune" {>= "1.0"}
              "lwt" {with-test}
              "mirage-kv" {with-test & >= "3.0.0"}
              "mirage-kv-mem" {with-test & >= "3.0.0"}
conflicts:    "mirage-kv" {< "3.0.0"}
synopsis      Convert a filesystem into a static OCaml module
description   `ocaml-crunch` takes a directory of files and compiles them into a standalone
              OCaml module which serves the contents directly from memory.  This can be
              convenient for libraries that need a few embedded files (such as a web server)
              and do not want to deal with all the trouble of file configuration.

output with backtraces:

$ dune exec examples/server.exe
ocaml-crunch graphql-cohttp/src/assets.ml (exit 1)
(cd _build/default/graphql-cohttp/src && D:\cygwin64\home\ysg4206\.opam\ocaml-variants.4.07.1+mingw64c\bin\oca
ml-crunch.exe -m plain assets -o assets.ml)
Generating assets.ml
ocaml-crunch: internal error, uncaught exception:
              End_of_file
              Raised at file "buffer.ml", line 189, characters 18-35
              Called from file "src/crunch.ml", line 87, characters 2-33
              Called from file "src/crunch.ml", line 49, characters 30-54
              Called from file "src/crunch.ml", line 53, characters 17-25
              Called from file "list.ml", line 117, characters 24-34
              Called from file "src/main.ml", line 50, characters 4-113
              Called from file "cmdliner_term.ml", line 25, characters 19-24
              Called from file "cmdliner.ml", line 117, characters 32-39

ysg4206@YSG4206 /cygdrive/d/crime/ocaml-graphql-server

@emillon
Copy link

emillon commented Feb 10, 2020

Since there's only one static file, it's pretty easy to use dune to generate assets.ml instead of crunch.

Can you try with the following branch:

git clone https://github.com/emillon/ocaml-graphql-server.git -b crunch-dune

If that fixes the problem I'll open a PR.

@DrYSG
Copy link
Author

DrYSG commented Feb 10, 2020

$ dune build
File "graphql-async/src/dune", line 7, characters 20-32:
7 |  (libraries graphql async_kernel))
                        ^^^^^^^^^^^^
Error: Library "async_kernel" not found.
Hint: try: dune external-lib-deps --missing @@default

ysg4206@YSG4206 /cygdrive/d/crime/ocaml-graphql-server
$ dune install
Error: The following <package>.install are missing:
- _build/default/graphql-async.install
Hint: try running: dune build @install

ysg4206@YSG4206 /cygdrive/d/crime/ocaml-graphql-server
$ dune build @install
File "graphql-async/src/dune", line 7, characters 20-32:
7 |  (libraries graphql async_kernel))
                        ^^^^^^^^^^^^
Error: Library "async_kernel" not found.
Hint: try: dune external-lib-deps --missing @install

ysg4206@YSG4206 /cygdrive/d/crime/ocaml-graphql-server
$ opam install async_kernel
[ERROR] No switch is currently set. Please use 'opam switch' to set or install
        a switch

ysg4206@YSG4206 /cygdrive/d/crime/ocaml-graphql-server
$

I removed the opam switch, since I tend to use esy, and the switch compiler with dune was causing issues.

@andreas
Copy link
Owner

andreas commented Feb 10, 2020

@DrYSG Please try dune exec examples/server.exe instead of dune build et al 😄

@DrYSG
Copy link
Author

DrYSG commented Feb 11, 2020

Yes. that branch works fine. Thank you.

image

@DrYSG DrYSG closed this as completed Feb 11, 2020
@DrYSG
Copy link
Author

DrYSG commented Feb 11, 2020

I spoke too soon.

$ dune clean

$ dune exec examples/server.exe
listening on http://localhost:8080/graphql
Unhandled exception: End_of_file
Unhandled exception: End_of_file
Unhandled exception: End_of_file
Unhandled exception: End_of_file

@DrYSG DrYSG reopened this Feb 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants