[P4] p4c2py próbálkozások

Brunner Márton brmarci at caesar.elte.hu
Mon Feb 20 00:56:07 CET 2017


Sziasztok!

Ahogy a múltkori meetingen megbeszéltük, megpróbáltam összehozni a 
p4c2py dolgok fordítását. Amire jutottam azt nem igazán nevezném még 
sikernek, és még így sem volt túl egyszerű. Megpróbáltam minden lépést 
összegyűjteni, ha esetleg van javaslat, hogy a problémás lépéseket 
hogyan javíthatnám, akkor még próbálkozhatok vele.

Nálam egy pár extra package telepítésére szükség volt, a readme-ben 
említetteken kívül: *libtool m4 dh-autoreconf* (Ezeket az egyes hibák 
előkerülésekor a hibára rákeresve próbáltam összehozni.)

A p4c readme-jében szerepel, hogy a 16.04-es ubuntu-ra, a protobuf-nak 
csak egy korábbi verziója telepíthető apt-get-tel, így a frissebb 
verziót a githubról kell buildelni. (A 3.0.2-es verziót fordítottam, ez 
a leírás alapján: 
https://github.com/google/protobuf/blob/master/src/README.md)

A p4c-s github repo clone-ozásakor belefutottam még egy olyanba, hogy a 
benne szereplő submodul-t külön kell leszedni ("git submodule update 
--init --recursive" paranccsal).

Ezután következett a p4c forráskód fordítása, ami a következő hibához 
vezetett:

  /bin/mkdir -p './p4include'
*/usr/bin/install -c -m 644 ./backends/ebpf/p4include/ebpf_model.p4 
./p4include/core.p4 ./p4include/v1model.p4 './p4include'*
/usr/bin/install: './p4include/core.p4' and './p4include/core.p4' are 
the same file
/usr/bin/install: './p4include/v1model.p4' and './p4include/v1model.p4' 
are the same file
Makefile:1692: recipe for target 'install-p4includeHEADERS' failed
make[2]: *** [install-p4includeHEADERS] Error 1
make[2]: Leaving directory '/home/brmarci/Downloads/p4c'
Makefile:2466: recipe for target 'all-local' failed
make[1]: *** [all-local] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/brmarci/Downloads/p4c'
Makefile:1250: recipe for target 'all' failed
make: *** [all] Error 2

A vastagon szedett sor végrehajtása az utána levő két sort írja ki és 
1-es hibakóddal tér vissza, így a fordítás leáll.

Annyival még tovább mentem, hogy a Makefile-ból kiszedtem azt a sort ami 
a hibához vezet (ha jól értelmeztem ez csak azon száll el, hogy 
önmagukba akarja másolni a fájlokat). Ezután a make sikeresen lefutott, 
majd a p4c2py fordítása is (látszólag) hiba nélkül megtörtént. Viszont 
amikor a "python test_p4c.py "$P4C" 
$P4C/testdata/p4_16_samples/global-action.p4" parancsot futtatnám, ez a 
hiba fogad:

Traceback (most recent call last):
   File "test_p4c.py", line 126, in <module>
     node_count, _, _, tree = do_visit(p4program, (0, 0, [-1] * 
max_indent, []), print_op_in, print_op_out)
   File "test_p4c.py", line 70, in do_visit
     p4c.test_visitor(node, v)
RuntimeError: COMPILER BUG: /home/brmarci/Downloads/p4c//lib/crash.cpp:226
Exiting with SIGSEGV

Segmentation fault (core dumped)

Eddig jutottam. Robi, ha van valami javaslatod, hogy mit csináljak 
másként, akkor szívesen megpróbálom máshogy is.

Marci

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://plc.inf.elte.hu/pipermail/p4/attachments/20170220/c7eeaf6b/attachment.html>


More information about the P4 mailing list