xref: /aosp_15_r20/build/make/tools/compliance/cmd/testdata/README.md (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
1*9e94795aSAndroid Build Coastguard Worker## Test data
2*9e94795aSAndroid Build Coastguard Worker
3*9e94795aSAndroid Build Coastguard WorkerEach non-regression directory under testdata/ defines a similar build graph.
4*9e94795aSAndroid Build Coastguard WorkerAll have the same structure, but different versions of the graph have different
5*9e94795aSAndroid Build Coastguard Workerlicense metadata.
6*9e94795aSAndroid Build Coastguard Worker
7*9e94795aSAndroid Build Coastguard WorkerThe regression* directories can have whatever structure is required for the
8*9e94795aSAndroid Build Coastguard Workerspecific test case.
9*9e94795aSAndroid Build Coastguard Worker
10*9e94795aSAndroid Build Coastguard Worker### Testdata build graph structure:
11*9e94795aSAndroid Build Coastguard Worker
12*9e94795aSAndroid Build Coastguard WorkerThe structure is meant to simulate some common scenarios:
13*9e94795aSAndroid Build Coastguard Worker
14*9e94795aSAndroid Build Coastguard Worker*   a `lib/` directory with some libraries
15*9e94795aSAndroid Build Coastguard Worker*   a `bin/` directory with some executables
16*9e94795aSAndroid Build Coastguard Worker*   one of the binaries, `bin3`, is a toolchain executable like a compiler
17*9e94795aSAndroid Build Coastguard Worker*   an `application` built with the `bin3` compiler and linking a couple libraries
18*9e94795aSAndroid Build Coastguard Worker*   a pure aggregation `continer.zip` that merely bundles files together, and
19*9e94795aSAndroid Build Coastguard Worker*   an apex file (more like an apk file) with some binaries and libraries.
20*9e94795aSAndroid Build Coastguard Worker
21*9e94795aSAndroid Build Coastguard WorkerThe testdata starts with a `firstparty/` version containng only first-party
22*9e94795aSAndroid Build Coastguard Workerlicenses, and each subsequent directory introduces more restrictive conditions:
23*9e94795aSAndroid Build Coastguard Worker
24*9e94795aSAndroid Build Coastguard Worker*   `notice/` starts with `firstparty/` adds third-party notice conditions
25*9e94795aSAndroid Build Coastguard Worker*   `reciprocal/` starts with `notice/` and adds some reciprocal conditions
26*9e94795aSAndroid Build Coastguard Worker*   `restricted/` starts with `reciprocal/` and adds some restricted conditions
27*9e94795aSAndroid Build Coastguard Worker*   `proprietary/` starts with `restricted/` and add some privacy conditions
28*9e94795aSAndroid Build Coastguard Worker
29*9e94795aSAndroid Build Coastguard Worker#### a `lib/` directory with some libraries
30*9e94795aSAndroid Build Coastguard Worker
31*9e94795aSAndroid Build Coastguard Worker```dot
32*9e94795aSAndroid Build Coastguard Workerstrict digraph {
33*9e94795aSAndroid Build Coastguard Worker	liba [label="lib/liba.so.meta_lic"];
34*9e94795aSAndroid Build Coastguard Worker	libb [label="lib/libb.so.meta_lic"];
35*9e94795aSAndroid Build Coastguard Worker	libc [label="lib/libc.a.meta_lic"];
36*9e94795aSAndroid Build Coastguard Worker	libd [label="lib/libd.so.meta_lic"];
37*9e94795aSAndroid Build Coastguard Worker}
38*9e94795aSAndroid Build Coastguard Worker```
39*9e94795aSAndroid Build Coastguard Worker
40*9e94795aSAndroid Build Coastguard Worker#### a `bin/` directory with some executables
41*9e94795aSAndroid Build Coastguard Worker
42*9e94795aSAndroid Build Coastguard Workerstrict digraph {
43*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
44*9e94795aSAndroid Build Coastguard Worker	bin1 [label="bin/bin1.meta_lic"];
45*9e94795aSAndroid Build Coastguard Worker	bin2 [label="bin/bin2.meta_lic"];
46*9e94795aSAndroid Build Coastguard Worker	bin3 [label="bin/bin3.meta_lic\ntoolchain"];
47*9e94795aSAndroid Build Coastguard Worker	liba [label="lib/liba.so.meta_lic"];
48*9e94795aSAndroid Build Coastguard Worker	libb [label="lib/libb.so.meta_lic"];
49*9e94795aSAndroid Build Coastguard Worker	libc [label="lib/libc.a.meta_lic"];
50*9e94795aSAndroid Build Coastguard Worker	libd [label="lib/libd.so.meta_lic"];
51*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
52*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
53*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
54*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
55*9e94795aSAndroid Build Coastguard Worker	{rank=same; bin1 bin2 bin3}
56*9e94795aSAndroid Build Coastguard Worker}
57*9e94795aSAndroid Build Coastguard Worker
58*9e94795aSAndroid Build Coastguard Worker#### an `application` built with the `bin3` compiler and linking a couple libraries
59*9e94795aSAndroid Build Coastguard Worker
60*9e94795aSAndroid Build Coastguard Worker```dot
61*9e94795aSAndroid Build Coastguard Workerstrict digraph {
62*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
63*9e94795aSAndroid Build Coastguard Worker	app [label="application.meta_lic"];
64*9e94795aSAndroid Build Coastguard Worker	bin3 [label="bin/bin3.meta_lic"];
65*9e94795aSAndroid Build Coastguard Worker	liba [label="lib/liba.so.meta_lic"];
66*9e94795aSAndroid Build Coastguard Worker	libb [label="lib/libb.so.meta_lic"];
67*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
68*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
69*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
70*9e94795aSAndroid Build Coastguard Worker	{rank=same; app}
71*9e94795aSAndroid Build Coastguard Worker}
72*9e94795aSAndroid Build Coastguard Worker```
73*9e94795aSAndroid Build Coastguard Worker
74*9e94795aSAndroid Build Coastguard Worker#### a pure aggregation `container.zip` that merely bundles files together
75*9e94795aSAndroid Build Coastguard Worker
76*9e94795aSAndroid Build Coastguard Worker```dot
77*9e94795aSAndroid Build Coastguard Workerstrict digraph {
78*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
79*9e94795aSAndroid Build Coastguard Worker	bin1 [label="bin/bin1.meta_lic"];
80*9e94795aSAndroid Build Coastguard Worker	bin2 [label="bin/bin2.meta_lic"];
81*9e94795aSAndroid Build Coastguard Worker	container [label="container.zip.meta_lic"];
82*9e94795aSAndroid Build Coastguard Worker	liba [label="lib/liba.so.meta_lic"];
83*9e94795aSAndroid Build Coastguard Worker	libb [label="lib/libb.so.meta_lic"];
84*9e94795aSAndroid Build Coastguard Worker	libc [label="lib/libc.a.meta_lic"];
85*9e94795aSAndroid Build Coastguard Worker	libd [label="lib/libd.so.meta_lic"];
86*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
87*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
88*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
89*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
90*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
91*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
92*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
93*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
94*9e94795aSAndroid Build Coastguard Worker	{rank=same; container}
95*9e94795aSAndroid Build Coastguard Worker}
96*9e94795aSAndroid Build Coastguard Worker```
97*9e94795aSAndroid Build Coastguard Worker
98*9e94795aSAndroid Build Coastguard Worker#### an apex file (more like an apk file) with some binaries and libraries
99*9e94795aSAndroid Build Coastguard Worker
100*9e94795aSAndroid Build Coastguard Worker```dot
101*9e94795aSAndroid Build Coastguard Workerstrict digraph {
102*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
103*9e94795aSAndroid Build Coastguard Worker	apex [label="highest.apex.meta_lic"];
104*9e94795aSAndroid Build Coastguard Worker	bin1 [label="bin/bin1.meta_lic"];
105*9e94795aSAndroid Build Coastguard Worker	bin2 [label="bin/bin2.meta_lic"];
106*9e94795aSAndroid Build Coastguard Worker	bin3 [label="bin/bin3.meta_lic"];
107*9e94795aSAndroid Build Coastguard Worker	liba [label="lib/liba.so.meta_lic"];
108*9e94795aSAndroid Build Coastguard Worker	libb [label="lib/libb.so.meta_lic"];
109*9e94795aSAndroid Build Coastguard Worker	libc [label="lib/libc.a.meta_lic"];
110*9e94795aSAndroid Build Coastguard Worker	libd [label="lib/libd.so.meta_lic"];
111*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
112*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
113*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
114*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
115*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
116*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
117*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
118*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
119*9e94795aSAndroid Build Coastguard Worker	{rank=same; apex}
120*9e94795aSAndroid Build Coastguard Worker}
121*9e94795aSAndroid Build Coastguard Worker```
122*9e94795aSAndroid Build Coastguard Worker
123*9e94795aSAndroid Build Coastguard Worker#### the whole build graph
124*9e94795aSAndroid Build Coastguard Worker
125*9e94795aSAndroid Build Coastguard Worker```dot
126*9e94795aSAndroid Build Coastguard Workerstrict digraph {
127*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
128*9e94795aSAndroid Build Coastguard Worker	apex [label="highest.apex.meta_lic"];
129*9e94795aSAndroid Build Coastguard Worker	app [label="application.meta_lic"];
130*9e94795aSAndroid Build Coastguard Worker	bin1 [label="bin/bin1.meta_lic"];
131*9e94795aSAndroid Build Coastguard Worker	bin2 [label="bin/bin2.meta_lic"];
132*9e94795aSAndroid Build Coastguard Worker	bin3 [label="bin/bin3.meta_lic"];
133*9e94795aSAndroid Build Coastguard Worker	container [label="container.zip.meta_lic"];
134*9e94795aSAndroid Build Coastguard Worker	liba [label="lib/liba.so.meta_lic"];
135*9e94795aSAndroid Build Coastguard Worker	libb [label="lib/libb.so.meta_lic"];
136*9e94795aSAndroid Build Coastguard Worker	libc [label="lib/libc.a.meta_lic"];
137*9e94795aSAndroid Build Coastguard Worker	libd [label="lib/libd.so.meta_lic"];
138*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
139*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
140*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
141*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
142*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
143*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
144*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
145*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
146*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
147*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
148*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
149*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
150*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
151*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
152*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
153*9e94795aSAndroid Build Coastguard Worker	{rank=same; app container apex}
154*9e94795aSAndroid Build Coastguard Worker}
155*9e94795aSAndroid Build Coastguard Worker```
156*9e94795aSAndroid Build Coastguard Worker
157*9e94795aSAndroid Build Coastguard Worker
158*9e94795aSAndroid Build Coastguard Worker### firstparty/ testdata starts with all first-party licensing
159*9e94795aSAndroid Build Coastguard Worker
160*9e94795aSAndroid Build Coastguard Worker```dot
161*9e94795aSAndroid Build Coastguard Workerstrict digraph {
162*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
163*9e94795aSAndroid Build Coastguard Worker	app [label="firstparty/application.meta_lic"];
164*9e94795aSAndroid Build Coastguard Worker	bin1 [label="firstparty/bin/bin1.meta_lic"];
165*9e94795aSAndroid Build Coastguard Worker	bin2 [label="firstparty/bin/bin2.meta_lic"];
166*9e94795aSAndroid Build Coastguard Worker	bin3 [label="firstparty/bin/bin3.meta_lic"];
167*9e94795aSAndroid Build Coastguard Worker	container [label="firstparty/container.zip.meta_lic"];
168*9e94795aSAndroid Build Coastguard Worker	apex [label="firstparty/highest.apex.meta_lic"];
169*9e94795aSAndroid Build Coastguard Worker	liba [label="firstparty/lib/liba.so.meta_lic"];
170*9e94795aSAndroid Build Coastguard Worker	libb [label="firstparty/lib/libb.so.meta_lic"];
171*9e94795aSAndroid Build Coastguard Worker	libc [label="firstparty/lib/libc.a.meta_lic"];
172*9e94795aSAndroid Build Coastguard Worker	lib [label="firstparty/lib/libd.so.meta_lic"];
173*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
174*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
175*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
176*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
177*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
178*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
179*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
180*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
181*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
182*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
183*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
184*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
185*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
186*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
187*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
188*9e94795aSAndroid Build Coastguard Worker	{rank=same; app container apex}
189*9e94795aSAndroid Build Coastguard Worker}
190*9e94795aSAndroid Build Coastguard Worker```
191*9e94795aSAndroid Build Coastguard Worker
192*9e94795aSAndroid Build Coastguard Worker### notice/ testdata introduces third-party notice conditions
193*9e94795aSAndroid Build Coastguard Worker
194*9e94795aSAndroid Build Coastguard Worker```dot
195*9e94795aSAndroid Build Coastguard Workerstrict digraph {
196*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
197*9e94795aSAndroid Build Coastguard Worker	app [label="notice/application.meta_lic"];
198*9e94795aSAndroid Build Coastguard Worker	bin1 [label="notice/bin/bin1.meta_lic"];
199*9e94795aSAndroid Build Coastguard Worker	bin2 [label="notice/bin/bin2.meta_lic"];
200*9e94795aSAndroid Build Coastguard Worker	bin3 [label="notice/bin/bin3.meta_lic\nnotice"];
201*9e94795aSAndroid Build Coastguard Worker	container [label="notice/container.zip.meta_lic"];
202*9e94795aSAndroid Build Coastguard Worker	apex [label="notice/highest.apex.meta_lic"];
203*9e94795aSAndroid Build Coastguard Worker	liba [label="notice/lib/liba.so.meta_lic\nnotice"];
204*9e94795aSAndroid Build Coastguard Worker	libb [label="notice/lib/libb.so.meta_lic"];
205*9e94795aSAndroid Build Coastguard Worker	libc [label="notice/lib/libc.a.meta_lic\nnotice"];
206*9e94795aSAndroid Build Coastguard Worker	libd [label="notice/lib/libd.so.meta_lic\nnotice"];
207*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
208*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
209*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
210*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
211*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
212*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
213*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
214*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
215*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
216*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
217*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
218*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
219*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
220*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
221*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
222*9e94795aSAndroid Build Coastguard Worker	{rank=same; app container apex}
223*9e94795aSAndroid Build Coastguard Worker}
224*9e94795aSAndroid Build Coastguard Worker```
225*9e94795aSAndroid Build Coastguard Worker
226*9e94795aSAndroid Build Coastguard Worker### reciprocal/ testdata introduces third-party reciprocal sharing conditions
227*9e94795aSAndroid Build Coastguard Worker
228*9e94795aSAndroid Build Coastguard Worker```dot
229*9e94795aSAndroid Build Coastguard Workerstrict digraph {
230*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
231*9e94795aSAndroid Build Coastguard Worker	app [label="reciprocal/application.meta_lic"];
232*9e94795aSAndroid Build Coastguard Worker	bin1 [label="reciprocal/bin/bin1.meta_lic"];
233*9e94795aSAndroid Build Coastguard Worker	bin2 [label="reciprocal/bin/bin2.meta_lic"];
234*9e94795aSAndroid Build Coastguard Worker	bin3 [label="reciprocal/bin/bin3.meta_lic\nnotice"];
235*9e94795aSAndroid Build Coastguard Worker	container [label="reciprocal/container.zip.meta_lic"];
236*9e94795aSAndroid Build Coastguard Worker	apex [label="reciprocal/highest.apex.meta_lic"];
237*9e94795aSAndroid Build Coastguard Worker	liba [label="reciprocal/lib/liba.so.meta_lic\nreciprocal"];
238*9e94795aSAndroid Build Coastguard Worker	libb [label="reciprocal/lib/libb.so.meta_lic"];
239*9e94795aSAndroid Build Coastguard Worker	libc [label="reciprocal/lib/libc.a.meta_lic\nreciprocal"];
240*9e94795aSAndroid Build Coastguard Worker	libd [label="reciprocal/lib/libd.so.meta_lic\nnotice"];
241*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
242*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
243*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
244*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
245*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
246*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
247*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
248*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
249*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
250*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
251*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
252*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
253*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
254*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
255*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
256*9e94795aSAndroid Build Coastguard Worker	{rank=same; app container apex}
257*9e94795aSAndroid Build Coastguard Worker}
258*9e94795aSAndroid Build Coastguard Worker```
259*9e94795aSAndroid Build Coastguard Worker
260*9e94795aSAndroid Build Coastguard Worker### restricted/ testdata introduces restricted source sharing conditions
261*9e94795aSAndroid Build Coastguard Worker
262*9e94795aSAndroid Build Coastguard Worker```dot
263*9e94795aSAndroid Build Coastguard Workerstrict digraph {
264*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
265*9e94795aSAndroid Build Coastguard Worker	app [label="restricted/application.meta_lic"];
266*9e94795aSAndroid Build Coastguard Worker	bin1 [label="restricted/bin/bin1.meta_lic"];
267*9e94795aSAndroid Build Coastguard Worker	bin2 [label="restricted/bin/bin2.meta_lic"];
268*9e94795aSAndroid Build Coastguard Worker	bin3 [label="restricted/bin/bin3.meta_lic\nrestricted"];
269*9e94795aSAndroid Build Coastguard Worker	container [label="restricted/container.zip.meta_lic"];
270*9e94795aSAndroid Build Coastguard Worker	apex [label="restricted/highest.apex.meta_lic"];
271*9e94795aSAndroid Build Coastguard Worker	liba [label="restricted/lib/liba.so.meta_lic\nrestricted"];
272*9e94795aSAndroid Build Coastguard Worker	libb [label="restricted/lib/libb.so.meta_lic\nrestricted"];
273*9e94795aSAndroid Build Coastguard Worker	libc [label="restricted/lib/libc.a.meta_lic\nreciprocal"];
274*9e94795aSAndroid Build Coastguard Worker	libd [label="restricted/lib/libd.so.meta_lic\nnotice"];
275*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
276*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
277*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
278*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
279*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
280*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
281*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
282*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
283*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
284*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
285*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
286*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
287*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
288*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
289*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
290*9e94795aSAndroid Build Coastguard Worker	{rank=same; app container apex}
291*9e94795aSAndroid Build Coastguard Worker}
292*9e94795aSAndroid Build Coastguard Worker```
293*9e94795aSAndroid Build Coastguard Worker
294*9e94795aSAndroid Build Coastguard Worker### proprietary/ testdata introduces privacy conditions
295*9e94795aSAndroid Build Coastguard Worker
296*9e94795aSAndroid Build Coastguard Worker```dot
297*9e94795aSAndroid Build Coastguard Workerstrict digraph {
298*9e94795aSAndroid Build Coastguard Worker	rankdir=LR;
299*9e94795aSAndroid Build Coastguard Worker	app [label="proprietary/application.meta_lic"];
300*9e94795aSAndroid Build Coastguard Worker	bin1 [label="proprietary/bin/bin1.meta_lic"];
301*9e94795aSAndroid Build Coastguard Worker	bin2 [label="proprietary/bin/bin2.meta_lic\nby_exception_only\nproprietary"];
302*9e94795aSAndroid Build Coastguard Worker	bin3 [label="proprietary/bin/bin3.meta_lic\nrestricted"];
303*9e94795aSAndroid Build Coastguard Worker	container [label="proprietary/container.zip.meta_lic"];
304*9e94795aSAndroid Build Coastguard Worker	apex [label="proprietary/highest.apex.meta_lic"];
305*9e94795aSAndroid Build Coastguard Worker	liba [label="proprietary/lib/liba.so.meta_lic\nby_exception_only\nproprietary"];
306*9e94795aSAndroid Build Coastguard Worker	libb [label="proprietary/lib/libb.so.meta_lic\nrestricted"];
307*9e94795aSAndroid Build Coastguard Worker	libc [label="proprietary/lib/libc.a.meta_lic\nby_exception_only\nproprietary"];
308*9e94795aSAndroid Build Coastguard Worker	libd [label="proprietary/lib/libd.so.meta_lic\nnotice"];
309*9e94795aSAndroid Build Coastguard Worker	app -> bin3 [label="toolchain"];
310*9e94795aSAndroid Build Coastguard Worker	app -> liba [label="static"];
311*9e94795aSAndroid Build Coastguard Worker	app -> libb [label="dynamic"];
312*9e94795aSAndroid Build Coastguard Worker	bin1 -> liba [label="static"];
313*9e94795aSAndroid Build Coastguard Worker	bin1 -> libc [label="static"];
314*9e94795aSAndroid Build Coastguard Worker	bin2 -> libb [label="dynamic"];
315*9e94795aSAndroid Build Coastguard Worker	bin2 -> libd [label="dynamic"];
316*9e94795aSAndroid Build Coastguard Worker	container -> bin1 [label="static"];
317*9e94795aSAndroid Build Coastguard Worker	container -> bin2 [label="static"];
318*9e94795aSAndroid Build Coastguard Worker	container -> liba [label="static"];
319*9e94795aSAndroid Build Coastguard Worker	container -> libb [label="static"];
320*9e94795aSAndroid Build Coastguard Worker	apex -> bin1 [label="static"];
321*9e94795aSAndroid Build Coastguard Worker	apex -> bin2 [label="static"];
322*9e94795aSAndroid Build Coastguard Worker	apex -> liba [label="static"];
323*9e94795aSAndroid Build Coastguard Worker	apex -> libb [label="static"];
324*9e94795aSAndroid Build Coastguard Worker	{rank=same; app container apex}
325*9e94795aSAndroid Build Coastguard Worker}
326*9e94795aSAndroid Build Coastguard Worker```
327