Commit Graph
36588 Commits
Author SHA1 Message Date
Petr Špaček 686a15d30f Hyperlink port references to appropriate definitions
``port`` used to refer to grammar elements and also to named.conf
option. Both cases are now linked to respective definitions.
2022-07-04 15:50:50 +02:00
Petr Špaček 7b51a027e7 Rename ip_port to port
The old name was used only in couple places, and was inconsistent with
doc/misc grammar.
2022-07-04 15:50:50 +02:00
Petr Špaček d1644f420c Rename ip_dscp to dscp
The old name was literally not used anywhere, not even in the source
code. The new name is used by doc/misc grammar.
2022-07-04 15:50:50 +02:00
Petr Špaček 5ce45d1c04 Hyperlink netprefix grammar references to the definition 2022-07-04 15:50:50 +02:00
Petr Špaček a35c1ae0c2 Hyperlink ip??_address grammar references to their definition 2022-07-04 15:50:50 +02:00
Petr Špaček b22bdb3a1b Rename ip_prefix to netprefix
Let's standardize on netprefix which matches grammar used in doc/misc.
2022-07-04 15:50:50 +02:00
Petr Špaček 57f218e65e Rename ip_addr, ipv4_addr, and ipv6_addr to *_address
The longer variant matches grammar used in doc/misc.
2022-07-04 15:50:50 +02:00
Petr Špaček 44c24f3c94 Remove dotted_decimal from grammar glossary
This definition was dererenced only once, from ip4_addr definition on
the next line. These two are now collapsed into new ip4_addr definition.
2022-07-04 15:50:50 +02:00
Petr Špaček fe427a8460 Remove namelist from grammar glossary
This definition was used only for deny-answer-aliases statement
description, and moreover the term did not match grammar listed in
doc/misc/options.

I've replaced it with textual expansion of "list of `domain_name`s"
which is used more often.
2022-07-04 15:50:50 +02:00
Petr Špaček e59cedea1f Rename remoteserver_list to remote-servers
Name remoteserver_list was not referenced anywhere but the grammar uses
name remote-servers. Rename and add a reference to primaries for more
information.
2022-07-04 15:50:50 +02:00
Petr Špaček 309dbeac7b Hyperlink domain_name grammar elements
Hyperlinked manually to avoid needless repetition in the Rset ordering
chapter.
2022-07-04 15:50:50 +02:00
Petr Špaček 69d0632dc0 Hyperlink ACL grammar elements
Manual edit required to restore the first occurence of "definition"
inside .. glossary directive.

Generated using:
    N=acl_name; sed -i -e "s/\`\`$N\`\`/:term:\`$N\`/g" $ARMFILES
    N=address_match_list; sed -i -e "s/\`\`$N\`\`/:term:\`$N\`/g" $ARMFILES
2022-07-04 15:50:50 +02:00
Petr Špaček 14c7fb36e7 Remove unreferences dialup_option grammar
I dunno why it was a separate entity in the grammar glossary. It is not
referenced anywhere else except for the the dialup statement, and the
statement describes all its possible values verbosely.
2022-07-04 15:50:50 +02:00
Petr Špaček 9bbcff225b Manual fixups for new hyperlinks
It turns out that many manual edits were required:
- Heading underlines were too short because :any:`` is longer than ````
- Some statement names clashed with manually defined _link_anchors
  (notify, trust-anchors etc.)
- Zone types are defined like "type primary" in the internal grammar and
  that caused mayhem in the replacement script as it took "type" and
  individual types ("primary", "secondary") as separate statements.
  For that reason :any:`primary` had to be manually replaced with
  :any:`primary <type primary>` where appropriate.
- Sometimes option name is also the same as a value name (e.g. "notify")
  and then it did not make sense to do the replacement.
2022-07-04 15:50:50 +02:00
Petr Špaček d101490250 Add hyperlinks to all unique statement names
This shell script added hyperlinks to all unique statement names:

    UNIQSTATEMENTS=$(\
        sort \
            <(git grep '.. namedconf:statement::' '*.rst' | sed -e 's/^.*:: //') \
            <(git grep '.. rndcconf:statement::' '*.rst' | sed -e 's/^.*:: //') \
        | uniq --unique)
    ARMFILES=$(git ls-files 'doc/*.rst' | grep -v 'doc/man')
    for STATEMENT in $UNIQSTATEMENTS; \
        do sed -i -e "s/\`\`$STATEMENT\`\`/:any:\`$STATEMENT\`/g" $ARMFILES; \
    done

This needs manual cleanup (see next commit) to fix syntax errors.
2022-07-04 15:50:50 +02:00
Petr Špaček 9804cdc4de Use the new term Block in ARM headings "Statement Definition and Usage"
The underline is not shortened on purpose, see subsequent commits.

Generated by:
    sed -i -e 's/ Statement Definition and Usage$/ Block Definition and Usage/g' doc/arm/reference.rst
2022-07-04 15:50:49 +02:00
Petr Špaček 452593fc94 Use the new term Block in ARM headings "Statement Grammar"
Long live new terminology.
The underline is now shortened on purpose, see subsequent commits.

Generated by:
    sed -i -e 's/ Statement Grammar$/ Block Grammar/g' doc/arm/reference.rst
2022-07-04 15:50:46 +02:00
Petr Špaček 51b5ce7a70 Merge branch 'pspacek/arm-tables-parse-short-rst' into 'main'
Parse and render rst syntax in auto-generated tables

See merge request isc-projects/bind9!6515
2022-07-04 13:36:17 +00:00
Petr Špaček 62f3cf98d3 Parse and render rst syntax in :short: statement descriptions in tables
Without this change tables generated by .. namedconf:statementlist::
contained raw text and displayed rst syntax to users.

The raw docutil node returned by rst parser can contain unresolved
references (pending_xref nodes). We just store those nodes and let
Sphinx to resolve them later on.

Beware: This would not work if we injected nodes in later stages of
processing. All unresolved references must be in place before
'doctree-resolved' event is emitted (i.e. before resolve_references() is
called inside Sphinx).
2022-07-04 12:39:43 +02:00
Petr Špaček b109c86805 Generate tables of statements in doctree-read phase
This change allows us to generate "unresolved" references and let Sphinx
deal with dereferencing them in later stages. It is not useful by itself
but it serves as preparation for the next commit.
2022-07-04 12:39:43 +02:00
Petr Špaček 8a5f20121e Optimize resolve_xref to avoid O(n^2) iteration
Formerly resolve_xref() in Sphinx extension called get_objects() from
Sphinx API which subsequently iterated the whole list of objects,
causing single iteration per single reference, which is essentially.
O(n^2). Avoid using get_objects() and access internal dictionary
directly intead.

The docs build time was still dominated by other factors but speedup is
about 10 % on my machine.
2022-07-04 12:39:43 +02:00
Petr Špaček 901b6425d2 Merge branch 'marka-cobertura-replaced-by-coverage_report' into 'main'
Fix for GitLab 15.0: cobertura replaced by coverage_report

See merge request isc-projects/bind9!6512
2022-07-04 05:10:32 +00:00
Mark Andrews 008032d268 Fix for GitLab 15.0: cobertura replaced by coverage_report
From Gitlab 15.0 release notes:

   artifacts:reports:cobertura keyword

   As of GitLab 15.0, the artifacts:reports:cobertura keyword has
   been replaced by artifacts:reports:coverage_report. Cobertura
   is the only supported report file, but this is the first step
   towards GitLab supporting other report types.
2022-07-04 13:52:30 +10:00
Arаm Sаrgsyаn 3076231d6f Merge branch '3398-placeholder' into 'main'
Add placeholder for [GL #3398]

See merge request isc-projects/bind9!6508
2022-07-01 08:41:18 +00:00
Aram Sargsyan 5e8778df6a Add placeholder for [GL #3398] 2022-07-01 08:36:51 +00:00
Petr Špaček 4a460fb420 Merge branch 'pspacek/arm-grammar-render' into 'main'
Render grammar snippets in the ARM

See merge request isc-projects/bind9!6491
2022-07-01 07:25:48 +00:00
Petr Špaček 908acd5d70 Add note that named.conf man page is not a complete manual
We cannot simply do URL because it would make our lives more complicated
with -S edition.
2022-07-01 08:59:24 +02:00
Petr Špaček f5faddd08a Cleanup tag filtering code for statementlist:: RST directive
Technically this is fixup for
33931c97fa
but that commit is already merged.
2022-07-01 08:59:24 +02:00
Petr Špaček d88fefbb4a Add link anchor and hyperlinks to keys statement
This is super confusing because statement "keys" exists in context
controls and server blocks where it refers to symmetric TSIG key, and it
_also_ exists in dnssec-policy block where it specifies public-private
key pair parameters.

In an (unsuccessful) attempt to disambiguate these two I added bunch of
hyperlinks and a warning.
2022-07-01 08:59:24 +02:00
Petr Špaček 82e2f0b37e Describe rndc server block using .. rndcconf syntax
We need to split the description to silence warnings about undescribed
statements.
2022-07-01 08:59:24 +02:00
Petr Špaček 10f88bffe5 Define default-source-address, default-source-address-v6 for rndc 2022-07-01 08:59:24 +02:00
Petr Špaček 1687b40849 Document ipv4only-* options in the ARM
Statements ipv4only-contact, ipv4only-enable, ipv4only-server did not
have their own section in the ARM. Now they have.
2022-07-01 08:59:23 +02:00
Petr Špaček 40b3ce727c Add missing link anchor for dlz search statement 2022-07-01 08:59:23 +02:00
Petr Špaček 261bdc7358 Special-case zone in-view
It is not really a zone type, so let's not generate "type in-view"
anchor for it.
2022-07-01 08:59:23 +02:00
Petr Špaček 1af157eb20 Remove extra whitespace in grammar for null statement 2022-07-01 08:59:23 +02:00
Petr Špaček 08a8acffdc Add ability to filter tables using blocks
A new syntax
.. namedconf:statementlist::
   :filter_blocks: type secondary
allows to generate tables with statements allowed within specified
blocks.
2022-07-01 08:59:23 +02:00
Petr Špaček 5c04e3c524 Sort grammar map keys while pretty printing them
It would be too easy if we could just call sorted(). Thanks to zone
grammar the most important key "type" gets sorted near end, so we pull
it up to the top using a hack.
2022-07-01 08:59:23 +02:00
Petr Špaček 0392144e99 Pretty-print grammar for zones
It turns out the tree of dictionaries is not the best structure to
represent our grammar, unfortunatelly. The problem is that "zone" has
several context-dependent variants which change meaning of "zone" based
on inner field "type".

Redesigning the whole structure does not seem to be worth, so I settled
on this terrible hack.
2022-07-01 08:59:23 +02:00
Petr Špaček 435cbb61ba Add zone definitions into the view grammar
I cannot see a reasonable way to achieve this without the hack in this
commit.
2022-07-01 08:59:23 +02:00
Petr Špaček 1f5bc4fe3b Add option to suppress grammar rendering
A new flag
.. namedconf:statement::
   :suppress_grammar:
suppresses pretty-printing grammar.

It is useful mostly for zones because each zone has it's own grammar, so
printing all of them at once usually does not make sense.
2022-07-01 08:59:23 +02:00
Petr Špaček 0bbbdc6244 Remove auto-generated rst files in repo in favour of grammar pretty printer 2022-07-01 08:59:23 +02:00
Petr Špaček 7b4ad8a3ff Warn about experimental and deprecated options 2022-07-01 08:59:23 +02:00
Petr Špaček c6fe8970f6 Render statement's grammar
This is replacement for auto-generated *.rst files stored in the repo.
2022-07-01 08:59:23 +02:00
Petr Špaček eba3b1ad16 Render list of blocks accepting a given statement 2022-07-01 08:59:23 +02:00
Petr Špaček d61d998e3b Detect unsupported statement:: directives with multiple names 2022-07-01 08:59:23 +02:00
Petr Špaček ebe6ede2ec Warn about statements not found in the grammar 2022-07-01 08:59:23 +02:00
Petr Špaček cbad1803a5 Warn about statements in grammar not described in docs
Skip over obsolete options.
2022-07-01 08:59:22 +02:00
Petr Špaček 1c6f2c5ad1 Give Sphinx configuration domains access to grammar 2022-07-01 08:59:22 +02:00
Petr Špaček a691ebd0c9 Add helper to unify options and zone block grammars
A helper is needed to combine cfg_test output for generic options and
all the type-dependent zone block variants.
2022-07-01 08:59:22 +02:00
Petr Špaček 190004e46c Add pretty printer for JSON grammar
It produces the same format as cfg_test --grammar. The advantage is that
it allows to print any node in configuration the tree, not just whole
blocks.
2022-07-01 08:59:22 +02:00