* OCaml: incompatible ppx drivers (ppxlib and ocaml-migrate-parsetree)
@ 2020-12-30 16:55 divoplade
2020-12-30 18:28 ` Julien Lepiller
0 siblings, 1 reply; 3+ messages in thread
From: divoplade @ 2020-12-30 16:55 UTC (permalink / raw)
To: help-guix
[-- Attachment #1: Type: text/plain, Size: 1413 bytes --]
Dear guix,
I am trying to build js-of-ocaml. I have created an updated version of
ocaml-compiler-libs, ocaml-migrate-parsetree and ocaml-ppxlib, and
tried to build the latest js_of_ocaml with that, but I get the
following error when building the updated ppxlib:
starting phase `build'
File "_build/default/.ppx/0224ad3443a846e54f1637fccb074e7d/ppx.exe",
line 1, characters 0-0:
Error: Failed to create on-demand ppx rewriter for ppxlib.metaquot; too
many
incompatible ppx drivers were found: ppxlib and ocaml-migrate-
parsetree.
File "_build/default/.ppx/3134a5298fb2c80808cc94dd434856cb/ppx.exe",
line 1, characters 0-0:
Error: Failed to create on-demand ppx rewriter for ppxlib.traverse; too
many
incompatible ppx drivers were found: ppxlib and ocaml-migrate-
parsetree.
File "traverse/dune", line 7, characters 13-48:
7 | (preprocess (pps ppxlib_metaquot ppxlib.runner)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: Too many incompatible ppx drivers were found: ppxlib and
ocaml-migrate-parsetree.
File "ast/ast_helper_lite.mli", line 18, characters 0-17:
18 | open Ocaml_common
^^^^^^^^^^^^^^^^^
Error (warning 33): unused open Ocaml_common.
command "dune" "build" "@install" failed with status 1
builder for `/gnu/store/k7wfvxqbp07f8idjsbzi699v5y163j24-ocaml-ppxlib-
0.20.0.drv' failed with exit code 1
Why are these two packages "incompatible"? Do you understand what is
happening?
[-- Attachment #2: jsoo.scm --]
[-- Type: text/x-scheme, Size: 5684 bytes --]
(use-modules (guix packages))
(use-modules (guix download))
(use-modules (guix git-download))
(use-modules (guix build-system dune))
(use-modules (gnu packages ocaml))
(use-modules ((guix licenses) #:prefix license:))
(define-public ocaml-compiler-libs
(package
(name "ocaml-compiler-libs")
(version "0.12.3")
(home-page "https://github.com/janestreet/ocaml-compiler-libs")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append home-page ".git"))
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"00nrar7h2pyflbdiq6wwwrb4k5jh9iff0jllihzm6ms8d5pspsg5"))))
(build-system dune-build-system)
(arguments `(#:tests? #f))
(properties `((upstream-name . "ocaml-compiler-libs")))
(synopsis "Compiler libraries repackaged")
(description "This package simply repackages the OCaml compiler libraries
so they don't expose everything at toplevel. For instance, @code{Ast_helper}
is now @code{Ocaml_common.Ast_helper}.")
(license license:expat)))
(define-public ocaml-migrate-parsetree
(package
(name "ocaml-migrate-parsetree")
(version "1.8.0")
(home-page "https://github.com/ocaml-ppx/ocaml-migrate-parsetree")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append home-page ".git"))
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"16x8sxc4ygxrr1868qpzfqyrvjf3hfxvjzmxmf6ibgglq7ixa2nq"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(propagated-inputs
`(("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
("ocamlbuild" ,ocamlbuild)
("ocaml-result" ,ocaml-result)))
(properties `((upstream-name . "ocaml-migrate-parsetree")))
(synopsis "OCaml parsetree converter")
(description "This library converts between parsetrees of different OCaml
versions. For each version, there is a snapshot of the parsetree and conversion
functions to the next and/or previous version.")
(license license:lgpl2.1+)))
(define-public ocaml-ppxlib
(package
(name "ocaml-ppxlib")
(version "0.20.0")
(home-page "https://github.com/ocaml-ppx/ppxlib")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append home-page ".git"))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0nwwvh58hf18wpfh6i5mgsykiaw0rj9vy5id4xmja36s3pm5bcn3"))))
(build-system dune-build-system)
(propagated-inputs
`(("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
("ocaml-compiler-libs" ,ocaml-compiler-libs)
("ocaml-stdlib-shims" ,ocaml-stdlib-shims)
("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
("ocaml-sexplib0" ,ocaml-sexplib0)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'set-topfind
(lambda* (#:key inputs #:allow-other-keys)
;; add the line #directory ".." at the top of each file
;; using #use "topfind";; to be able to find topfind
(let* ((findlib-path (assoc-ref inputs "findlib"))
(findlib-libdir
(string-append findlib-path "/lib/ocaml/site-lib")))
(substitute* '("test/base/test.ml"
"test/code_path/test.ml"
"test/deriving/test.ml"
"test/driver/attributes/test.ml"
"test/driver/non-compressible-suffix/test.ml"
"test/driver/transformations/test.ml")
(("#use \"topfind\";;" all)
(string-append "#directory \"" findlib-libdir "\"\n"
all))))
#t)))))
(synopsis
"Base library and tools for ppx rewriters")
(description
"A comprehensive toolbox for ppx development. It features:
@itemize
@item an OCaml AST / parser / pretty-printer snapshot, to create a full frontend
independent of the version of OCaml;
@item a library for library for ppx rewriters in general, and type-driven code
generators in particular;
@item
a feature-full driver for OCaml AST transformers;
@item a quotation mechanism allowing to write values representing the
OCaml AST in the OCaml syntax;
@item a generator of open recursion classes from type definitions.
@end itemize")
(license license:expat)))
(package
(name "ocaml-js-of-ocaml")
(version "3.8.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ocsigen/js_of_ocaml")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1ls3nhavhifsfwwz45k4xw91ml9zi6rnkfp3175b2havbavbzral"))))
(build-system dune-build-system)
(propagated-inputs
`(("ocaml-ppxlib" ,ocaml-ppxlib)
("ocaml-uchar" ,ocaml-uchar)
("ocaml-menhir" ,ocaml-menhir)
("ocaml-reactivedata" ,ocaml-reactivedata)
("ocaml-cmdliner" ,ocaml-cmdliner)
("ocaml-lwt" ,ocaml-lwt)
("ocaml-tyxml" ,ocaml-tyxml)))
(properties `((upstream-name . "js_of_ocaml")))
(home-page
"http://ocsigen.github.io/js_of_ocaml")
(synopsis
"Compiler from OCaml bytecode to Javascript")
(description
"Js_of_ocaml is a compiler from OCaml bytecode to JavaScript.
It makes it possible to run pure OCaml programs in JavaScript
environment like browsers and Node.js
")
(license #f))
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: OCaml: incompatible ppx drivers (ppxlib and ocaml-migrate-parsetree)
2020-12-30 16:55 OCaml: incompatible ppx drivers (ppxlib and ocaml-migrate-parsetree) divoplade
@ 2020-12-30 18:28 ` Julien Lepiller
2020-12-30 19:30 ` divoplade
0 siblings, 1 reply; 3+ messages in thread
From: Julien Lepiller @ 2020-12-30 18:28 UTC (permalink / raw)
To: help-guix, divoplade
Looking at the opam repo, ppxlib 0.20.0 requires ocaml-parse-tree >= 2.1.0, which is the latest. You have version 1.8.0.
Le 30 décembre 2020 11:55:11 GMT-05:00, divoplade <d@divoplade.fr> a écrit :
>Dear guix,
>
>I am trying to build js-of-ocaml. I have created an updated version of
>ocaml-compiler-libs, ocaml-migrate-parsetree and ocaml-ppxlib, and
>tried to build the latest js_of_ocaml with that, but I get the
>following error when building the updated ppxlib:
>
>starting phase `build'
>File "_build/default/.ppx/0224ad3443a846e54f1637fccb074e7d/ppx.exe",
>line 1, characters 0-0:
>Error: Failed to create on-demand ppx rewriter for ppxlib.metaquot; too
>many
>incompatible ppx drivers were found: ppxlib and ocaml-migrate-
>parsetree.
>File "_build/default/.ppx/3134a5298fb2c80808cc94dd434856cb/ppx.exe",
>line 1, characters 0-0:
>Error: Failed to create on-demand ppx rewriter for ppxlib.traverse; too
>many
>incompatible ppx drivers were found: ppxlib and ocaml-migrate-
>parsetree.
>File "traverse/dune", line 7, characters 13-48:
>7 | (preprocess (pps ppxlib_metaquot ppxlib.runner)))
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Error: Too many incompatible ppx drivers were found: ppxlib and
>ocaml-migrate-parsetree.
>File "ast/ast_helper_lite.mli", line 18, characters 0-17:
>18 | open Ocaml_common
> ^^^^^^^^^^^^^^^^^
>Error (warning 33): unused open Ocaml_common.
>command "dune" "build" "@install" failed with status 1
>builder for `/gnu/store/k7wfvxqbp07f8idjsbzi699v5y163j24-ocaml-ppxlib-
>0.20.0.drv' failed with exit code 1
>
>Why are these two packages "incompatible"? Do you understand what is
>happening?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: OCaml: incompatible ppx drivers (ppxlib and ocaml-migrate-parsetree)
2020-12-30 18:28 ` Julien Lepiller
@ 2020-12-30 19:30 ` divoplade
0 siblings, 0 replies; 3+ messages in thread
From: divoplade @ 2020-12-30 19:30 UTC (permalink / raw)
To: Julien Lepiller, help-guix
Hello!
Le mercredi 30 décembre 2020 à 13:28 -0500, Julien Lepiller a écrit :
> Looking at the opam repo, ppxlib 0.20.0 requires ocaml-parse-tree >=
> 2.1.0, which is the latest. You have version 1.8.0.
1.8.0 is actually the latest, but not the highest version number.
However, I figured I can use up to 0.15.0 for ppxlib with the current
ocaml-migrate-parsetree, which is enough to build js_of_ocaml. If we
update ocaml-migrate-parsetree, and update ppxlib, some random other
package fails.
I have pushed the patch for js_of_ocaml (
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=45558) with what I
understood from the latest ocaml commits from pukkamustard.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-12-30 19:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-30 16:55 OCaml: incompatible ppx drivers (ppxlib and ocaml-migrate-parsetree) divoplade
2020-12-30 18:28 ` Julien Lepiller
2020-12-30 19:30 ` divoplade
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).