28def cli(config, json_dir, debug):
31 raise RuntimeError(f
"Directory {json_dir} already exists")
33 config_data = config[0]
34 config_file = config[1]
37 moo.otypes.load_types(
'dpdklibs/confgen.jsonnet')
38 import dunedaq.dpdklibs.confgen
as confgen
39 moo.otypes.load_types(
'daqconf/confgen.jsonnet')
40 import dunedaq.daqconf.confgen
as daqconfgen
42 boot = daqconfgen.boot(**config_data.boot)
43 dpdklibs = confgen.dpdklibs(**config_data.dpdklibs)
46 if dpdklibs.only_sender
and dpdklibs.only_reader:
47 raise RuntimeError(
'Both options only_sender and only_reader can not be specified at the same time')
49 if dpdklibs.sender_boards % dpdklibs.sender_cores:
50 raise RuntimeError(f
'sender_boards has to be divisible by sender_cores ({dpdklibs.sender_boards} is not divisible by {dpdklibs.sender_cores}')
52 enable_sender, enable_receiver =
True,
True
53 if dpdklibs.only_sender:
54 enable_receiver =
False
55 if dpdklibs.only_reader:
58 console.log(
'Loading dpdklibs config generator')
59 from dpdklibs
import sender_confgen
60 from dpdklibs
import reader_confgen
66 the_system.apps[
"dpdk-sender"] = sender_confgen.generate_dpdk_sender_app(
67 HOST=dpdklibs.host_sender,
68 NUMBER_OF_CORES=dpdklibs.sender_cores,
69 NUMBER_OF_IPS_PER_CORE=dpdklibs.sender_boards // dpdklibs.sender_cores,
70 TIME_TICK_DIFFERENCE=dpdklibs.sender_time_tick_difference,
73 the_system.apps[
"dpdk-reader"] = reader_confgen.generate_dpdk_reader_app(
74 HOST=dpdklibs.host_reader,
75 EAL_ARGS=dpdklibs.eal_args,
80 name : make_app_command_data(the_system, app, name)
81 for name,app
in the_system.apps.items()
85 from daqconf.core.conf_utils
import make_system_command_datas, write_json_files
87 system_command_datas = make_system_command_datas(
93 write_json_files(app_command_datas, system_command_datas, json_dir, verbose=
True)
95 console.log(f
"dpdklibs app config generated in {json_dir}")
97 write_metadata_file(json_dir,
"dpdklibs_confgen", config_file)