From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 76E307F61D for ; Thu, 27 Oct 2016 19:51:41 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jonathan.dilorenzo@gmail.com; spf=Pass smtp.mailfrom=jonathan.dilorenzo@gmail.com; spf=None smtp.helo=postmaster@mail-oi0-f42.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of jonathan.dilorenzo@gmail.com) identity=pra; client-ip=209.85.218.42; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jonathan.dilorenzo@gmail.com"; x-sender="jonathan.dilorenzo@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of jonathan.dilorenzo@gmail.com designates 209.85.218.42 as permitted sender) identity=mailfrom; client-ip=209.85.218.42; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jonathan.dilorenzo@gmail.com"; x-sender="jonathan.dilorenzo@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-oi0-f42.google.com) identity=helo; client-ip=209.85.218.42; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jonathan.dilorenzo@gmail.com"; x-sender="postmaster@mail-oi0-f42.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3A9ohf3xQFFQuAQEQwPoAGz44z+9psv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa64YxON2/xhgRfzUJnB7Loc0qyN4vqmBjVLuM/d+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aJBzzOEJP?= =?us-ascii?q?K/jvHcaK1oLshrr0pMSYOlwUzBOGIppKZC2sqgvQssREyaBDEY0WjiXzn31TZu?= =?us-ascii?q?5NznlpL1/A1zz158O34YIxu38I46Fp34d6XK77Z6U1S6BDRHRjajhtpZ6jiR6W?= =?us-ascii?q?bBWG4DMzVXkRjBFIAhTepEX7QJjZsyb3u6x6wibMbuPsSrVhezOk5rtrQRmgpC?= =?us-ascii?q?YjMCQ09nPQwph8jaZcuh+ntRtXyJWSa4aPMvd6euXQcc5MFjkJZdpYSyEUWtD0?= =?us-ascii?q?VIAIFedUeL8A94Q=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DkBgBbPhJYhiraVdFcGgEBAQECAQEBA?= =?us-ascii?q?QgBAQEBFQEBAQECAQEBAQgBAQEBgkg3AQEBAQF1fQekLoIyJYxShRaCCB+IAgd?= =?us-ascii?q?AEwEBAQEBAQEBAQEBEgEBAQgLCwkdMIIzBAEVAQSCEAEBAQMBEhEdATgBAwELA?= =?us-ascii?q?QUDAgsDCioCAgIgEgEFARwGEyKIGAMPCJYbj02BMj8yi0aESgWECCcNRAaDIQs?= =?us-ascii?q?BAQEVBgIGEIl9gQWHS4JbAQSUOIVeg0OBeXGJdoFuToQfiSmNC4I/Ex6BESACg?= =?us-ascii?q?lOBSg8cgW4iNIcVgUoBAQE?= X-IPAS-Result: =?us-ascii?q?A0DkBgBbPhJYhiraVdFcGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgkg3AQEBAQF1fQekLoIyJYxShRaCCB+IAgdAEwEBAQEBAQEBA?= =?us-ascii?q?QEBEgEBAQgLCwkdMIIzBAEVAQSCEAEBAQMBEhEdATgBAwELAQUDAgsDCioCAgI?= =?us-ascii?q?gEgEFARwGEyKIGAMPCJYbj02BMj8yi0aESgWECCcNRAaDIQsBAQEVBgIGEIl9g?= =?us-ascii?q?QWHS4JbAQSUOIVeg0OBeXGJdoFuToQfiSmNC4I/Ex6BESACglOBSg8cgW4iNIc?= =?us-ascii?q?VgUoBAQE?= X-IronPort-AV: E=Sophos;i="5.31,553,1473112800"; d="gz'50?scan'50,208,217,50,49";a="198414606" Received: from mail-oi0-f42.google.com ([209.85.218.42]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 27 Oct 2016 19:51:40 +0200 Received: by mail-oi0-f42.google.com with SMTP id i127so67840610oia.2 for ; Thu, 27 Oct 2016 10:51:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=ir+LbwMNrNGffmqHbqKp2Um5ZnI3ZW7KQ4zMt/g8lIg=; b=r6/hJdZBZZIo4am8RzwhEBVVg6+MiPymy+j8pGviSCsOX5xyrVAgcQemcyzKJbjAui 31icFPz1ZEu4Knyh1L1TMvBzxjEdnfG3Q3o3rQiUZUvz7Kt0UaaRh9sVq+PTPfxTQ4Pz UH0g/nWFq/SXMlMtgnreWwdyU45q8ocX3rPsEuS2No/yS/fgDVGbFu6fZDwW7zcbhcSq mqeARRazqTYCGsL14r1ItO/nVzQ7G1tEwV352gQZ52Xc2DNhCiN6mZBph72JQSl8KjYj t5n3DICRZ4DtJ/0isQiKZLFhkLGHIApKHA/aLs5mc9YvhxixXrrPMOpdlFyw2GowEliP EPzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=ir+LbwMNrNGffmqHbqKp2Um5ZnI3ZW7KQ4zMt/g8lIg=; b=g1EDGr1tYzQ5Hr1cDc7bd05U2VsIM9H8L5nZylVs06443mTxNr2LjdMAg9wOTRP71g 25xLCRkEQgDsvP9LLT+4JIbiDv4pyD0ipn/VLcz9ve/zDxylRFSLa+R/3tc8cmXmSOui GIttJgzzZvt0ZhOjBpOOVpvmpLmNHwvxHKc9n5z0Uw9XB9N+XvJzZamdks/HH92gXvqc MrvpGZQ5XxyidqVBFGuQvY/IfzNWpZFAq/Efga52Za+Wbhs/GejNWaOldG4Bagqs0qnN 2q5B/uvk7/R3Q1DYWgDz3tlVGcRjN+mxdd7KjfQzLVU+c0pjVItkHFh/2Qt2GVwMPbC0 smIw== X-Gm-Message-State: ABUngveoAYQpqCYJ6eFNZBlHZANditvABGMQiIgmNiVXnUZEpIp83VHQ7lUPXYt8Np+XKOyMFbSrgM5WT1QbXA== X-Received: by 10.107.62.11 with SMTP id l11mr7645900ioa.181.1477590698317; Thu, 27 Oct 2016 10:51:38 -0700 (PDT) MIME-Version: 1.0 Sender: jonathan.dilorenzo@gmail.com Received: by 10.36.193.67 with HTTP; Thu, 27 Oct 2016 10:51:17 -0700 (PDT) In-Reply-To: References: From: Jonathan DiLorenzo Date: Thu, 27 Oct 2016 13:51:17 -0400 X-Google-Sender-Auth: w4b_-eD0CqFNV7y8HxVjk6d05YA Message-ID: To: Ivan Gotovchits Cc: Jonathan DiLorenzo , caml-list Content-Type: multipart/mixed; boundary=94eb2c06aec0b27a5b053fdc648f X-Validation-by: dilorenzo@cs.cornell.edu Subject: Re: [Caml-list] Providing module implementations for Oasis --94eb2c06aec0b27a5b053fdc648f Content-Type: multipart/alternative; boundary=94eb2c06aec0b27a56053fdc648d --94eb2c06aec0b27a56053fdc648d Content-Type: text/plain; charset=UTF-8 Hey, Ok, now the next step would be the following. Carefully check that all > modules, that you're using in libraries are included in `Modules` or > `InternalModules`. It is the case > that sometimes when you forgot to include a module, oasis (actually > `ocamlbuild`), may produce a strange, and on a first glance, irrelevant > error message. > I checked and sadly the modules I'm trying to access are all in `Modules`. Perhaps interestingly, it can still clearly detect statically if the function exists or not because if I try to use a function that doesn't exist it instead gives me this error (which is what I would normally expect): File "ppx/skins.ml", line 39, characters 8-37: Error: Unbound value Forest_parser_helper.bad_func Command exited with code 2. > If it doesn't help then the `_build/_log` file might help us to debug the > issue. > Attached tarball. Too big to send via list otherwise. Thanks so much for helping with this again. I'm at a total loss. On Thu, Oct 27, 2016 at 10:59 AM, Jonathan DiLorenzo < > dilorenzo@cs.cornell.edu> wrote: > >> Hey Ivan, >> >> Thanks for your response. >> >> The first one is that you didn't run `oasis setup` after you made the >>> changes, so I would suggest cleaning current state >>> and starting from scratch. (I usually just do `git clean -idx` just to >>> be sure that I got rid of any generated files, like setup.data, et alas, >>> but be careful, >>> don't delete something that you need). >>> >> >> I tried cleaning up all the generated files. Same error unfortunately >> >> >>> Another idea is that you're using oasis 0.4.7 with ocaml-4.03.0+flambda, >>> they are currently incompatible, and can produce weird bugs. If that so, >>> then consider switching >>> either a compiler or oasis to different versions. >>> >> >> I am using oasis 0.4.7 and ocaml-4.03.0, but I don't appear to be using >> flambda. I tried passing in -config and it said that flambda was false at >> least, but I admit, I'm not especially familiar with it, so if there's some >> other way I should be checking for this please let me know. Hopefully, >> they're compatible sans flambda? >> >> >> On Thu, Oct 27, 2016 at 1:01 AM, Jonathan DiLorenzo < >>> dilorenzo@cs.cornell.edu> wrote: >>> >>>> Hey all, >>>> >>>> I'm trying to build my system using Oasis and OCamlbuild. I have 3 >>>> different libraries and for some reason I seem to only be able to refer >>>> from one to the other in seemingly random files. For example, I want my >>>> 'ppx' library to be able to use functions from my 'parser' library. One >>>> file (ppx_forest.ml) can use functions from it, while another in the >>>> same library (skins.ml) cannot, giving me this error: >>>> >>>> File "_none_", line 1: >>>> Error: No implementations provided for the following modules: >>>> Forest_parser_helper referenced from ppx/ppx.cmxa(Skins) >>>> Command exited with code 2. >>>> >>>> They can all refer to types I've defined therein though. >>>> >>>> I'm not fantastic at Oasis so maybe I'm just missing something basic? >>>> Any ideas? Any more information I can gather to give more context otherwise? >>>> >>>> Thanks in advance, >>>> Jonathan >>>> >>>> Excerpt of my Oasis file that may possibly be relevant: >>>> >>>> Library forest >>>> Path: lib >>>> BuildTools: ocamlbuild >>>> BuildDepends: pads, str, re, re.glob, core, threads, ppx_let >>>> CompiledObject: best >>>> Modules: Forest, PadsInterface >>>> >>>> Library parser >>>> Path: parsing >>>> BuildTools: ocamlbuild, menhir, ocamllex >>>> Findlibparent: forest >>>> Findlibname: parser >>>> BuildDepends: forest, ppx_deriving.show, compiler-libs.common >>>> CompiledObject: best >>>> Modules: Forest_parser_helper >>>> InternalModules: Forest_lexer, Forest_parser, Forest_types >>>> >>>> Library ppx >>>> Path: ppx >>>> BuildTools: ocamlbuild >>>> Findlibparent: forest >>>> Findlibname: ppx >>>> BuildDepends: re, re.str, forest.parser, forest, ppx_tools.metaquot >>>> CompiledObject: best >>>> Modules: Ppx_forest >>>> InternalModules: Ppx_forest_lib, Utility, Skins >>>> XMETAEnable: true >>>> XMETARequires: str re core threads ppx_tools.metaquot >>>> XMETAExtraLines: ppx = "ppx_forest" >>>> >>>> Executable ppx_forest >>>> Path: ppx >>>> MainIs: ppx_forest.ml >>>> BuildDepends: forest, forest.parser, forest.ppx, pads.ppx, >>>> ppx_tools.metaquot >>>> CompiledObject: best >>>> >>>> >>> >> > --94eb2c06aec0b27a56053fdc648d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hey,=

Ok, now the next step would be the following. Carefully check that al= l modules, that you're using in libraries are included in `Modules` or = `InternalModules`. It is the case
that sometimes=C2=A0when you forgot t= o include a module, oasis (actually `ocamlbuild`), may produce a strange, a= nd on a first glance, irrelevant error message.=C2=A0

I checked and sadly the modules I'm tryin= g to access are all in `Modules`. Perhaps interestingly, it can still clear= ly detect statically if the function exists or not because if I try to use = a function that doesn't exist it instead gives me this error (which is = what I would normally expect):

File "ppx= /skins.ml", line 39= , characters 8-37:
Error: Unbound value Forest_parser_helper.bad_= func
Command exited with code 2.
=
=C2=A0
If it doesn't help then the `_build/_log` file might help = us to debug the issue.=C2=A0

Atta= ched tarball. Too big to send via list otherwise. Thanks so much for helpin= g with this again. I'm at a total loss.

On Thu, Oct 27, 2016= at 10:59 AM, Jonathan DiLorenzo <dilorenzo@cs.cornell.edu><= /span> wrote:
Hey Ivan,

Thanks for your response.
<= br>
The first= one is that you didn't run `oasis setup` after you made the changes, s= o I would suggest cleaning current state
and starting from sc= ratch. (I usually just do `git clean -idx` just to be sure that I got rid o= f any generated files, like setup.data, et alas, but be careful,=C2=A0
don't delete something that you need).=C2=A0

I tried cleaning up all the generated files.= Same error unfortunately
=C2=A0
Another idea=C2=A0is tha= t you're using oasis 0.4.7 with ocaml-4.03.0+flambda, they are currentl= y incompatible, and can produce weird bugs. If that so, then consider switc= hing=C2=A0
either a compiler or oasis to different versions.= =C2=A0

I am using oasis = 0.4.7 and ocaml-4.03.0, but I don't appear to be using flambda. I tried= passing in -config and it said that flambda was false at least, but I admi= t, I'm not especially familiar with it, so if there's some other wa= y I should be checking for this please let me know. Hopefully, they're = compatible sans flambda?


<= div class=3D"gmail_extra">
On Thu, Oct 27, 2016 a= t 1:01 AM, Jonathan DiLorenzo <dilorenzo@cs.cornell.edu> wrote:
Hey all,

I'm trying to build my system using O= asis and OCamlbuild. I have 3 different libraries and for some reason I see= m to only be able to refer from one to the other in seemingly random files.= For example, I want my 'ppx' library to be able to use functions f= rom my 'parser' library. One file (ppx_forest.ml) can use functions from it, while anot= her in the same library (skin= s.ml) cannot, giving me this error:

File = "_none_", line 1:
Error: No implementations provided fo= r the following modules:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Forest= _parser_helper referenced from ppx/ppx.cmxa(Skins)
Command exited= with code 2.

They can all refer to types I&= #39;ve defined therein though.

I'm not fantast= ic at Oasis so maybe I'm just missing something basic? Any ideas? Any m= ore information I can gather to give more context otherwise?

=
Thanks in advance,
Jonathan

E= xcerpt of my Oasis file that may possibly be relevant:

<= /div>
Library forest=C2=A0
=C2=A0 Path: =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0lib
=C2=A0 BuildTools: =C2=A0 =C2=A0ocamlbuild
=
=C2=A0 BuildDepends: =C2=A0 pads, str, re, re.glob, core, threads, ppx= _let
=C2=A0 CompiledObject: best
=C2=A0 Modules: =C2=A0= =C2=A0 =C2=A0 Forest, PadsInterface

Library parse= r
=C2=A0 Path: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 parsing
=C2=A0 BuildTools: =C2=A0 =C2=A0 ocamlbuild, menhir, ocamllex
= =C2=A0 Findlibparent: =C2=A0forest
=C2=A0 Findlibname: =C2=A0 =C2= =A0parser
=C2=A0 BuildDepends: =C2=A0 forest, ppx_deriving.show, = compiler-libs.common=C2=A0
=C2=A0 CompiledObject: best
= =C2=A0 Modules: =C2=A0Forest_parser_helper
=C2= =A0 InternalModules: Forest_lexer, Forest_parser, Forest_types
Library ppx
=C2=A0 Path: =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 ppx
=C2=A0 BuildTools: =C2=A0 =C2=A0 ocamlbuild
=C2=A0 Findlibparent: =C2=A0forest
=C2=A0 Findlibname: =C2=A0 = =C2=A0ppx
=C2=A0 BuildDepends: =C2=A0 re, re.str, forest.parser, = forest, ppx_tools.metaquot
=C2=A0 CompiledObject: best
= =C2=A0 Modules: =C2=A0 =C2=A0 =C2=A0 =C2=A0Ppx_forest
=C2=A0 Inte= rnalModules: Ppx_forest_lib, Utility, Skins
=C2=A0 XMETAEnable: = =C2=A0 =C2=A0true
=C2=A0 XMETARequires: =C2=A0 str re core thread= s ppx_tools.metaquot
=C2=A0 XMETAExtraLines: =C2=A0ppx =3D "= ppx_forest"

Executable ppx_forest
= =C2=A0 Path: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ppx
=C2=A0 MainIs= : =C2=A0 =C2=A0 =C2=A0 =C2=A0 ppx_forest.ml
=C2=A0 BuildDepends: =C2=A0 forest, fores= t.parser, forest.ppx, pads.ppx, ppx_tools.metaquot
=C2=A0 Compile= dObject: best





--94eb2c06aec0b27a56053fdc648d-- --94eb2c06aec0b27a5b053fdc648f Content-Type: application/x-gzip; name="log.tar.gz" Content-Disposition: attachment; filename="log.tar.gz" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iusnc4rb0 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 AA== --94eb2c06aec0b27a5b053fdc648f--