<div dir="ltr"><div><div><div><div>Hi Jim,<br><br></div>There was recently an update to the master branches of bmv2 (the software switch, <a href="https://github.com/p4lang/behavioral-model">https://github.com/p4lang/behavioral-model</a>) and p4c-bm (the compiler, <a href="https://github.com/p4lang/p4c-bm">https://github.com/p4lang/p4c-bm</a>). The format of the JSON, which is produced by the compiler from the P4 program and fed to the bmv2 switch, changed slightly. The latest bmv2 can still consume JSON files in the old format. However, the JSON files produced by the latest p4c-bm compiler version cannot be consumed by older bmv2 versions. If you try to give a recent JSON to an older bmv2 version, you will get the error you are observing (I just confirmed it on my machine).<br></div>So in a nutshell, the solution should be to simply update bmv2 (i.e. pull master, re-compile and re-install).<br><br></div>Sorry for the inconvenience.<br><br></div>Antonin<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 11, 2016 at 10:02 PM, Jim Kao <span dir="ltr"><<a href="mailto:junghongkao@gmail.com" target="_blank">junghongkao@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">Antonin<div><br></div><div>After I build the switch but it failed to run it due to failing to locating header file .</div><div><br></div><div><div><div>jim@onie-server:~/sdb/switch$ sudo ./bmv2/run_bm.sh </div><div>simple_switch: ../../include/bm/bm_sim/byteco<wbr>ntainer.h:95: bm::ByteContainer::ByteContain<wbr>er(const string&): Assertion `(size - idx) > 0' failed.</div><div>./bmv2/run_bm.sh: line 16:  8397 Aborted                 (core dumped) /usr/local/bin/simple_switch --log-console -i 0@veth0 -i 1@veth2 -i 2@veth4 -i 3@veth6 -i 4@veth8 -i 5@veth10 -i 6@veth12 -i 7@veth14 -i 8@veth16 -i 64@veth250 --thrift-port 10001 --pcap $JSON_FILE</div></div><div><br></div><div><div>veth pair setup is done through the script tools/veth_setup.sh.</div><div><br></div><div>bmv2 is compiled and installed successful.</div></div><div><br></div><div>jim@onie-server:~/sdb/bmv2$ ./configure --with-pdfixed<br></div><div><div>Features recap ......................</div><div>Coverage enabled .............. : no</div><div>Debugger enabled .............. : no</div><div>Logging macros enabled ........ : yes</div><div>Event logger enabled .......... : yes</div><div>With pdfixed .................. : yes</div></div><div><br></div><div><div>jim@onie-server:~/sdb/bmv2$ sudo make install</div></div><div><br></div><div>What might I miss ?</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Jim</div><div><br></div><div><br></div></font></span></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 1, 2016 at 1:10 PM, Antonin Bas <span dir="ltr"><<a href="mailto:antonin@barefootnetworks.com" target="_blank">antonin@barefootnetworks.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"><div><div><div><div><div><div><div>Hi Sarath,<br><br></div>I would recommend installing bmv2 in a standard system location. Just run "sudo make install" after having compiled bmv2. Then switch will have no issue finding bmv2 and the pdfixed headers.<br></div>Once bmv2 is installed, please run "./configure --with-bmv2 --with-switchsai" again in your switch directory. You do not need to worry about p4-build, as the switch configure script will take care of running the p4-build configure script.<br></div>So in a nutshell I would say the only thing missing from your steps is the installation of bmv2 with "sudo make install".<br></div>You may want to pay attention to the output of the switch configure script. If everything goes smoothly, you should see a short recap message at the end with the detail of the options you provided.<br><br></div>Please let us know if you run into more issues.<br><br></div>Best,<br><br></div>Antonin<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Wed, Aug 31, 2016 at 7:44 PM, Sarath Kamisetty <span dir="ltr"><<a href="mailto:sarath.kamisetty@gmail.com" target="_blank">sarath.kamisetty@gmail.com</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><div dir="ltr">Hi,<div><br></div><div>I am trying to follow the instructions posted in <a href="https://github.com/p4lang/switch" target="_blank">https://github.com/p4lang/swit<wbr>ch</a> to compile and run the switch (switch.p4). Is there one single script that performs all the steps ? I couldn't find one. Any other documentation to get this up and running will be helpful. </div><div><br></div><div>I did the following:</div><div><br></div><div>#1) Installed PTF</div><div>#2) Installed p4c-bmv2</div><div><font face="arial, helvetica, sans-serif">#3) Compiled bmv2 with <span style="color:rgb(51,51,51);font-size:13.6px;line-height:20.4px;background-color:rgba(0,0,0,0.0392157)">--with-pdfixed option. Where do I install this ? Instructions at </span><font color="#333333"><span style="font-size:13.6px;line-height:20.4px"><a href="https://github.com/p4lang/behavioral-model" target="_blank">https://github.com/p4lang/b<wbr>ehavioral-model</a> only mention how to compile, not about installing it in any location. It is unclear how this switch.p4 will use this path I compiled bmv2 in.</span></font></font></div><div><br></div><div><font face="arial, helvetica, sans-serif" color="#333333"><span style="font-size:13.6px;line-height:20.4px">At this point, I did the following under the switch/ directory</span></font></div><div><font face="arial, helvetica, sans-serif" color="#333333"><span style="font-size:13.6px;line-height:20.4px"><br></span></font></div><div><pre style="font-family:consolas,"liberation mono",menlo,courier,monospace;font-size:13.6px;margin-top:0px;margin-bottom:16px;font-stretch:normal;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;border-radius:3px;color:rgb(51,51,51);background-color:rgb(247,247,247)"><code style="font-family:consolas,"liberation mono",menlo,courier,monospace;font-size:13.6px;padding:0px;margin:0px;border-radius:3px;word-break:normal;border:0px;display:inline;overflow:visible;line-height:inherit;word-wrap:normal;background-image:initial;background-color:transparent;background-position:initial;background-repeat:initial">./autogen.sh
 ./configure --with-bmv2 --with-switchsai
 make</code></pre></div><div>And "make" failed promptly with the following error:</div><div><br></div><div>[saratk@ubuntu:~/Projects/ws1/<wbr>Closet/p4/matrix/apps/switch]m<wbr>ake <br></div><div><div>make  all-recursive</div><div>make[1]: Entering directory `/home/saratk/Projects/ws1/Clo<wbr>set/p4/matrix/apps/switch'</div><div>Making all in p4-build</div><div>make[2]: Entering directory `/home/saratk/Projects/ws1/Clo<wbr>set/p4/matrix/apps/switch/p4-b<wbr>uild'</div><div>make[2]: *** No rule to make target `all'.  Stop.</div><div>make[2]: Leaving directory `/home/saratk/Projects/ws1/Clo<wbr>set/p4/matrix/apps/switch/p4-b<wbr>uild'</div><div>make[1]: *** [all-recursive] Error 1</div><div>make[1]: Leaving directory `/home/saratk/Projects/ws1/Clo<wbr>set/p4/matrix/apps/switch'</div><div>make: *** [all] Error 2</div><div>[saratk@ubuntu:~/Projects/ws1/<wbr>Closet/p4/matrix/apps/switch]</div><div><br></div></div><div>Suspecting something wrong with p4-build/, I followed instructions at <a href="https://github.com/p4lang/p4-build/" target="_blank">https://github.com/p4lang/p<wbr>4-build/</a> under switch/p4-build/ and "configure" step failed:</div><div><br></div><div>./configure --with-bmv2 P4_NAME=switch P4_PATH=/home/<user>/p4-apps/s<wbr>witch/p4src/switch.p4<br></div><div><br></div><div>...</div><div>...</div><div><div><div>checking for vector... yes</div><div>checking for p4c-bmv2... /usr/local/bin/p4c-bmv2</div><div><b><font color="#ff0000">checking bm/pdfixed/pd_common.h usability... no</font></b></div><div><b><font color="#ff0000">checking bm/pdfixed/pd_common.h presence... no</font></b></div><div><b><font color="#ff0000">checking for bm/pdfixed/pd_common.h... no</font></b></div><div><b style="background-color:rgb(255,255,255)"><font color="#ff0000">configure: error: bmv2 pdfixed headers not found</font></b></div><div><font color="#ff0000"><b style="background-color:rgb(255,255,255)">configure: error: ./co</b><b>nfigure failed for p4-build</b></font></div></div><div><br></div><div>However, I do see these files from step 3 in different path. Is there some environment variable that I need to set so this step succeeds ? Pls. help.</div></div><div><br></div><div>Thanks,</div><div>Sarat</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><span><font color="#888888"><br></font></span></blockquote></div><span><font color="#888888"><br><br clear="all"><br>-- <br><div data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</font></span></div>
<br>______________________________<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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>