diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-04 00:07:29 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-04 00:07:29 -0400 |
| commit | 81a84ad3cb5711cec79f4dd53a4ce026b092c432 (patch) | |
| tree | 83ce8fe360cb1449c4765bb6dc8bfee0db8044b2 /scripts | |
| parent | fe91f28138e730790db014812623cfaadd318fa6 (diff) | |
| parent | 86c0f046a8b0c23fca65f77333c233a06c25ef9a (diff) | |
Merge branch 'docs-next' of git://git.lwn.net/linux
Pull documentation updates from Jonathan Corbet:
"After a fair amount of churn in the last couple of cycles, docs are
taking it easier this time around. Lots of fixes and some new
documentation, but nothing all that radical. Perhaps the most
interesting change for many is the scripts/sphinx-pre-install tool
from Mauro; it will tell you exactly which packages you need to
install to get a working docs toolchain on your system.
There are two little patches reaching outside of Documentation/; both
just tweak kerneldoc comments to eliminate warnings and fix some
dangling doc pointers"
* 'docs-next' of git://git.lwn.net/linux: (52 commits)
Documentation/sphinx: fix kernel-doc decode for non-utf-8 locale
genalloc: Fix an incorrect kerneldoc comment
doc: Add documentation for the genalloc subsystem
assoc_array: fix path to assoc_array documentation
kernel-doc parser mishandles declarations split into lines
docs: ReSTify table of contents in core.rst
docs: process: drop git snapshots from applying-patches.rst
Documentation:input: fix typo
swap: Remove obsolete sentence
sphinx.rst: Allow Sphinx version 1.6 at the docs
docs-rst: fix verbatim font size on tables
Documentation: stable-kernel-rules: fix broken git urls
rtmutex: update rt-mutex
rtmutex: update rt-mutex-design
docs: fix minimal sphinx version in conf.py
docs: fix nested numbering in the TOC
NVMEM documentation fix: A minor typo
docs-rst: pdf: use same vertical margin on all Sphinx versions
doc: Makefile: if sphinx is not found, run a check script
docs: Fix paths in security/keys
...
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/kernel-doc | 4 | ||||
| -rwxr-xr-x | scripts/sphinx-pre-install | 609 |
2 files changed, 613 insertions, 0 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 6e36b7889001..9d3eafea58f0 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
| @@ -2226,6 +2226,7 @@ sub dump_enum($$) { | |||
| 2226 | if ($x =~ /enum\s+(\w+)\s*{(.*)}/) { | 2226 | if ($x =~ /enum\s+(\w+)\s*{(.*)}/) { |
| 2227 | $declaration_name = $1; | 2227 | $declaration_name = $1; |
| 2228 | my $members = $2; | 2228 | my $members = $2; |
| 2229 | $members =~ s/\s+$//; | ||
| 2229 | 2230 | ||
| 2230 | foreach my $arg (split ',', $members) { | 2231 | foreach my $arg (split ',', $members) { |
| 2231 | $arg =~ s/^\s*(\w+).*/$1/; | 2232 | $arg =~ s/^\s*(\w+).*/$1/; |
| @@ -2766,6 +2767,9 @@ sub process_proto_type($$) { | |||
| 2766 | 2767 | ||
| 2767 | while (1) { | 2768 | while (1) { |
| 2768 | if ( $x =~ /([^{};]*)([{};])(.*)/ ) { | 2769 | if ( $x =~ /([^{};]*)([{};])(.*)/ ) { |
| 2770 | if( length $prototype ) { | ||
| 2771 | $prototype .= " " | ||
| 2772 | } | ||
| 2769 | $prototype .= $1 . $2; | 2773 | $prototype .= $1 . $2; |
| 2770 | ($2 eq '{') && $brcount++; | 2774 | ($2 eq '{') && $brcount++; |
| 2771 | ($2 eq '}') && $brcount--; | 2775 | ($2 eq '}') && $brcount--; |
diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install new file mode 100755 index 000000000000..677756ae34c9 --- /dev/null +++ b/scripts/sphinx-pre-install | |||
| @@ -0,0 +1,609 @@ | |||
| 1 | #!/usr/bin/perl | ||
| 2 | use strict; | ||
| 3 | |||
| 4 | # Copyright (c) 2017 Mauro Carvalho Chehab <mchehab@kernel.org> | ||
| 5 | # | ||
| 6 | # This program is free software; you can redistribute it and/or | ||
| 7 | # modify it under the terms of the GNU General Public License | ||
| 8 | # as published by the Free Software Foundation; either version 2 | ||
| 9 | # of the License, or (at your option) any later version. | ||
| 10 | # | ||
| 11 | # This program is distributed in the hope that it will be useful, | ||
| 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | # GNU General Public License for more details. | ||
| 15 | |||
| 16 | my $virtenv_dir = "sphinx_1.4"; | ||
| 17 | my $requirement_file = "Documentation/sphinx/requirements.txt"; | ||
| 18 | |||
| 19 | # | ||
| 20 | # Static vars | ||
| 21 | # | ||
| 22 | |||
| 23 | my %missing; | ||
| 24 | my $system_release; | ||
| 25 | my $need = 0; | ||
| 26 | my $optional = 0; | ||
| 27 | my $need_symlink = 0; | ||
| 28 | my $need_sphinx = 0; | ||
| 29 | my $install = ""; | ||
| 30 | |||
| 31 | # | ||
| 32 | # Command line arguments | ||
| 33 | # | ||
| 34 | |||
| 35 | my $pdf = 1; | ||
| 36 | my $virtualenv = 1; | ||
| 37 | |||
| 38 | # | ||
| 39 | # List of required texlive packages on Fedora and OpenSuse | ||
| 40 | # | ||
| 41 | |||
| 42 | my %texlive = ( | ||
| 43 | 'adjustbox.sty' => 'texlive-adjustbox', | ||
| 44 | 'amsfonts.sty' => 'texlive-amsfonts', | ||
| 45 | 'amsmath.sty' => 'texlive-amsmath', | ||
| 46 | 'amssymb.sty' => 'texlive-amsfonts', | ||
| 47 | 'amsthm.sty' => 'texlive-amscls', | ||
| 48 | 'anyfontsize.sty' => 'texlive-anyfontsize', | ||
| 49 | 'atbegshi.sty' => 'texlive-oberdiek', | ||
| 50 | 'bm.sty' => 'texlive-tools', | ||
| 51 | 'capt-of.sty' => 'texlive-capt-of', | ||
| 52 | 'cmap.sty' => 'texlive-cmap', | ||
| 53 | 'ecrm1000.tfm' => 'texlive-ec', | ||
| 54 | 'eqparbox.sty' => 'texlive-eqparbox', | ||
| 55 | 'eu1enc.def' => 'texlive-euenc', | ||
| 56 | 'fancybox.sty' => 'texlive-fancybox', | ||
| 57 | 'fancyvrb.sty' => 'texlive-fancyvrb', | ||
| 58 | 'float.sty' => 'texlive-float', | ||
| 59 | 'fncychap.sty' => 'texlive-fncychap', | ||
| 60 | 'footnote.sty' => 'texlive-mdwtools', | ||
| 61 | 'framed.sty' => 'texlive-framed', | ||
| 62 | 'luatex85.sty' => 'texlive-luatex85', | ||
| 63 | 'multirow.sty' => 'texlive-multirow', | ||
| 64 | 'needspace.sty' => 'texlive-needspace', | ||
| 65 | 'palatino.sty' => 'texlive-psnfss', | ||
| 66 | 'parskip.sty' => 'texlive-parskip', | ||
| 67 | 'polyglossia.sty' => 'texlive-polyglossia', | ||
| 68 | 'tabulary.sty' => 'texlive-tabulary', | ||
| 69 | 'threeparttable.sty' => 'texlive-threeparttable', | ||
| 70 | 'titlesec.sty' => 'texlive-titlesec', | ||
| 71 | 'ucs.sty' => 'texlive-ucs', | ||
| 72 | 'upquote.sty' => 'texlive-upquote', | ||
| 73 | 'wrapfig.sty' => 'texlive-wrapfig', | ||
| 74 | ); | ||
| 75 | |||
| 76 | # | ||
| 77 | # Subroutines that checks if a feature exists | ||
| 78 | # | ||
| 79 | |||
| 80 | sub check_missing(%) | ||
| 81 | { | ||
| 82 | my %map = %{$_[0]}; | ||
| 83 | |||
| 84 | foreach my $prog (sort keys %missing) { | ||
| 85 | my $is_optional = $missing{$prog}; | ||
| 86 | |||
| 87 | if ($is_optional) { | ||
| 88 | print "Warning: better to also install \"$prog\".\n"; | ||
| 89 | } else { | ||
| 90 | print "ERROR: please install \"$prog\", otherwise, build won't work.\n"; | ||
| 91 | } | ||
| 92 | if (defined($map{$prog})) { | ||
| 93 | $install .= " " . $map{$prog}; | ||
| 94 | } else { | ||
| 95 | $install .= " " . $prog; | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | $install =~ s/^\s//; | ||
| 100 | } | ||
| 101 | |||
| 102 | sub add_package($$) | ||
| 103 | { | ||
| 104 | my $package = shift; | ||
| 105 | my $is_optional = shift; | ||
| 106 | |||
| 107 | $missing{$package} = $is_optional; | ||
| 108 | if ($is_optional) { | ||
| 109 | $optional++; | ||
| 110 | } else { | ||
| 111 | $need++; | ||
| 112 | } | ||
| 113 | } | ||
| 114 | |||
| 115 | sub check_missing_file($$$) | ||
| 116 | { | ||
| 117 | my $file = shift; | ||
| 118 | my $package = shift; | ||
| 119 | my $is_optional = shift; | ||
| 120 | |||
| 121 | return if(-e $file); | ||
| 122 | |||
| 123 | add_package($package, $is_optional); | ||
| 124 | } | ||
| 125 | |||
| 126 | sub findprog($) | ||
| 127 | { | ||
| 128 | foreach(split(/:/, $ENV{PATH})) { | ||
| 129 | return "$_/$_[0]" if(-x "$_/$_[0]"); | ||
| 130 | } | ||
| 131 | } | ||
| 132 | |||
| 133 | sub check_program($$) | ||
| 134 | { | ||
| 135 | my $prog = shift; | ||
| 136 | my $is_optional = shift; | ||
| 137 | |||
| 138 | return if findprog($prog); | ||
| 139 | |||
| 140 | add_package($prog, $is_optional); | ||
| 141 | } | ||
| 142 | |||
| 143 | sub check_perl_module($$) | ||
| 144 | { | ||
| 145 | my $prog = shift; | ||
| 146 | my $is_optional = shift; | ||
| 147 | |||
| 148 | my $err = system("perl -M$prog -e 1 2>/dev/null /dev/null"); | ||
| 149 | return if ($err == 0); | ||
| 150 | |||
| 151 | add_package($prog, $is_optional); | ||
| 152 | } | ||
| 153 | |||
| 154 | sub check_python_module($$) | ||
| 155 | { | ||
| 156 | my $prog = shift; | ||
| 157 | my $is_optional = shift; | ||
| 158 | |||
| 159 | my $err = system("python3 -c 'import $prog' 2>/dev/null /dev/null"); | ||
| 160 | return if ($err == 0); | ||
| 161 | my $err = system("python -c 'import $prog' 2>/dev/null /dev/null"); | ||
| 162 | return if ($err == 0); | ||
| 163 | |||
| 164 | add_package($prog, $is_optional); | ||
| 165 | } | ||
| 166 | |||
| 167 | sub check_rpm_missing($$) | ||
| 168 | { | ||
| 169 | my @pkgs = @{$_[0]}; | ||
| 170 | my $is_optional = $_[1]; | ||
| 171 | |||
| 172 | foreach my $prog(@pkgs) { | ||
| 173 | my $err = system("rpm -q '$prog' 2>/dev/null >/dev/null"); | ||
| 174 | add_package($prog, $is_optional) if ($err); | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | sub check_pacman_missing($$) | ||
| 179 | { | ||
| 180 | my @pkgs = @{$_[0]}; | ||
| 181 | my $is_optional = $_[1]; | ||
| 182 | |||
