blob: 70ef20d069da46f4042c3ae7fa459f3e81bee36b [file] [log] [blame]
Thomas Vachuskaf5d17202018-06-12 17:28:13 -07001UTILS = [
2 "//utils/osgiwrap:osgi-jar",
3 "//utils/osgi:onlab-osgi",
4 "//utils/junit:onlab-junit",
5 "//utils/misc:onlab-misc",
6 "//utils/rest:onlab-rest",
Thomas Vachuskaf5d17202018-06-12 17:28:13 -07007]
8
9API = [
10 "//core/api:onos-api",
Thomas Vachuskaf5d17202018-06-12 17:28:13 -070011]
12
13CORE = UTILS + API + [
14 "//core/net:onos-core-net",
15 "//core/common:onos-core-common",
Brian O'Connorca05e1f2020-01-07 11:28:46 -080016 "//core/protobuf/models:onos-core-protobuf-models",
17 "//core/protobuf/models/proto:onos-core-protobuf-models-proto",
Ray Milkey324af932018-06-20 19:50:31 -070018 "//core/store/primitives:onos-core-primitives",
Thomas Vachuskaf5d17202018-06-12 17:28:13 -070019 "//core/store/serializers:onos-core-serializers",
20 "//core/store/dist:onos-core-dist",
Brian O'Connorca05e1f2020-01-07 11:28:46 -080021 # "//core/security:onos-security",
Thomas Vachuskaf5d17202018-06-12 17:28:13 -070022 "//core/store/persistence:onos-core-persistence",
Thomas Vachuskaf5d17202018-06-12 17:28:13 -070023 "//cli:onos-cli",
Ray Milkey3ca46e92018-06-13 10:21:53 -070024 "//drivers/utilities:onos-drivers-utilities",
Ray Milkey18fb0812018-06-21 10:32:53 -070025 "//providers/general/device:onos-providers-general-device",
Ray Milkey324af932018-06-20 19:50:31 -070026 "//web/api:onos-rest",
Thomas Vachuskaf5d17202018-06-12 17:28:13 -070027]
28
Thomas Vachuska1ae26c62018-07-09 13:40:16 -070029FEATURES = [
30 "//tools/package/features:onos-thirdparty-base",
31 "//tools/package/features:onos-thirdparty-web",
32 "//tools/package/features:onos-api",
33 "//tools/package/features:onos-core",
Thomas Vachuska03c608c2018-07-10 16:45:08 -070034 "//tools/package/features:onos-cli",
35 "//tools/package/features:onos-rest",
Ray Milkeyd84f89b2018-08-17 14:54:17 -070036 # "//tools/package/features:onos-security",
Thomas Vachuska1ae26c62018-07-09 13:40:16 -070037]
38
Brian O'Connorca05e1f2020-01-07 11:28:46 -080039#
40# ONOS Profile Maps
41#
42# To include a JAR or app in a specific profile, add the profile name
43# to the list in the maps below. If multiple profiles are listed,
44# then it will be included in each profile. Every item included in the
45# map will be included in the default profile (build with no profile
46# specified).
47#
48
49#
50# ONOS Protocols and Providers
51#
52
53PROTOCOL_MAP = {
54 "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio": [],
55 "//protocols/bgp/api:onos-protocols-bgp-api": [],
56 "//protocols/bgp/ctl:onos-protocols-bgp-ctl": [],
57 "//protocols/isis/api:onos-protocols-isis-api": [],
58 "//protocols/isis/ctl:onos-protocols-isis-ctl": [],
59 "//protocols/isis/isisio:onos-protocols-isis-isisio": [],
60 "//protocols/lisp/api:onos-protocols-lisp-api": [],
61 "//protocols/lisp/ctl:onos-protocols-lisp-ctl": [],
62 "//protocols/lisp/msg:onos-protocols-lisp-msg": [],
63 "//protocols/netconf/api:onos-protocols-netconf-api": [],
64 "//protocols/netconf/ctl:onos-protocols-netconf-ctl": [],
65 "//protocols/openflow/api:onos-protocols-openflow-api": ["seba"],
66 "//protocols/openflow/ctl:onos-protocols-openflow-ctl": ["seba"],
67 "//protocols/ospf/api:onos-protocols-ospf-api": [],
68 "//protocols/ospf/protocol:onos-protocols-ospf-protocol": [],
69 "//protocols/ospf/ctl:onos-protocols-ospf-ctl": [],
70 "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc": [],
71 "//protocols/ovsdb/api:onos-protocols-ovsdb-api": [],
72 "//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl": [],
73 "//protocols/p4runtime/api:onos-protocols-p4runtime-api": ["stratum"],
Yi Tseng0033dcb2020-01-22 17:54:47 -080074 "//protocols/p4runtime/model:onos-protocols-p4runtime-model": ["stratum"],
Brian O'Connorca05e1f2020-01-07 11:28:46 -080075 "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio": [],
76 "//protocols/pcep/server/api:onos-protocols-pcep-server-api": [],
77 "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl": [],
78 "//protocols/rest/api:onos-protocols-rest-api": [],
79 "//protocols/rest/ctl:onos-protocols-rest-ctl": [],
80 "//protocols/restconf/client/api:onos-protocols-restconf-client-api": [],
81 "//protocols/restconf/client/ctl:onos-protocols-restconf-client-ctl": [],
82 "//protocols/snmp/api:onos-protocols-snmp-api": [],
83 "//protocols/snmp/ctl:onos-protocols-snmp-ctl": [],
84 "//protocols/tl1/api:onos-protocols-tl1-api": [],
85 "//protocols/tl1/ctl:onos-protocols-tl1-ctl": [],
86 "//protocols/xmpp/core/api:onos-protocols-xmpp-core-api": [],
87 "//protocols/xmpp/core/ctl:onos-protocols-xmpp-core-ctl": [],
88}
89
90PROTOCOL_APP_MAP = {
91 "//protocols/grpc:onos-protocols-grpc-oar": ["stratum"],
92 "//protocols/gnmi:onos-protocols-gnmi-oar": ["stratum"],
93 "//protocols/gnoi:onos-protocols-gnoi-oar": ["stratum"],
94 "//protocols/p4runtime:onos-protocols-p4runtime-oar": ["stratum"],
95 "//protocols/restconf/server:onos-protocols-restconf-server-oar": [],
96 "//protocols/xmpp/core:onos-protocols-xmpp-core-oar": [],
97 "//protocols/xmpp/pubsub:onos-protocols-xmpp-pubsub-oar": [],
98}
99
100PROVIDER_MAP = {
101 "//providers/netconf/device:onos-providers-netconf-device": [],
102 "//providers/openflow/device:onos-providers-openflow-device": ["seba"],
103 "//providers/openflow/packet:onos-providers-openflow-packet": ["seba"],
104 "//providers/openflow/flow:onos-providers-openflow-flow": ["seba"],
105 "//providers/openflow/group:onos-providers-openflow-group": ["seba"],
106 "//providers/openflow/meter:onos-providers-openflow-meter": ["seba"],
107 "//providers/ovsdb/device:onos-providers-ovsdb-device": [],
108 "//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel": [],
109 "//providers/p4runtime/packet:onos-providers-p4runtime-packet": ["stratum"],
110 "//providers/rest/device:onos-providers-rest-device": [],
111 "//providers/snmp/device:onos-providers-snmp-device": [],
112 "//providers/isis/cfg:onos-providers-isis-cfg": [],
113 "//providers/isis/topology:onos-providers-isis-topology": [],
114 "//providers/lisp/device:onos-providers-lisp-device": [],
115 "//providers/tl1/device:onos-providers-tl1-device": [],
116}
117
118PROVIDER_APP_MAP = {
119 "//providers/general:onos-providers-general-oar": ["minimal", "seba", "stratum"],
120 "//providers/bgp:onos-providers-bgp-oar": [],
121 "//providers/bgpcep:onos-providers-bgpcep-oar": [],
122 "//providers/host:onos-providers-host-oar": ["seba", "stratum"],
123 "//providers/hostprobing:onos-providers-hostprobing-oar": ["seba", "stratum"],
124 "//providers/isis:onos-providers-isis-oar": [],
125 "//providers/link:onos-providers-link-oar": ["stratum"],
126 "//providers/lldp:onos-providers-lldp-oar": ["seba", "stratum"],
127 "//providers/netcfghost:onos-providers-netcfghost-oar": ["seba", "stratum"],
128 "//providers/netcfglinks:onos-providers-netcfglinks-oar": ["stratum"],
129 "//providers/netconf:onos-providers-netconf-oar": [],
130 "//providers/null:onos-providers-null-oar": [],
131 "//providers/openflow/app:onos-providers-openflow-app-oar": ["seba"],
132 "//providers/openflow/base:onos-providers-openflow-base-oar": ["seba"],
133 "//providers/openflow/message:onos-providers-openflow-message-oar": ["seba"],
134 "//providers/ovsdb:onos-providers-ovsdb-oar": [],
135 "//providers/ovsdb/host:onos-providers-ovsdb-host-oar": [],
136 "//providers/ovsdb/base:onos-providers-ovsdb-base-oar": [],
137 "//providers/p4runtime:onos-providers-p4runtime-oar": ["stratum"],
138 "//providers/pcep:onos-providers-pcep-oar": [],
139 "//providers/rest:onos-providers-rest-oar": [],
140 "//providers/snmp:onos-providers-snmp-oar": [],
141 "//providers/lisp:onos-providers-lisp-oar": [],
142 "//providers/tl1:onos-providers-tl1-oar": [],
143 "//providers/xmpp/device:onos-providers-xmpp-device-oar": [],
144 # "//providers/ietfte:onos-providers-ietfte-oar": [],
145}
146
147#
148# ONOS Drivers
149#
150
151DRIVER_MAP = {
152 "//drivers/default:onos-drivers-default-oar": ["minimal", "seba", "stratum"],
153 "//drivers/arista:onos-drivers-arista-oar": [],
154 "//drivers/bmv2:onos-drivers-bmv2-oar": ["stratum"],
155 "//drivers/barefoot:onos-drivers-barefoot-oar": ["stratum"],
156 "//drivers/ciena/waveserver:onos-drivers-ciena-waveserver-oar": [],
157 "//drivers/ciena/c5162:onos-drivers-ciena-c5162-oar": [],
158 "//drivers/ciena/c5170:onos-drivers-ciena-c5170-oar": [],
159 "//drivers/ciena/waveserverai:onos-drivers-ciena-waveserverai-oar": [],
160 "//drivers/cisco/netconf:onos-drivers-cisco-netconf-oar": [],
161 "//drivers/cisco/rest:onos-drivers-cisco-rest-oar": [],
162 "//drivers/corsa:onos-drivers-corsa-oar": [],
Jan Kundrát981fe472019-10-15 22:44:19 +0200163 "//drivers/czechlight:onos-drivers-czechlight-oar": [],
Brian O'Connorca05e1f2020-01-07 11:28:46 -0800164 "//drivers/flowspec:onos-drivers-flowspec-oar": [],
165 "//drivers/fujitsu:onos-drivers-fujitsu-oar": [],
166 "//drivers/gnmi:onos-drivers-gnmi-oar": ["stratum"],
167 "//drivers/gnoi:onos-drivers-gnoi-oar": ["stratum"],
168 "//drivers/hp:onos-drivers-hp-oar": [],
169 "//drivers/huawei:onos-drivers-huawei-oar": [],
170 "//drivers/juniper:onos-drivers-juniper-oar": [],
171 "//drivers/lisp:onos-drivers-lisp-oar": [],
172 "//drivers/lumentum:onos-drivers-lumentum-oar": [],
173 "//drivers/mellanox:onos-drivers-mellanox-oar": ["stratum"],
Brian O'Connorca05e1f2020-01-07 11:28:46 -0800174 "//drivers/netconf:onos-drivers-netconf-oar": [],
175 "//drivers/odtn-driver:onos-drivers-odtn-driver-oar": [],
176 "//drivers/oplink:onos-drivers-oplink-oar": [],
177 "//drivers/optical:onos-drivers-optical-oar": [],
178 "//drivers/ovsdb:onos-drivers-ovsdb-oar": [],
179 "//drivers/p4runtime:onos-drivers-p4runtime-oar": ["stratum"],
180 "//drivers/polatis/netconf:onos-drivers-polatis-netconf-oar": [],
181 "//drivers/polatis/openflow:onos-drivers-polatis-openflow-oar": [],
182 "//drivers/server:onos-drivers-server-oar": [],
183 "//drivers/stratum:onos-drivers-stratum-oar": ["stratum"],
184 "//drivers/zte:onos-drivers-zte-oar": [],
185}
186
187#
188# ONOS Apps and App API JARs
189#
190
191APP_JAR_MAP = {
192 "//apps/cpman/api:onos-apps-cpman-api": [],
193 "//apps/routing-api:onos-apps-routing-api": [],
194 "//apps/dhcp/api:onos-apps-dhcp-api": [],
195 "//apps/dhcp/app:onos-apps-dhcp-app": [],
196 "//apps/imr/api:onos-apps-imr-api": [],
197 "//apps/imr/app:onos-apps-imr-app": [],
198 "//apps/dhcprelay/app:onos-apps-dhcprelay-app": [],
199 "//apps/dhcprelay/web:onos-apps-dhcprelay-web": [],
200 "//apps/fwd:onos-apps-fwd": [],
201 "//apps/iptopology-api:onos-apps-iptopology-api": [],
202 "//apps/kafka-integration/api:onos-apps-kafka-integration-api": [],
203 "//apps/kafka-integration/app:onos-apps-kafka-integration-app": [],
204 "//apps/routing/common:onos-apps-routing-common": [],
205 "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc": [],
206 "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr": [],
207 "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr": [],
208 "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb": [],
209}
210
211APP_MAP = {
212 "//apps/acl:onos-apps-acl-oar": [],
213 "//apps/artemis:onos-apps-artemis-oar": [],
214 "//apps/bgprouter:onos-apps-bgprouter-oar": [],
215 "//apps/castor:onos-apps-castor-oar": [],
216 "//apps/cfm:onos-apps-cfm-oar": [],
217 "//apps/cip:onos-apps-cip-oar": [],
218 "//apps/config:onos-apps-config-oar": [],
219 "//apps/configsync-netconf:onos-apps-configsync-netconf-oar": [],
220 "//apps/configsync:onos-apps-configsync-oar": [],
221 "//apps/cord-support:onos-apps-cord-support-oar": [],
222 "//apps/cpman/app:onos-apps-cpman-app-oar": [],
223 "//apps/dhcp:onos-apps-dhcp-oar": [],
224 "//apps/dhcprelay:onos-apps-dhcprelay-oar": [],
225 "//apps/drivermatrix:onos-apps-drivermatrix-oar": [],
226 "//apps/events:onos-apps-events-oar": [],
227 "//apps/evpn-route-service:onos-apps-evpn-route-service-oar": [],
228 "//apps/evpnopenflow:onos-apps-evpnopenflow-oar": [],
229 "//apps/faultmanagement:onos-apps-faultmanagement-oar": [],
230 "//apps/flowanalyzer:onos-apps-flowanalyzer-oar": [],
231 "//apps/flowspec-api:onos-apps-flowspec-api-oar": [],
232 "//apps/fwd:onos-apps-fwd-oar": [],
233 "//apps/gangliametrics:onos-apps-gangliametrics-oar": [],
234 "//apps/gluon:onos-apps-gluon-oar": [],
235 "//apps/graphitemetrics:onos-apps-graphitemetrics-oar": [],
236 "//apps/imr:onos-apps-imr-oar": [],
237 "//apps/inbandtelemetry:onos-apps-inbandtelemetry-oar": [],
238 "//apps/influxdbmetrics:onos-apps-influxdbmetrics-oar": [],
239 "//apps/intentsync:onos-apps-intentsync-oar": [],
240 "//apps/k8s-networking:onos-apps-k8s-networking-oar": [],
241 "//apps/k8s-node:onos-apps-k8s-node-oar": [],
242 "//apps/kafka-integration:onos-apps-kafka-integration-oar": [],
243 "//apps/l3vpn:onos-apps-l3vpn-oar": [],
244 "//apps/layout:onos-apps-layout-oar": [],
245 "//apps/linkprops:onos-apps-linkprops-oar": [],
246 "//apps/mappingmanagement:onos-apps-mappingmanagement-oar": [],
247 "//apps/mcast:onos-apps-mcast-oar": ["seba"],
248 "//apps/metrics:onos-apps-metrics-oar": [],
249 "//apps/mfwd:onos-apps-mfwd-oar": [],
250 "//apps/mlb:onos-apps-mlb-oar": [],
251 "//apps/mobility:onos-apps-mobility-oar": [],
252 "//apps/netconf/client:onos-apps-netconf-client-oar": [],
253 "//apps/network-troubleshoot:onos-apps-network-troubleshoot-oar": [],
254 "//apps/newoptical:onos-apps-newoptical-oar": [],
255 "//apps/nodemetrics:onos-apps-nodemetrics-oar": [],
256 "//apps/odtn/api:onos-apps-odtn-api-oar": [],
257 "//apps/odtn/service:onos-apps-odtn-service-oar": [],
258 "//apps/ofagent:onos-apps-ofagent-oar": [],
259 "//apps/onlp-demo:onos-apps-onlp-demo-oar": [],
260 "//apps/onos-topo:onos-apps-onos-topo-oar": [],
261 "//apps/openroadm:onos-apps-openroadm-oar": [],
262 "//apps/openstacknetworking:onos-apps-openstacknetworking-oar": [],
263 "//apps/openstacknetworkingui:onos-apps-openstacknetworkingui-oar": [],
264 "//apps/openstacknode:onos-apps-openstacknode-oar": [],
265 "//apps/openstacktelemetry:onos-apps-openstacktelemetry-oar": [],
266 "//apps/openstacktroubleshoot:onos-apps-openstacktroubleshoot-oar": [],
267 "//apps/openstackvtap:onos-apps-openstackvtap-oar": [],
268 "//apps/optical-model:onos-apps-optical-model-oar": ["seba"],
269 "//apps/optical-rest:onos-apps-optical-rest-oar": [],
270 "//apps/p4-tutorial/mytunnel:onos-apps-p4-tutorial-mytunnel-oar": [],
271 "//apps/p4-tutorial/pipeconf:onos-apps-p4-tutorial-pipeconf-oar": [],
272 "//apps/packet-stats:onos-apps-packet-stats-oar": [],
273 "//apps/packet-throttle:onos-apps-packet-throttle-oar": [],
274 "//apps/pathpainter:onos-apps-pathpainter-oar": [],
275 "//apps/pcep-api:onos-apps-pcep-api-oar": [],
276 "//apps/pim:onos-apps-pim-oar": [],
277 "//apps/portloadbalancer:onos-apps-portloadbalancer-oar": [],
278 "//apps/powermanagement:onos-apps-powermanagement-oar": [],
279 "//apps/proxyarp:onos-apps-proxyarp-oar": [],
280 "//apps/rabbitmq:onos-apps-rabbitmq-oar": [],
281 "//apps/reactive-routing:onos-apps-reactive-routing-oar": [],
282 "//apps/restconf:onos-apps-restconf-oar": [],
283 "//apps/roadm:onos-apps-roadm-oar": [],
284 "//apps/route-service:onos-apps-route-service-oar": ["seba"],
285 "//apps/routeradvertisement:onos-apps-routeradvertisement-oar": [],
286 "//apps/routing/cpr:onos-apps-routing-cpr-oar": [],
287 "//apps/routing/fibinstaller:onos-apps-routing-fibinstaller-oar": [],
288 "//apps/routing/fpm:onos-apps-routing-fpm-oar": [],
289 "//apps/scalablegateway:onos-apps-scalablegateway-oar": [],
290 "//apps/sdnip:onos-apps-sdnip-oar": [],
291 "//apps/segmentrouting:onos-apps-segmentrouting-oar": ["seba"],
292 "//apps/simplefabric:onos-apps-simplefabric-oar": [],
293 "//apps/t3:onos-apps-t3-oar": [],
294 # "//apps/tenbi:onos-apps-tenbi-oar": [],
295 # "//apps/tenbi/yangmodel:onos-apps-tenbi-yangmodel-feature": [],
296 "//apps/test/cluster-ha:onos-apps-test-cluster-ha-oar": [],
297 "//apps/test/demo:onos-apps-test-demo-oar": [],
298 "//apps/test/distributed-primitives:onos-apps-test-distributed-primitives-oar": [],
299 "//apps/test/election:onos-apps-test-election-oar": [],
300 "//apps/test/flow-perf:onos-apps-test-flow-perf-oar": [],
301 "//apps/test/intent-perf:onos-apps-test-intent-perf-oar": [],
302 "//apps/test/loadtest:onos-apps-test-loadtest-oar": [],
303 "//apps/test/messaging-perf:onos-apps-test-messaging-perf-oar": [],
304 "//apps/test/netcfg-monitor:onos-apps-test-netcfg-monitor-oar": [],
305 "//apps/test/primitive-perf:onos-apps-test-primitive-perf-oar": [],
306 "//apps/test/route-scale:onos-apps-test-route-scale-oar": [],
307 "//apps/test/transaction-perf:onos-apps-test-transaction-perf-oar": [],
308 "//apps/tetopology:onos-apps-tetopology-oar": [],
309 "//apps/tetunnel:onos-apps-tetunnel-oar": [],
310 "//apps/tunnel:onos-apps-tunnel-oar": [],
311 "//apps/virtual:onos-apps-virtual-oar": [],
312 "//apps/virtualbng:onos-apps-virtualbng-oar": [],
313 "//apps/vpls:onos-apps-vpls-oar": [],
314 "//apps/vrouter:onos-apps-vrouter-oar": [],
315 "//apps/vtn:onos-apps-vtn-oar": [],
316 "//apps/workflow/ofoverlay:onos-apps-workflow-ofoverlay-oar": [],
317 "//apps/workflow:onos-apps-workflow-oar": [],
318 "//apps/yang-gui:onos-apps-yang-gui-oar": [],
319 "//apps/yang:onos-apps-yang-oar": [],
320 # "//apps/yms:onos-apps-yms-oar": [],
321 "//web/gui:onos-web-gui-oar": [],
322 "//web/gui2:onos-web-gui2-oar": ["stratum"],
323}
324
325#
326# Pipelines and Models
327#
328
329PIPELINE_MAP = {
330 "//pipelines/basic:onos-pipelines-basic-oar": ["stratum"],
331 "//pipelines/fabric:onos-pipelines-fabric-oar": ["stratum"],
332}
333
334MODELS_MAP = {
335 "//models/ietf:onos-models-ietf-oar": [],
336 "//models/common:onos-models-common-oar": [],
337 "//models/huawei:onos-models-huawei-oar": [],
338 "//models/openconfig:onos-models-openconfig-oar": [],
339 "//models/openconfig-infinera:onos-models-openconfig-infinera-oar": [],
340 "//models/openconfig-odtn:onos-models-openconfig-odtn-oar": [],
341 "//models/openroadm:onos-models-openroadm-oar": [],
342 "//models/tapi:onos-models-tapi-oar": [],
343 "//models/l3vpn:onos-models-l3vpn-oar": [],
Brian O'Connorca05e1f2020-01-07 11:28:46 -0800344 "//models/polatis:onos-models-polatis-oar": [],
345 "//models/ciena/waveserverai:onos-models-ciena-waveserverai-oar": [],
346}
347
348#
349# Convenience functions for processing profile maps
350#
351
352def filter(map, profile):
353 all = not bool(profile) or profile == "all"
354 return [k for k, v in map.items() if all or profile in v]
355
356def extensions(profile = None):
357 return filter(PROTOCOL_MAP, profile) + filter(PROVIDER_MAP, profile)
358
359def apps(profile = None):
360 return filter(PROTOCOL_APP_MAP, profile) + \
361 filter(PROVIDER_APP_MAP, profile) + \
362 filter(DRIVER_MAP, profile) + \
363 filter(APP_MAP, profile) + \
364 filter(APP_JAR_MAP, profile) + \
365 filter(PIPELINE_MAP, profile) + \
366 filter(MODELS_MAP, profile)
367
368#
369# Instantiate a config_setting for every profile in the list
370#
371def profiles(profiles):
372 for p in profiles:
373 native.config_setting(
374 name = "%s_profile" % p,
375 values = {"define": "profile=%s" % p},
376 )