<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div>Hi experts,<div class=""><br class=""></div><div class="">We are working on a R&E project that will involve (among various objectives) p4 Software Development Environment set up using p4lang project tools. </div><div class="">(p4c, bmv2 etc.) We started to work on some packages and therefore we have some questions. </div><div class="">We might have more questions so let me know if I’m on the right mailing list. :-)</div><div class=""><br class=""></div><div class="">In our building process, we followed p4app approach.</div><div class=""><br class=""></div><div class="">In that purpose we started to analyse the various Dockerfile and landed in the 3rd party folder here: </div><div class=""><a href="https://github.com/p4lang/third-party" class="">https://github.com/p4lang/third-party</a> </div><div class=""><br class=""></div><div class="">Assumptions:</div><div class="">1- For now our target is Debian buster, we will for sure adapt the process for ubuntu is this is not too complex.</div><div class="">2- Long term goal: If successful and satisfying enough, we might ask Debian project to add these packages into the mainstream tree. </div><div class="">3- As a first steps, let’s focus only on the 3rd party repository. Building BMv2 targets and p4c will then be easier.</div><div class=""><br class=""></div><div class="">Here is the list of dependancies listed in 3rd party docker file : (and what we have done so far)</div><div class=""><br class=""></div><div class="">* cchache </div><div class="">  Need: accelerate compilation duration by caching operations</div><div class="">  p4lang: it uses 3.3</div><div class="">  Buster: cache 3.6-1<br class=""><div class="">  We plan to use buster 3.6-1 which is ( > 3.3 )</div><div class="">  It uses memcached</div><div class="">  -> so what can be done is using existing buster source deb and rebuild a packet with memcached trigger (not essential but TO BE DONE)</div><div class=""><br class=""></div><div class="">* scapy </div><div class="">   Need: used by ptf</div><div class="">   p4lang: it uses v2.2.0-dev and modified version made by BAREFOOT </div><div class="">   Buster: v2.4.0</div><div class="">   Last version of scapy have improved header (MPLS for example)</div><div class="">  -> we plan to reuse Buster 2.4.0 package and reuse it to build 2.4.2 as a base (—> DONE)</div><div class=""><br class=""></div><div class="">* PTF</div><div class="">   p4lang: It is a p4lang project </div><div class="">   Need: need scapy with additional header</div><div class="">   Buster: <no package></div><div class="">   -> we plan build ptf package  (—> DONE)</div><div class="">   One remark I had from one of our openSource expert is to port ptf to python3 (it refused to be installed using python3)</div><div class="">   It was mentioned that python 2.7 support end end of 2020.</div><div class=""><br class=""></div><div class="">* nanomsg</div><div class="">   p4lang: It uses v1.1.0 (SOVERSION is 5.0.0)</div><div class="">   Buster: 1.1.5</div><div class="">  —> we plan to use nanomsg from the official BUSTER repository (-> DONE)</div><div class=""><br class=""></div><div class=""><div class="">* nnpy</div><div class="">   p4lang: It uses an old RC version (tree 096998834451219ee7813d8977f6a4027b0ccb43) </div><div class="">   Buster: <no package></div></div><div class="">   -> we plan build nnpy 1.4.2 package  (—> TO BE DONE)</div><div class=""><br class=""></div><div class="">* thrift </div><div class=""><div class="">   p4lang: It uses v0.9.2</div><div class="">   Buster: v0.11.0</div></div><div class="">   -> we plan to use the official version in Buster: v0.11.0 (TO BE DONE)</div><div class=""><br class=""></div><div class="">* protobuf</div><div class="">   p4lang:  v3.2.0</div><div class="">   Buster: v3.6.1</div><div class=""><div class="">   -> we plan to use the official version in Buster: v3.6.1 (TO BE DONE)</div></div><div class=""><br class=""></div><div class=""><div class="">* protobuf-c </div><div class="">   p4lang:  v3.2.0</div><div class="">   Buster: v3.6.1</div><div class="">   -> we plan to use the official version in Buster: v3.6.1 (TO BE DONE)</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">* python-protobuf</div><div class="">   p4lang:v3.2.0</div><div class="">   Buster: v3.6.1</div><div class=""><div class="">   -> we plan to use the official version in Buster: v3.6.1 (TO BE DONE)</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">* grpc</div><div class="">  p4lang:  v1.3.2</div><div class="">  Buster: v1.6.4 (not sure here)</div><div class="">   -> we plan to use the official version in Buster: v1.6.4 (not sure here) (TO BE DONE)</div><div class=""><br class=""></div><div class="">* libyang</div><div class="">  p4lang: v0.16-r1</div><div class="">  Buster: 0.16.105-1 </div><div class=""><div class="">   -> we plan to use the official version in Buster: 0.16.105-1</div></div><div class=""><br class=""></div><div class="">* sysrepo</div><div class="">  p4lang: v0.7.5</div><div class="">  Buster: <no package></div><div class=""><div class="">  -> we plan build ptf package  (—> TO BE DONE DONE)</div></div><div class=""><br class=""></div><div class="">The questions are:</div><div class=""><br class=""></div><div class="">- Do you think we can use the distro (here BUSTER) package ? </div><div class="">For sysrepo/nnpy packages have to be built. The tricky packages are the one depending on openssl and related to graph and thrift.</div><div class="">According to your experience what is your feedback regarding compilation against these dependencies ? Is it something set on stone ?</div><div class=""><br class=""></div><div class="">In order to move forward, we plan to build p4lang containers using as much as possible the package above (so also the package we built )</div><div class="">in order to validate them.</div><div class=""><br class=""></div><div class="">PS1: Once built we will of course contribute back to p4lang and if it make sense provide additional support for other Debian like OS.</div><div class="">       We started weith BUSTER because our expert who is helping us is an exclusive debian BUSTER. </div><div class="">       Also it gives us an understanding of the whole p4lang suite dependancies.</div><div class=""><br class=""></div><div class="">PS2: I would like to thank Andy Fingerhut and Edgar Costa for they repository. I learned a lot from them.</div><div class=""><br class=""></div><div class="">Thanks in advance for your help then :)</div><div class=""><br class=""></div><div class="">All the best,</div><div class=""><br class=""></div><div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">Have a good week end & "À bientôt",</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">--  Frederic</div><br class="Apple-interchange-newline"></div></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br class=""></div></body></html>