<div dir="ltr">The JSON format is meant to be the same whether the program is compiled with the old compiler (P4_14 only) or the new one (P4_14 or P4_16). The two compilers may produce different JSON files for the same P4_14 program, just like gcc and clang would produce different assembly code. But the format is the same and the P4Objects::init_objects method is not affected by which version of the compiler or which version of the language you are using. Of course, you may run into some issues with the new compiler (<a href="https://github.com/p4lang/p4c">https://github.com/p4lang/p4c</a>) as it is not as mature, but we would be happy to help you solve them.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 1, 2017 at 9:21 AM, Andy Fingerhut <span dir="ltr"><<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Q1:<div><br></div><div>If you go to <a href="http://p4.org" target="_blank">p4.org</a> and click on the SPEC link near the upper right you get to this page: <a href="https://p4lang.github.io/p4-spec/" target="_blank">https://p4lang.github.<wbr>io/p4-spec/</a></div><div><br></div><div>That is where the most recently released versions of the language specs are published.  It currently includes v1.0.4 of the P4_14 language, which is still the same syntax as older versions of the P4_14 language, and version 1.0.0 of the P4_16 language, which has a noticeably different syntax.</div><div><br></div><div>Q2:</div><div><br></div><div>I have run this bash script to mostly automate the steps given in the relevant README's for the behavioral-model and p4c Github projects, to get a copy of those repositories and build them.  As mentioned in the READMEs, it also gets a copy of Google protobuf and builds and installs that, required for building p4c.</div><div><br></div><div><a href="https://github.com/jafingerhut/p4-guide/blob/master/bin/install-p4dev.sh" target="_blank">https://github.com/<wbr>jafingerhut/p4-guide/blob/<wbr>master/bin/install-p4dev.sh</a><br></div><div><br></div><div>I have only ever tested that script on an Ubuntu 16.04 Linux machine.</div><div><br></div><div>Q3:</div><div><br></div><div>I do not know enough about the init_objects() method that you mention to know whether there are any significant differences in how that method is called between P4_14 and P4_16 JSON files produced by the compiler.  Sorry.  Perhaps someone else can help there, or you can just try an experiment with it and see if things go well.</div><div><br></div><div>Andy</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Tue, Aug 1, 2017 at 3:29 AM, Hardik Soni <span dir="ltr"><<a href="mailto:hardik.soni@inria.fr" target="_blank">hardik.soni@inria.fr</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div><div style="font-family:times new roman,new york,times,serif;font-size:12pt;color:#000000"><div>Hello All,</div><div><br></div><div>I need some information on versions of specs, p4c code and bmv2 code.</div><div><br></div><div>Q1: </div><div><br></div><div><span style="font-size:12pt">There is a spec (</span><span style="font-size:12pt">Version 1.0.3) of P416 dated </span><span style="font-size:12pt">November 2, 2016.</span></div><div><span style="font-size:12pt">That BNF is not of P416 compiler, am I right?</span></div><div><span style="font-size:12pt">A recent, May 2017, spec has different grammar.</span></div><div><span style="font-size:12pt"><br></span></div><div><span style="font-size:12pt"><br></span></div><div><span style="font-size:12pt">Q2: </span></div><div><span style="font-size:12pt">I have BMV2 clone with following last commit.</span></div><div><span style="font-size:12pt">------------------------------<wbr>------------------------------<wbr>----------</span></div><div><p style="margin:0px">commit 41c1f2ed487ff086a1d582069e8bc6<wbr>8cab8ffdb0<br>Author: Antonin Bas <<a href="mailto:antonin@barefootnetworks.com" target="_blank">antonin@barefootnetworks.com</a>><br>Date: Fri Jul 7 11:49:00 2017 -0700</p><p style="margin:0px">Fix installation for simple_switch_grpc (#409)<br>Fixed error: "Recursive variable 'includep4bmdir' references itself"</p><p style="margin:0px">------------------------------<wbr>------------------------------<wbr>----------</p><p style="margin:0px"><br></p><p style="margin:0px">And </p><p style="margin:0px">I have p4c compiler clone with following last commit.</p><p style="margin:0px"><br></p><p style="margin:0px">------------------------------<wbr>------------------------------<wbr>----------</p><p style="margin:0px">commit ae458b34014e23f095accac8008875<wbr>7a07612a7a<br>Author: Calin Cascaval <<a href="mailto:cascaval@barefootnetworks.com" target="_blank">cascaval@barefootnetworks.com</a><wbr>><br>Date: Tue Jul 11 21:02:41 2017 -0700</p><p style="margin:0px">proper path to include directory</p><p style="margin:0px">------------------------------<wbr>------------------------------<wbr>----------</p><p style="margin:0px"><br></p><p style="margin:0px"><span style="font-size:12pt">If any one can confirm the exact commands to compile for bmv2(simple_switch target) and run on it, it will be great.(for the above commit versions)</span></p><p style="margin:0px"><span style="font-size:12pt">Though, I used python script in mininet folder.</span></p><p style="margin:0px"><br></p><p style="margin:0px"><br></p><p style="margin:0px">And the most important question </p><p style="margin:0px">Q3: </p><p style="margin:0px">I could run simple_router  json file(probably precompile from P414 ) on bmv2 simple_router target.</p><p style="margin:0px">It could run safely.</p><p style="margin:0px">So, is there any big change in execution of json files of P414 and p416?</p><p style="margin:0px"><br></p><p style="margin:0px">Being more precise, my code heavily depends on </p><p style="margin:0px">P4Objects::init_objects(std::i<wbr>stream *is,  LookupStructureFactory *lookup_factory, int device_id, size_t cxt_id,  </p><p style="margin:0px">                              <wbr>      std::shared_ptr<Transpor<wbr>tIface> notifications_transport, const std::set<header_field_pair> </p><p style="margin:0px">                              <wbr>      &required_fields, const ForceArith &arith_objects) {</p><p style="margin:0px">/* All the data structures(maps and vectors etc) being initialized here */</p><p style="margin:0px">}</p><p style="margin:0px"><br></p><p style="margin:0px">Is there any difference in filling up the data-structures for P4-14 and p4-16 jsons?</p><p style="margin:0px"><br></p></div><div><span style="font-size:12pt"><br></span></div><div><br></div><div><span name="x"></span><div><span style="font-size:medium">Best Regards,</span><br><span style="font-size:medium">Hardik Soni</span></div><span name="x"></span><br></div></div></div><br></div></div>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/<wbr>listinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>