Skip to content

Commit

Permalink
scripts: kernel-doc: allow passing desired Sphinx C domain dialect
Browse files Browse the repository at this point in the history
When kernel-doc is called via kerneldoc.py, there's no need to
auto-detect the Sphinx version, as the Sphinx module already
knows it. So, add an optional parameter to allow changing the
Sphinx dialect.

As kernel-doc can also be manually called, keep the auto-detection
logic if the parameter was not specified. On such case, emit
a warning if sphinx-build can't be found at PATH.

I ended using a suggestion from Joe for using a more readable
regex, instead of using a complex one with a hidden group like:

	m/^(\d+)\.(\d+)(?:\.?(\d+)?)/

in order to get the optional <patch> argument.

Thanks-to: Joe Perches <joe@perches.com>
Suggested-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
  • Loading branch information
mchehab authored and intel-lab-lkp committed Oct 6, 2020
1 parent e5ffaf9 commit 1e803a8
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 8 deletions.
5 changes: 5 additions & 0 deletions Documentation/sphinx/kerneldoc.py
Expand Up @@ -70,6 +70,11 @@ def run(self):
env = self.state.document.settings.env
cmd = [env.config.kerneldoc_bin, '-rst', '-enable-lineno']

# Pass the version string to kernel-doc, as it needs to use a different
# dialect, depending what the C domain supports for each specific
# Sphinx versions
cmd += ['-sphinx-version', sphinx.__version__]

filename = env.config.kerneldoc_srctree + '/' + self.arguments[0]
export_file_patterns = []

Expand Down
44 changes: 36 additions & 8 deletions scripts/kernel-doc
Expand Up @@ -56,6 +56,13 @@ Output format selection (mutually exclusive):
-rst Output reStructuredText format.
-none Do not output documentation, only warnings.
Output format selection modifier (affects only ReST output):
-sphinx-version Use the ReST C domain dialect compatible with an
specific Sphinx Version.
If not specified, kernel-doc will auto-detect using
the sphinx-build version found on PATH.
Output selection (mutually exclusive):
-export Only output documentation for symbols that have been
exported using EXPORT_SYMBOL() or EXPORT_SYMBOL_GPL()
Expand Down Expand Up @@ -270,7 +277,7 @@ if ($#ARGV == -1) {
}

my $kernelversion;
my $sphinx_major;
my ($sphinx_major, $sphinx_minor, $sphinx_patch);

my $dohighlight = "";

Expand Down Expand Up @@ -457,6 +464,19 @@ while ($ARGV[0] =~ m/^--?(.*)/) {
$enable_lineno = 1;
} elsif ($cmd eq 'show-not-found') {
$show_not_found = 1; # A no-op but don't fail
} elsif ($cmd eq "sphinx-version") {
my $ver_string = shift @ARGV;
if ($ver_string =~ m/^(\d+)\.(\d+)(\.\d+)?/) {
$sphinx_major = $1;
$sphinx_minor = $2;
if (defined($3)) {
$sphinx_patch = substr($3,1);
} else {
$sphinx_patch = 0;
}
} else {
die "Sphinx version should either major.minor or major.minor.patch format\n";
}
} else {
# Unknown argument
usage();
Expand All @@ -477,29 +497,37 @@ sub findprog($)
sub get_sphinx_version()
{
my $ver;
my $major = 1;

my $cmd = "sphinx-build";
if (!findprog($cmd)) {
my $cmd = "sphinx-build3";
return $major if (!findprog($cmd));
if (!findprog($cmd)) {
$sphinx_major = 1;
$sphinx_minor = 2;
$sphinx_patch = 0;
printf STDERR "Warning: Sphinx version not found. Using default (Sphinx version %d.%d.%d)\n",
$sphinx_major, $sphinx_minor, $sphinx_patch;
return;
}
}

open IN, "$cmd --version 2>&1 |";
while (<IN>) {
if (m/^\s*sphinx-build\s+([\d]+)\.([\d\.]+)(\+\/[\da-f]+)?$/) {
$major=$1;
$sphinx_major = $1;
$sphinx_minor = $2;
$sphinx_patch = $3;
last;
}
# Sphinx 1.2.x uses a different format
if (m/^\s*Sphinx.*\s+([\d]+)\.([\d\.]+)$/) {
$major=$1;
$sphinx_major = $1;
$sphinx_minor = $2;
$sphinx_patch = $3;
last;
}
}
close IN;

return $major;
}

# get kernel version from env
Expand Down Expand Up @@ -2326,7 +2354,7 @@ sub process_file($) {
}


$sphinx_major = get_sphinx_version();
get_sphinx_version() if (!$sphinx_major);
$kernelversion = get_kernel_version();

# generate a sequence of code that will splice in highlighting information
Expand Down

0 comments on commit 1e803a8

Please sign in to comment.