02 Nov, 2020

2 commits

  • Instead of adding titles just for the files, add titles
    for each part of the ABI output, in order to make easier
    to search for a symbol there.

    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/64752a5de06ab8263c296e3ed01414b25861e1eb.1604312590.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The ReST output should only contain documentation titles
    automatically created by the script.

    There are two reasons for that:

    1) Consistency.

    just a handful ABI docs define titles

    2) To avoid critical errors.

    Docutils (which is the basis for Sphinx) allows a free
    assign of documentation title markups. So, one document
    could be doing things like:

    Level 1
    =======

    Level 2
    -------

    While another one could do the reverse:

    Level 1
    -------

    Level 2
    =======

    But the same document can't mix.

    As the output of get_abi.pl will join contents from multiple
    files, if they don't define the levels on a consistent errors,
    errors like this can happen:

    Sphinx parallel build error:
    docutils.utils.SystemMessage: /home/rdunlap/lnx/lnx-510-rc2/Documentation/ABI/testing/sysfs-bus-rapidio:2: (SEVERE/4) Title level inconsistent:

    Attributes Common for All RapidIO Devices
    -----------------------------------------

    Which cause some versions of Sphinx to go into an endless
    loop.

    It should be noticed that an alternative to that would
    be to replace all title occurrences by a single markup,
    but that will make the parser more complex, and, due to
    (1) it would generate an inconsistent output.

    So, better to just remove the titles defined at the ABI
    files from the output.

    Reported-by: Randy Dunlap
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/6c62ef5c01d39dee8d891f8390c816d2a889670a.1604312590.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     

30 Oct, 2020

13 commits

  • All ABI files are now compatible with ReST format. So, change
    the script default to assume that the ABI source files
    are compatible with ReST.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/4b0af257010570e0e917d82498e42992bec5e173.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • There are some ABI documents that, while they don't generate
    any warnings, they have issues when parsed by get_abi.pl script
    on its output result.

    Address them, in order to provide a clean output.

    Reviewed-by: Tom Rix # for fpga-manager
    Reviewed-By: Kajol Jain # for sysfs-bus-event_source-devices-hv_gpci and sysfs-bus-event_source-devices-hv_24x7
    Acked-by: Jonathan Cameron #for IIO
    Acked-by: Oded Gabbay # for Habanalabs
    Acked-by: Vaibhav Jain # for sysfs-bus-papr-pmem
    Acked-by: Cezary Rojewski # for catpt
    Acked-by: Suzuki K Poulose
    Acked-by: Ilya Dryomov # for rbd
    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/5bc78e5b68ed1e9e39135173857cb2e753be868f.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The files under Documentation/ABI should follow the syntax
    as defined at Documentation/ABI/README.

    Allow checking if they're following the syntax by running
    the ABI parser script on COMPILE_TEST.

    With that, when there's a problem with a file under
    Documentation/ABI, it would produce a warning like:

    Warning: file ./Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats#14:
    What '/sys/bus/pci/devices//aer_stats/aer_rootport_total_err_cor' doesn't have a description
    Warning: file ./Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats#21:
    What '/sys/bus/pci/devices//aer_stats/aer_rootport_total_err_fatal' doesn't have a description

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/57a38de85cb4b548857207cf1fc1bf1ee08613c9.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • There are several cross-references that can be automatically
    generated:

    - References to .rst files inside Documentation/
    - References to other ABI files;
    - References to ABI symbols at /sys/*.

    Add a logic to automatically parse them and convert into
    cross references.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/abe756d4f94fb6ffcc3dd3902a766c7c3990ea89.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • As we're using tables, let's distinguish the ones used by ABI
    by using a bold font.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/9ed645c2519169817379c1df5b8cf03828e92520.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The same filename may exist on multiple directories within
    ABI. Create separate entries at the internal database for
    each of them.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/ef760f68f54e132c4be52f0027189b4ba31554ec.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Right now, the script only outputs Users on search. Print it
    also in ReST format.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/83def2a692c4c678f21ee6e76b66a54d2be1e796.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The ABI should define only once each What. The current script
    logic assumes that.

    However, that's not the case, currently: there are several
    symbols with a generic definition, and per-driver ones.

    Better handle such cases, by preserving the cross-references
    with the files that define them, but also track such
    cases, producing warnings, as they should be fixed.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/d7a73b8b3aae5b2bff9279996ff9ca4cdfc89196.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Right now, the cross-references are generated on a single
    step, when doing ReST output.

    While this is nice optimization, it prevents auto-creating
    cross-references for ABI symbols.

    So, split it into a separate logic.

    While here, turn on Perl warnings, as it helps to debug
    problems inside the script.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/dbc97c8c2dfd877921f058134c35b2a8b1f8414b.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The original parser for indentation were relying on having
    just one description for each "what". However, that's not
    the case: there are a number of ABI symbols that got defined
    multiple times.

    Improve the parser for it to better handle descriptions
    if entries are duplicated.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/eb458bb30be0e5a89192d6057b2e8a7e910dbcb8.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The get_abi.pl reads a lot of files and can join them on a
    single output file. Store where each "What:" output came from,
    in order to be able to optionally display it.

    This is useful for the Sphinx extension, with can now be
    able to blame what ABI file has issues, and on what line
    the What: description with problems begin.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/befc387011c5e3c6febd285b7f27610e41c90260.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • When the source ABI file is using ReST notation, the script
    should handle whitespaces and lines with care, as otherwise
    the file won't be properly recognized.

    Address the bugs that are on such part of the script.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/5c22c54fbd0cda797b691d52c568be6d0d1079d8.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Right now, several ABI files won't parse as ReST, as they
    contain severe violations to the spec, with makes the script
    to crash.

    So, the code has a sanity logic with escapes bad code and
    cleans tags that can cause Sphinx to crash.

    Add support for disabling this mode.

    Right now, as enabling rst-mode causes crash, it is disabled
    by default.

    Acked-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/34b691e3002e8987c24d851fe37640f95e506a92.1604042072.git.mchehab+huawei@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     

21 Jun, 2019

11 commits

  • released under GPL v2.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Sometimes, we just want the parser to retrieve all symbols from
    ABI, in order to check for parsing errors. So, add a new
    "validate" command.

    While here, update the man/help pages.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The ABI README file doesn't provide any meaning for a Where:
    tag. Yet, a few ABI symbols use it. So, make the parser
    handle it, emitting a warning.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The file the Documentation/ABI/testing/sysfs-class-power has
    voltage_min, voltage_max and voltage_now symbols duplicated.

    They are defined first for "General Properties" and then for
    "USB Properties".

    This cause those warnings:

    get_abi.pl rest --dir $srctree/Documentation/ABI/testing:26933: WARNING: Duplicate explicit target name: "abi_sys_class_power_supply_supply_name_voltage_max".
    get_abi.pl rest --dir $srctree/Documentation/ABI/testing:26968: WARNING: Duplicate explicit target name: "abi_sys_class_power_supply_supply_name_voltage_min".
    get_abi.pl rest --dir $srctree/Documentation/ABI/testing:27008: WARNING: Duplicate explicit target name: "abi_sys_class_power_supply_supply_name_voltage_now".

    And, as the references are not valid, it will also generate
    warnings about links to undefined references.

    Fix it by storing labels into a hash table and, when a duplicated
    one is found, appending random characters at the end.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • A few files are failing to parse:

    Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats
    Documentation/ABI/testing/sysfs-class-pktcdvd
    Documentation/ABI/testing/sysfs-bus-nfit

    On all three files, the problem is that there is a ":" character
    at the initial file description.

    Improve the parse in order to handle those special cases.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Several entries at the ABI have multiple What: with the same
    description.

    Instead of showing those symbols as sections, let's show them
    as tables. That makes easier to read on the final output,
    and avoid too much recursion at Sphinx parsing.

    We need to put file references at the end, as we don't want
    non-file tables to be mangled with other entries.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Change its syntax to allow switching between ReST output mode
    and a new search mode, with allows to seek for ABI symbols
    using regex.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Instead of using a ReST compilant label while parsing,
    move the label to ReST output. That makes the parsing logic
    more generic, allowing it to provide other types of output.

    As a side effect, now all files used to generate the output
    will be output. We can later add command line arguments to
    filter.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • The usage of literal blocks make the document very complex,
    causing the browser to take a long time to load.

    On most ABI descriptions, they're a plain text, and don't
    require a literal block.

    So, add a logic there with identifies when a literal block
    is needed.

    As, on literal blocks, we need to respect the original
    document space, the most complex part of this patch is
    to preserve the original spacing where needed.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • It sounds usefult o parse files with has some text at the
    beginning. Add support for it.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • Add a script to parse the Documentation/ABI files and produce
    an output with all entries inside an ABI (sub)directory.

    Right now, it outputs its contents on ReST format. It shouldn't
    be hard to make it produce other kind of outputs, since the ABI
    file parser is implemented in separate than the output generator.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab