From 47f5b2341951b430f6831fa8eeeb3c5ec655e928 Mon Sep 17 00:00:00 2001 From: TSC21 Date: Sun, 4 Aug 2019 18:54:04 +0100 Subject: [PATCH] rtps: generation scripts: make indexing of lists possible in both Python 2 and 3 --- msg/tools/generate_microRTPS_bridge.py | 43 ++++++++++++++++------- msg/tools/px_generate_uorb_topic_files.py | 24 ++++++++++--- msg/tools/uorb_rtps_classifier.py | 37 +++++++++++++------ 3 files changed, 75 insertions(+), 29 deletions(-) diff --git a/msg/tools/generate_microRTPS_bridge.py b/msg/tools/generate_microRTPS_bridge.py index d7344a7de8..24e6c948e9 100644 --- a/msg/tools/generate_microRTPS_bridge.py +++ b/msg/tools/generate_microRTPS_bridge.py @@ -62,9 +62,20 @@ def check_rtps_id_uniqueness(classifier): repeated_ids = dict() - full_send_list = dict(list(msg for msg in classifier.msgs_to_send.items()) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_send)) - full_receive_list = dict(list(msg for msg in classifier.msgs_to_receive.items()) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_receive)) - full_ignore_list = dict(list(msg for msg in classifier.msgs_to_ignore.items()) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_ignore)) + if sys.version_info[0] < 3: + full_send_list = dict(list(msg for msg in classifier.msgs_to_send.items( + )) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_send)) + full_receive_list = dict(list(msg for msg in classifier.msgs_to_receive.items( + )) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_receive)) + full_ignore_list = dict(list(msg for msg in classifier.msgs_to_ignore.items( + )) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_ignore)) + else: + full_send_list = dict(list(msg for msg in classifier.msgs_to_send.items( + )) + list(list(msg[0].items())[0] for msg in classifier.alias_msgs_to_send)) + full_receive_list = dict(list(msg for msg in classifier.msgs_to_receive.items( + )) + list(list(msg[0].items())[0] for msg in classifier.alias_msgs_to_receive)) + full_ignore_list = dict(list(msg for msg in classifier.msgs_to_ignore.items( + )) + list(list(msg[0].items())[0] for msg in classifier.alias_msgs_to_ignore)) # check if there are repeated ID's on the messages to send for key, value in full_send_list.items(): @@ -256,15 +267,15 @@ if agent and os.path.isdir(os.path.join(agent_out_dir, "idl")): # uORB templates path uorb_templates_dir = (args.uorb_templates if os.path.isabs(args.uorb_templates) - else os.path.join(msg_dir, args.uorb_templates)) + else os.path.join(msg_dir, args.uorb_templates)) # uRTPS templates path urtps_templates_dir = (args.urtps_templates if os.path.isabs(args.urtps_templates) - else os.path.join(msg_dir, args.urtps_templates)) + else os.path.join(msg_dir, args.urtps_templates)) # parse yaml file into a map of ids classifier = (Classifier(os.path.abspath(args.yaml_file), msg_dir) if os.path.isabs(args.yaml_file) - else Classifier(os.path.join(msg_dir, args.yaml_file), msg_dir)) + else Classifier(os.path.join(msg_dir, args.yaml_file), msg_dir)) # check if there are no ID's repeated check_rtps_id_uniqueness(classifier) @@ -298,7 +309,10 @@ def generate_agent(out_dir): if classifier.alias_msgs_to_send: for msg_file in classifier.alias_msgs_to_send: - msg_alias = msg_file[0].keys()[0] + if sys.version_info[0] < 3: + msg_alias = msg_file[0].keys()[0] + else: + msg_alias = list(msg_file[0].keys())[0] msg_name = msg_file[1] if gen_idl: if out_dir != agent_out_dir: @@ -328,7 +342,10 @@ def generate_agent(out_dir): if classifier.alias_msgs_to_receive: for msg_file in classifier.alias_msgs_to_receive: - msg_alias = msg_file[0].keys()[0] + if sys.version_info[0] < 3: + msg_alias = msg_file[0].keys()[0] + else: + msg_alias = list(msg_file[0].keys())[0] msg_name = msg_file[1] if gen_idl: if out_dir != agent_out_dir: @@ -360,11 +377,11 @@ def generate_agent(out_dir): raise Exception("No IDL files found in %s" % idl_dir) if(os.path.exists(fastrtpsgen_path)): for idl_file in glob.glob(os.path.join(idl_dir, "*.idl")): - ret = subprocess.call(fastrtpsgen_path + " -d " + out_dir + - "/fastrtpsgen -example x64Linux2.6gcc " + fastrtpsgen_include + idl_file, shell=True) - if ret: - raise Exception( - "fastrtpsgen failed with code error %s" % ret) + ret = subprocess.call(fastrtpsgen_path + " -d " + out_dir + + "/fastrtpsgen -example x64Linux2.6gcc " + fastrtpsgen_include + idl_file, shell=True) + if ret: + raise Exception( + "fastrtpsgen failed with code error %s" % ret) else: raise Exception( "fastrtpsgen not found. Specify the location of fastrtpsgen with the -f flag") diff --git a/msg/tools/px_generate_uorb_topic_files.py b/msg/tools/px_generate_uorb_topic_files.py index bab8a202f5..4f5b9b6986 100755 --- a/msg/tools/px_generate_uorb_topic_files.py +++ b/msg/tools/px_generate_uorb_topic_files.py @@ -178,7 +178,7 @@ def generate_idl_file(filename_msg, msg_dir, alias, outputdir, templatedir, pack if (alias != ""): em_globals = get_em_globals( - msg, alias , package, includepath, ids, MsgScope.NONE) + msg, alias, package, includepath, ids, MsgScope.NONE) spec_short_name = alias else: em_globals = get_em_globals( @@ -201,10 +201,24 @@ def generate_uRTPS_general(filename_send_msgs, filename_alias_send_msgs, filenam """ Generates source file by msg content """ - send_msgs = list(os.path.join(msg_dir, msg + ".msg") for msg in filename_send_msgs) - alias_send_msgs = list([os.path.join(msg_dir, msg[1] + ".msg"), msg[0].keys()[0]] for msg in filename_alias_send_msgs) - receive_msgs = list(os.path.join(msg_dir, msg + ".msg") for msg in filename_receive_msgs) - alias_receive_msgs = list([os.path.join(msg_dir, msg[1] + ".msg"), msg[0].keys()[0]] for msg in filename_alias_receive_msgs) + send_msgs = list(os.path.join(msg_dir, msg + ".msg") + for msg in filename_send_msgs) + receive_msgs = list(os.path.join(msg_dir, msg + ".msg") + for msg in filename_receive_msgs) + + if sys.version_info[0] < 3: + alias_send_msgs = list([os.path.join( + msg_dir, msg[1] + ".msg"), msg[0].keys()[0]] for msg in filename_alias_send_msgs) + else: + alias_send_msgs = list([os.path.join(msg_dir, msg[1] + ".msg"), + list(msg[0].keys())[0]] for msg in filename_alias_send_msgs) + + if sys.version_info[0] < 3: + alias_receive_msgs = list([os.path.join( + msg_dir, msg[1] + ".msg"), msg[0].keys()[0]] for msg in filename_alias_receive_msgs) + else: + alias_receive_msgs = list([os.path.join( + msg_dir, msg[1] + ".msg"), list(msg[0].keys())[0]] for msg in filename_alias_receive_msgs) em_globals_list = [] if send_msgs: diff --git a/msg/tools/uorb_rtps_classifier.py b/msg/tools/uorb_rtps_classifier.py index f2cfd6b7d1..7cb03cca1d 100644 --- a/msg/tools/uorb_rtps_classifier.py +++ b/msg/tools/uorb_rtps_classifier.py @@ -124,7 +124,7 @@ class Classifier(): none_listed_msgs = [] for msg in self.all_msgs_list: result = not any( - dict.values()[0] == msg for dict in self.msg_id_map['rtps']) + dict['msg'] == msg for dict in self.msg_id_map['rtps']) if result: none_listed_msgs.append(msg) @@ -136,7 +136,7 @@ class Classifier(): raise AssertionError( "\n%s %s: " % (error_msg, yaml_file) + ", ".join('%s' % msg for msg in none_listed_msgs) + - "\n\nPlease add them to the yaml file with the respective ID and, if applicable, mark them" + + "\n\nPlease add them to the yaml file with the respective ID and, if applicable, mark them " + "to be sent or received by the micro-RTPS bridge.\n" "NOTE: If the message has multi-topics (#TOPICS), these should be added as well.\n") @@ -210,9 +210,14 @@ if __name__ == "__main__": for msg_file in classifier.msgs_files_send) + '\n') else: if args.alias: - print (', '.join(str(msg) - for msg in classifier.msgs_to_send.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0]) - for msg in classifier.alias_msgs_to_send) if len(classifier.alias_msgs_to_send) > 0 else '') + '\n') + if sys.version_info[0] < 3: + print (', '.join(str(msg) + for msg in classifier.msgs_to_send.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0]) + for msg in classifier.alias_msgs_to_send) if len(classifier.alias_msgs_to_send) > 0 else '') + '\n') + else: + print (', '.join(str(msg) + for msg in classifier.msgs_to_send.keys()) + (' alias ' + ', '.join(str(list(msg[0].keys())[0]) + for msg in classifier.alias_msgs_to_send) if len(classifier.alias_msgs_to_send) > 0 else '') + '\n') else: print (', '.join(str(msg) for msg in classifier.msgs_to_send.keys())) @@ -222,9 +227,14 @@ if __name__ == "__main__": for msg_file in classifier.msgs_files_receive) + '\n') else: if args.alias: - print (', '.join(str(msg) - for msg in classifier.msgs_to_receive.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0]) - for msg in classifier.alias_msgs_to_receive) if len(classifier.alias_msgs_to_receive) > 0 else '') + '\n') + if sys.version_info[0] < 3: + print (', '.join(str(msg) + for msg in classifier.msgs_to_receive.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0]) + for msg in classifier.alias_msgs_to_receive) if len(classifier.alias_msgs_to_receive) > 0 else '') + '\n') + else: + print (', '.join(str(msg) + for msg in classifier.msgs_to_receive.keys()) + (' alias ' + ', '.join(str(list(msg[0].keys())[0]) + for msg in classifier.alias_msgs_to_receive) if len(classifier.alias_msgs_to_receive) > 0 else '') + '\n') else: print (', '.join(str(msg) for msg in classifier.msgs_to_receive.keys())) @@ -234,9 +244,14 @@ if __name__ == "__main__": for msg_file in classifier.msgs_files_ignore) + '\n') else: if args.alias: - print (', '.join(str(msg) - for msg in classifier.msgs_to_ignore.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0]) - for msg in classifier.alias_msgs_to_ignore) if len(classifier.alias_msgs_to_ignore) > 0 else '') + '\n') + if sys.version_info[0] < 3: + print (', '.join(str(msg) + for msg in classifier.msgs_to_ignore.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0]) + for msg in classifier.alias_msgs_to_ignore) if len(classifier.alias_msgs_to_ignore) > 0 else '') + '\n') + else: + print (', '.join(str(msg) + for msg in classifier.msgs_to_ignore.keys()) + (' alias ' + ', '.join(str(list(msg[0].keys())[0]) + for msg in classifier.alias_msgs_to_ignore) if len(classifier.alias_msgs_to_ignore) > 0 else '') + '\n') else: print (', '.join(str(msg) for msg in classifier.msgs_to_ignore.keys()))