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 > 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 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 > > > >> 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 > >> > >>> > >>> Hi > >>> > >>> > >>> I ran into the same problem last week. > >>> I added a line to the _tags file after the OASIS-generated stuff: > >>> > >>> ... > >>> # OASIS_STOP > >>> > >>> : 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 href=3D"http:/= > > /myocamlbuild.ml">myocamlbuild.ml, 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:
> > > >
open > Ocamlbuild_plu= > > gin

style=3D"fo= > > nt-family: courier new,monospace;"> new,= > > monospace;">let () =3D
new,monospac= > > e;"> > > > >=A0 > dispatch
> style=3D"font-family: courier new,monospace;"> style=3D"font-family: c= > > ourier new,monospace;">=A0=A0=A0 (fun hook ->
style=3D"font-fa= > > mily: courier new,monospace;"> > > > >=A0=A0=A0=A0=A0=A0 > disp= > > atch_default hook;
new,monospace;">= > >=A0=A0=A0=A0=A0=A0 > matc= > > h hook with
> > > >=A0=A0=A0=A0=A0=A0=A0= > >=A0 | Before_options ->
new,mono= > > space;"> new,monospace;">=A0=A0=A0=A0=A0= > >=A0=A0=A0=A0=A0=A0=A0 Options.make_links :=3D false
style=3D"font= > > -family: courier new,monospace;"> > > > >
style=3D"font-famil= > > y: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=A0 | After_rules > -> > an>
style=3D"font-fa= > > mily: courier new,monospace;">=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (* > Inter= > > nal syntax extension *)
new,monospa= > > ce;"> > > > >=A0=A0=A0=A0=A0=A0=A0= > >=A0=A0=A0=A0=A0 List.iter
new,monos= > > pace;"> new,monospace;">=A0=A0=A0=A0=A0= > >=A0=A0=A0=A0=A0=A0=A0=A0=A0 (fun base ->
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 "pa_" ^ base and > file = > >=3D "src/syntax/pa_" ^ base ^ ".cmo" in
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 ["ocaml"; > "compile"= > > ; tag] & S[A"-ppopt"; A file];
style=3D"font-family= > >: courier new,monospace;"> new,monospace= > > ;">=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 flag > ["ocaml&qu= > > ot;; "ocamldep"; tag] & S[A"-ppopt"; A > file]; >>
> > > >=A0=A0=A0=A0=A0=A0=A0= > >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 flag ["ocaml"; "doc"; > ta= > > g] & S[A"-ppopt"; A file];
co= > > urier new,monospace;"> new,monospace;">= > >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 dep > ["ocaml";= > > "ocamldep"; tag] [file])
courier= > > new,monospace;"> > > > >=A0=A0=A0=A0=A0=A0=A0= > >=A0=A0=A0=A0=A0=A0=A0 > ["syntax_ext1";"syntax_ext2"]; > pan> (* add your > syntax= > > extensions here *)
new,monospace;"> > > > >=A0=A0=A0=A0=A0=A0=A0= > >=A0 | _ ->
new,monospace;"> > style=3D"font-family: courier > new,monospace;">=A0=A0=A0=A0=A0=A0=A0=A0=A0= > >=A0=A0=A0 ())

> > > >


2011/10/31 Philippe Veber dir= > >=3D"ltr">< ">philippe.veber@gma= > > il.com>
style=3D"margin:= > > 0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> > > > > S=E9bastien'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?
> > > > > >
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 f= > > ound none. Maybe I'm not dealing correctly with the situation ?
> > > > > >
ph.


class=3D"gmail_quote"= > >>2011/10/31 Sebastien Mondet < sebast= > > ien.mondet@gmail.com" target=3D"_blank">sebastien.mondet@gmail.com > ><= > > /span>
> > > >
.8ex;border-left:1p= > > x #ccc solid;padding-left:1ex"> > >

Hi


I ran into > t= > > he same problem last week.
I added a line to the _tags file > after= > > the OASIS-generated stuff:

=A0 > =A0...
> > > >
> > > > > >=A0 =A0# OASIS_STOP

=A0 =A0<src/*/*.ml>: > syn= > > tax_camlp4o


(found in the > sli= > > de 18:
> > > > > > > > > >

color=3D"#888888">

Sebastien
<= > > > /font>



> v>


On Mon, Oct 31, 2011 at > 12:2= > > 3, Philippe Veber < philippe.veber@gm= > > ail.com" target=3D"_blank">philippe.veber@gmail.com> > wrote: > r> > > > > > > > > > >
.8ex;border-left:1p= > > x #ccc solid;padding-left:1ex">Hi,
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'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 ?
> > > > > > > > > > > > > >
ph.

> >

> >

> >
> > > > --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 > >