History

docs: sphinx/kernel_abi: reduce buffer usage for ABI messages

Instead of producing a big message with all ABI contents and then parse as a whole, simplify the code by handling each ABI symbol in separate. As an additional benefit, there's no need to place file/line nubers inlined at the data and use a regex to convert them.

Mauro Carvalho Chehab committed 1 year ago

Commit aea5e521 parent ee34f833 files · +51 −48Browse files

Showing the changes to scripts (2 of 3 files). Show all

Unified · Split

2 files
  1. scripts/get_abi.py +5 −2
  2. scripts/lib/abi/abi_parser.py +4 −6
scripts/get_abi.py+5−2
@@ -63,8 +63,11 @@ class AbiRest: · 62 unmodified lines
6363 parser.parse_abi()
6464 parser.check_issues()
6565
66− for msg in parser.doc(args.enable_lineno, args.raw, not args.no_file):
67− print(msg)
66+ for t in parser.doc(args.raw, not args.no_file):
67+ if args.enable_lineno:
68+ print (f".. LINENO {t[1]}#{t[2]}\n\n")
69+
70+ print(t[0])
6871
6972 class AbiValidate:
7073 """Initialize an argparse subparser for ABI validation"""
scripts/lib/abi/abi_parser.py+4−6
@@ -427,7 +427,7 @@ class AbiParser: · 426 unmodified lines
427427
428428 return new_desc + "\n\n"
429429
430− def doc(self, enable_lineno, output_in_txt=False, show_file=False):
430+ def doc(self, output_in_txt=False, show_file=True):
431431 """Print ABI at stdout"""
432432
433433 part = None
@@ -444,10 +444,6 @@ class AbiParser: · 10 unmodified lines
444444
445445 msg = ""
446446
447− if enable_lineno:
448− ln = v.get("line_no", 1)
449− msg += f".. LINENO {file_ref[0][0]}#{ln}\n\n"
450−
451447 if wtype != "File":
452448 cur_part = names[0]
453449 if cur_part.find("/") >= 0:
@@ -508,7 +504,9 @@ class AbiParser: · 54 unmodified lines
508504 if users and users.strip(" \t\n"):
509505 msg += f"Users:\n\t{users.strip("\n").replace('\n', '\n\t')}\n\n"
510506
511− yield msg
507+ ln = v.get("line_no", 1)
508+
509+ yield (msg, file_ref[0][0], ln)
512510
513511 def check_issues(self):
514512 """Warn about duplicated ABI entries"""