caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Philippe Veber <philippe.veber@gmail.com>
To: Sylvain Le Gall <sylvain@le-gall.net>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Re: oasis, inter-dependent libraries and syntax extension
Date: Wed, 2 Nov 2011 11:33:56 +0100	[thread overview]
Message-ID: <CAOOOohQxtYkd=pdEr9G0o3Cq2ijfM-Wt5a6HkUHbXEHqE6baiQ@mail.gmail.com> (raw)
In-Reply-To: <slrnjb25lb.9th.sylvain@gallu.homelinux.org>

[-- Attachment #1: Type: text/plain, Size: 12553 bytes --]

Done:
https://forge.ocamlcore.org/tracker/index.php?func=detail&aid=1050&group_id=54&atid=291
I find oasis particularly useful, tell me if there is something else I can
do on this.
ph.


2011/11/2 Sylvain Le Gall <sylvain@le-gall.net>

> Hello,
>
> You are indeed right, syntax extensions remain a second class citizen.
> I'll need to fix that situation.
>
> Please report this problem to the bug tracker, along with your solution
> (which seems fine). I'll try to implement it in 0.3.
>
> Cheers
> Sylvain Le Gall
>
> On 01-11-2011, Philippe Veber <philippe.veber@gmail.com> wrote:
> >
> > --20cf307abebda8d83d04b0a9e43e
> > Content-Type: text/plain; charset=ISO-8859-1
> > Content-Transfer-Encoding: quoted-printable
> >
> > I found a workaround in lwt, which is to add some code in
> myocamlbuild.ml,
> > outside the generated part, to define appropriate tags that can then be
> > used in _tags (more generally, lwt has several interesting tricks about
> > oasis). For the record, here is how you can use a syntax extension
> > internally, inside a package:
> >
> > open Ocamlbuild_plugin
> >
> > let () =3D
> >   dispatch
> >     (fun hook ->
> >        dispatch_default hook;
> >        match hook with
> >          | Before_options ->
> >              Options.make_links :=3D false
> >
> >          | After_rules ->
> >              (* Internal syntax extension *)
> >              List.iter
> >                (fun base ->
> >                   let tag =3D "pa_" ^ base and file =3D "src/syntax/pa_"
> ^ =
> > base
> > ^ ".cmo" in
> >                   flag ["ocaml"; "compile"; tag] & S[A"-ppopt"; A file];
> >                   flag ["ocaml"; "ocamldep"; tag] & S[A"-ppopt"; A file];
> >                   flag ["ocaml"; "doc"; tag] & S[A"-ppopt"; A file];
> >                   dep ["ocaml"; "ocamldep"; tag] [file])
> >                ["syntax_ext1";"syntax_ext2"]; (* add your syntax
> extensions
> > here *)
> >          | _ ->
> >              ())
> >
> >
> >
> > 2011/10/31 Philippe Veber <philippe.veber@gmail.com>
> >
> >> S=E9bastien's suggestion is indeed a good start but alas for me not
> enoug=
> > h.
> >> The build still fails at ocamldep time, because the library B (with the
> >> syntax extension) seems not to be taken into account. If I replace my
> >> syntax extension with some findlib package (say tyxml), the compilation
> >> works fine. So the question remains, how can I specify that a
> >> library/executable in a package depends on a syntax extension that is
> >> defined as a library of the same package?
> >>
> >> Thanks to oasisdb, I've browsed a couple of packages that could be in
> the
> >> same situation, like a test executable for a syntax extension, but found
> >> none. Maybe I'm not dealing correctly with the situation ?
> >>
> >> ph.
> >>
> >>
> >> 2011/10/31 Sebastien Mondet <sebastien.mondet@gmail.com>
> >>
> >>>
> >>> Hi
> >>>
> >>>
> >>> I ran into the same problem last week.
> >>> I added a line to the _tags file after the OASIS-generated stuff:
> >>>
> >>>    ...
> >>>     # OASIS_STOP
> >>>
> >>>    <src/*/*.ml>: syntax_camlp4o
> >>>
> >>>
> >>> (found in the slide 18:
> >>> http://oasis.forge.ocamlcore.org/documentation.html )
> >>>
> >>>
> >>> Sebastien
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Mon, Oct 31, 2011 at 12:23, Philippe Veber <
> philippe.veber@gmail.com>=
> > wrote:
> >>>
> >>>> Hi,
> >>>> I have an oasis project defining three inter-dependent libraries A, B
> >>>> and C. B is a syntax extension, and depends on A. C depends on both A
> a=
> > nd
> >>>> B. I have written an _oasis file for this, which works fine if I
> don't =
> > use
> >>>> the extension in C, but fails if I do, during ocamldep (ocamldep
> lacks =
> > the
> >>>> appropriate options to understand the new syntax). Has anybody run
> into
> >>>> this problem ?
> >>>>
> >>>> ph.
> >>>>
> >>>>
> >>>
> >>
> >
> > --=20
> > Caml-list mailing list.  Subscription management and archives:
> > https://sympa-roc.inria.fr/wws/info/caml-list
> > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> > Bug reports: http://caml.inria.fr/bin/caml-bugs
> >
> >
> > --20cf307abebda8d83d04b0a9e43e
> > Content-Type: text/html; charset=ISO-8859-1
> > Content-Transfer-Encoding: quoted-printable
> >
> > I found a workaround in lwt, which is to add some code in <a
> href=3D"http:/=
> > /myocamlbuild.ml">myocamlbuild.ml</a>, outside the generated part, to
> defin=
> > e appropriate tags that can then be used in _tags (more generally, lwt
> has =
> > several interesting tricks about oasis). For the record, here is how you
> ca=
> > n use a syntax extension internally, inside a package:<br>
> >
> ><br><span style=3D"font-family: courier new,monospace;">open
> Ocamlbuild_plu=
> > gin</span><br style=3D"font-family: courier new,monospace;"><br
> style=3D"fo=
> > nt-family: courier new,monospace;"><span style=3D"font-family: courier
> new,=
> > monospace;">let () =3D</span><br style=3D"font-family: courier
> new,monospac=
> > e;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0
> dispatch</span><br =
> > style=3D"font-family: courier new,monospace;"><span
> style=3D"font-family: c=
> > ourier new,monospace;">=A0=A0=A0 (fun hook -&gt;</span><br
> style=3D"font-fa=
> > mily: courier new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0
> disp=
> > atch_default hook;</span><br style=3D"font-family: courier
> new,monospace;">=
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0
> matc=
> > h hook with</span><br style=3D"font-family: courier new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0 | Before_options -&gt;</span><br style=3D"font-family: courier
> new,mono=
> > space;"><span style=3D"font-family: courier
> new,monospace;">=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0=A0=A0 Options.make_links :=3D false</span><br
> style=3D"font=
> > -family: courier new,monospace;">
> >
> ><br style=3D"font-family: courier new,monospace;"><span
> style=3D"font-famil=
> > y: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=A0 | After_rules
> -&gt;</sp=
> > an><br style=3D"font-family: courier new,monospace;"><span
> style=3D"font-fa=
> > mily: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*
> Inter=
> > nal syntax extension *)</span><br style=3D"font-family: courier
> new,monospa=
> > ce;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0 List.iter</span><br style=3D"font-family: courier
> new,monos=
> > pace;"><span style=3D"font-family: courier
> new,monospace;">=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0=A0=A0=A0=A0 (fun base -&gt;</span><br
> style=3D"font-family:=
> >  courier new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 let tag =3D &quot;pa_&quot; ^ base and
> file =
> >=3D &quot;src/syntax/pa_&quot; ^ base ^ &quot;.cmo&quot; in</span><br
> style=
> >=3D"font-family: courier new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 flag [&quot;ocaml&quot;;
> &quot;compile&quot;=
> > ; tag] &amp; S[A&quot;-ppopt&quot;; A file];</span><br
> style=3D"font-family=
> >: courier new,monospace;"><span style=3D"font-family: courier
> new,monospace=
> > ;">=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 flag
> [&quot;ocaml&qu=
> > ot;; &quot;ocamldep&quot;; tag] &amp; S[A&quot;-ppopt&quot;; A
> file];</span=
> >><br style=3D"font-family: courier new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 flag [&quot;ocaml&quot;; &quot;doc&quot;;
> ta=
> > g] &amp; S[A&quot;-ppopt&quot;; A file];</span><br style=3D"font-family:
> co=
> > urier new,monospace;"><span style=3D"font-family: courier
> new,monospace;">=
> >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 dep
> [&quot;ocaml&quot;;=
> >  &quot;ocamldep&quot;; tag] [file])</span><br style=3D"font-family:
> courier=
> >  new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0=A0=A0=A0=A0=A0=A0
> [&quot;syntax_ext1&quot;;&quot;syntax_ext2&quot;];</s=
> > pan> <span style=3D"font-family: courier new,monospace;">(* add your
> syntax=
> >  extensions here *)</span><br style=3D"font-family: courier
> new,monospace;">
> >
> ><span style=3D"font-family: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=
> >=A0 | _ -&gt;</span><br style=3D"font-family: courier
> new,monospace;"><span=
> >  style=3D"font-family: courier
> new,monospace;">=A0=A0=A0=A0=A0=A0=A0=A0=A0=
> >=A0=A0=A0 ())</span><br style=3D"font-family: courier new,monospace;">
> >
> ><br><br><br><div class=3D"gmail_quote">2011/10/31 Philippe Veber <span
> dir=
> >=3D"ltr">&lt;<a href=3D"mailto:philippe.veber@gmail.com
> ">philippe.veber@gma=
> > il.com</a>&gt;</span><br><blockquote class=3D"gmail_quote"
> style=3D"margin:=
> > 0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
> >
> > S=E9bastien&#39;s suggestion is indeed a good start but alas for me not
> eno=
> > ugh. The build still fails at ocamldep time, because the library B (with
> th=
> > e syntax extension) seems not to be taken into account. If I replace my
> syn=
> > tax extension with some findlib package (say tyxml), the compilation
> works =
> > fine. So the question remains, how can I specify that a
> library/executable =
> > in a package depends on a syntax extension that is defined as a library
> of =
> > the same package?<br>
> >
> >
> ><br>Thanks to oasisdb, I&#39;ve browsed a couple of packages that could
> be =
> > in the same situation, like a test executable for a syntax extension,
> but f=
> > ound none. Maybe I&#39;m not dealing correctly with the situation ?<br>
> >
> >
> ><br>ph.<div><div></div><div class=3D"h5"><br><br><div
> class=3D"gmail_quote"=
> >>2011/10/31 Sebastien Mondet <span dir=3D"ltr">&lt;<a href=3D"mailto:
> sebast=
> > ien.mondet@gmail.com" target=3D"_blank">sebastien.mondet@gmail.com
> </a>&gt;<=
> > /span><br>
> >
> ><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0
> .8ex;border-left:1p=
> > x #ccc solid;padding-left:1ex">
> ><div><br></div><div>Hi</div><div><br></div><div><br></div><div>I ran into
> t=
> > he same problem last week.</div><div>I added a line to the _tags file
> after=
> >  the OASIS-generated stuff:</div><div><div><br></div><div>=A0
> =A0...</div>
> >
> ><div>
> >
> >
> >=A0 =A0# OASIS_STOP</div><div><br></div><div>=A0 =A0&lt;src/*/*.ml&gt;:
> syn=
> > tax_camlp4o</div></div><div><br></div><div><br></div><div>(found in the
> sli=
> > de 18:</div><div><a href=3D"
> http://oasis.forge.ocamlcore.org/documentation.=
> > html" target=3D"_blank">
> http://oasis.forge.ocamlcore.org/documentation.html=
> ></a>=A0)</div>
> >
> >
> >
> >
> ><div><br></div><font
> color=3D"#888888"><div><br></div><div>Sebastien</div><=
> >
> /font><div><div></div><div><div><br></div><div><br></div><div><br></div><di=
> > v><br></div><br><br><div class=3D"gmail_quote">On Mon, Oct 31, 2011 at
> 12:2=
> > 3, Philippe Veber <span dir=3D"ltr">&lt;<a href=3D"mailto:
> philippe.veber@gm=
> > ail.com" target=3D"_blank">philippe.veber@gmail.com</a>&gt;</span>
> wrote:<b=
> > r>
> >
> >
> >
> >
> ><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0
> .8ex;border-left:1p=
> > x #ccc solid;padding-left:1ex">Hi,<br>I have an oasis project defining
> thre=
> > e inter-dependent libraries A, B and C. B is a syntax extension, and
> depend=
> > s on A. C depends on both A and B. I have written an _oasis file for
> this, =
> > which works fine if I don&#39;t use the extension in C, but fails if I
> do, =
> > during ocamldep (ocamldep lacks the appropriate options to understand
> the n=
> > ew syntax). Has anybody run into this problem ?<br>
> >
> >
> >
> >
> >
> >
> ><br>ph.<br><br>
> ></blockquote></div><br>
> ></div></div></blockquote></div><br>
> ></div></div></blockquote></div><br>
> >
> > --20cf307abebda8d83d04b0a9e43e--
> >
>
> Cheers,
> Sylvain Le Gall
> --
> My company: http://www.ocamlcore.com
> Linkedin:   http://fr.linkedin.com/in/sylvainlegall
> Start an OCaml project here: http://forge.ocamlcore.org
> OCaml blogs:                 http://planet.ocamlcore.org
>
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>

[-- Attachment #2: Type: text/html, Size: 18786 bytes --]

      reply	other threads:[~2011-11-02 10:34 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-31 16:23 [Caml-list] " Philippe Veber
2011-10-31 16:40 ` Sebastien Mondet
2011-10-31 20:09   ` Philippe Veber
2011-11-01 10:33     ` Philippe Veber
2011-11-02 10:08       ` [Caml-list] " Sylvain Le Gall
2011-11-02 10:33         ` Philippe Veber [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOOOohQxtYkd=pdEr9G0o3Cq2ijfM-Wt5a6HkUHbXEHqE6baiQ@mail.gmail.com' \
    --to=philippe.veber@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=sylvain@le-gall.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).