forked from jafingerhut/p4-guide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dependencies.dot
106 lines (84 loc) · 5.25 KB
/
dependencies.dot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
digraph p4_dependencies {
node [shape = box];
// My hack for providing a kind of 'legend' for the drawing.
// There is likely a better way than this.
legen [label="Legend:\nSolid arcs are dependencies according to install instructions.\nDashed arcs represent git submodules, where the 'to' project is auto-installed\nif you run 'git clone --recursive' on the 'from' project.\nDashed boxes indicate deprecated repositories.\nDashed arcs from p4factory not shown in this chart to make the other dependencies clearer." style=bold];
// All nodes, with labels, for p4lang repositories
behavioral_model [label="behavioral-model\n(aka bmv2)"];
mininet [label="mininet"];
ntf [label="ntf\n(needs root\nprivileges)"];
p4_build [label="p4-build"];
p4_hlir [label="p4-hlir"];
p4app [label="p4app"];
p4c [label="p4c"];
p4c_behavioral [label="p4c-behavioral" style=dashed];
p4c_bm [label="p4c-bm"];
p4factory [label="p4factory" style=dashed];
p4ofagent [label="p4ofagent"];
papers [label="papers"];
PI [label="PI"];
ptf [label="ptf\n(needs root\nprivileges)"];
SAI [label="SAI"];
scapy_vxlan [label="scapy-vxlan\n(recommended\nfor additional\nheaders like\nVXLAN, ERSPAN,\nGENEVE, MPLS, NVGRE)"];
switch [label="switch"];
third_party [label="third-party"];
thrift [label="thrift"];
tutorials [label="tutorials"];
// All nodes, with labels, for non-p4lang repositories
grpc [label="github.com/\ngrpc/grpc"];
nanomsg [label="github.com/\nnanomsg/nanomsg"];
nnpy [label="github.com/\nnanomsg/nnpy"];
protobuf [label="github.com/\ngoogle/protobuf"];
googlemock_for_protobuf [label="github.com/\ngoogle/googlemock"];
googletest_for_protobuf [label="github.com/\ngoogle/googletest"];
floodlight_oftest [label="github.com/\nfloodlight/oftest"];
floodlight_indigo [label="github.com/\nfloodlight/indigo"];
floodlight_bigcode [label="github.com/\nfloodlight/bigcode"];
floodlight_infra [label="github.com/\nfloodlight/infra"];
floodlight_loxigen_artifacts [label="github.com/\nfloodlight/loxigen-artifacts"];
googleapis [label="github.com/\ngoogleapis/googleapis"];
googleapis [label="github.com/\ngoogle/googletest"];
davidjamesca_ctypesgen [label="github.com/\ndavidjamesca/ctypesgen"];
////////////////////////////////////////////////////////////////
// Dependencies
////////////////////////////////////////////////////////////////
behavioral_model -> thrift;
behavioral_model -> nanomsg;
behavioral_model -> nnpy [label="needed if\nyou use\nthe CLI" decorate=true];
ntf -> mininet;
p4_build -> behavioral_model;
p4_build -> p4c_bm;
p4c -> PI [label="control-plane/\nPI" decorate=true style=dashed];
PI -> googleapis [label="proto/\ngoogleapis" decorate=true style=dashed];
PI -> googletest [label="third_party/\ngoogletest" decorate=true style=dashed];
p4c_behavioral -> p4_hlir;
p4c_bm -> p4_hlir [label="installs p4-hlir\nas Python\npip module" decorate=true];
// p4factory -> behavioral_model [label="submodules/\nbm" decorate=true style=dashed];
// p4factory -> floodlight_oftest [label="submodules/\noftest" decorate=true style=dashed];
// p4factory -> p4_build [label="submodules/\np4-build" decorate=true style=dashed];
// p4factory -> p4c_behavioral [label="submodules/\np4c-behavioral" decorate=true style=dashed];
// p4factory -> p4c_bm [label="submodules/\np4c-bm" decorate=true style=dashed];
// p4factory -> p4ofagent [label="submodules/\np4ofagent" decorate=true style=dashed];
// p4factory -> ptf [label="submodules/\nptf" decorate=true style=dashed];
// p4factory -> switch [label="submodules/\nswitch" decorate=true style=dashed];
p4ofagent -> p4c_behavioral [label="depends on\nPD API\ngenerated by" decorate=true];
p4ofagent -> floodlight_indigo [label="submodules/\nindigo" decorate=true style=dashed];
floodlight_indigo -> floodlight_bigcode [label="submodules/\nbigcode" decorate=true style=dashed];
floodlight_indigo -> floodlight_infra [label="submodules/\ninfra" decorate=true style=dashed];
floodlight_indigo -> floodlight_loxigen_artifacts [label="submodules/\nloxigen-artifacts" decorate=true style=dashed];
floodlight_bigcode -> floodlight_infra [label="submodules/\ninfra" decorate=true style=dashed];
ptf -> scapy_vxlan;
SAI -> ptf [label="test/\nptf" decorate=true style=dashed];
SAI -> davidjamesca_ctypesgen [label="test/saithrift/\nctypesgen" decorate=true style=dashed];
switch -> p4_build [label="p4-build" decorate=true style=dashed];
switch -> SAI [label="switchsai/\nsubmodules/SAI" decorate=true style=dashed];
third_party -> grpc [label="grpc" decorate=true style=dashed];
third_party -> nanomsg [label="nanomsg" decorate=true style=dashed];
third_party -> nnpy [label="nnpy" decorate=true style=dashed];
third_party -> protobuf [label="protobuf" decorate=true style=dashed];
third_party -> googlemock_for_protobuf [label="protobuf-deps/\ngooglemock" decorate=true style=dashed];
third_party -> googletest_for_protobuf [label="protobuf-deps/\ngoogletest" decorate=true style=dashed];
third_party -> thrift [label="thrift" decorate=true style=dashed];
tutorials -> behavioral_model;
tutorials -> p4c_bm;
}