Em Wed, 22 May 2019 13:04:08 -0300 Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> escreveu: > Em Wed, 22 May 2019 09:45:59 -0600 > Jonathan Corbet <corbet@xxxxxxx> escreveu: > > > On Wed, 22 May 2019 15:25:36 +0200 > > Markus Heiser <markus.heiser@xxxxxxxxxxx> wrote: > > > > > Lets use 1.7 : > > > > > > - no need for Use_SSI wrapper > > > - new log should work with 1.7 [1] --> no need for kernellog.py and > > > additional imports, instead include on top of python modules :: > > > > > > from sphinx.util import logging > > > logger = logging.getLogger('kerneldoc') > > > > I think we're going to have to drag things forward at some point in the > > not-too-distant future, but I think I'd rather not do that quite yet. The > > cost of supporting older sphinx for a few releases while we warn people is > > not all that high. So I think we should: > > > > - Put in (a future version of) my hacks for now, plus whatever else might > > be needed to make 2.0 work right. > > > > - Fix the fallout with regard to out-of-toctree .rst files so that we can > > actually build again with current sphinx. > > > > - Update Documentation/sphinx/requirements.txt to ask for something a wee > > bit more recent than 1.4.9. > > You should remember to also update conf.py (with currently points to 1.3): > > # If your documentation needs a minimal Sphinx version, state it here. > needs_sphinx = '1.3' > > Also, if you touch there, you should also touch: > > ./scripts/sphinx-pre-install > > The change there won't be as trivial as just changing this line: > > $virtenv_dir = "sphinx_1.4"; > > as the script should now run sphinx-build --version, in order to check > if the version is lower than the new minimal version. It probably makes > sense to make it grep the version from needs_sphinx at conf.py. > > > - Add a warning when building with an older version that (say) 1.7 will > > be required as of (say) 5.5. > > It probably makes sense to add such check at the pre-install script, > and add a: > > SPHINXOPTS="-jauto" > > somewhere if version is 1.7 or upper. > I'm meaning something like the enclosed patch. (PS.: I'm still working at the patch) Thanks, Mauro [RFC PATCH] scripts/sphinx-pre-install: make it handle Sphinx versions As we want to switch to a newer Sphinx version in the future, add some version detected logic. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx> diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install index f6a5c0bae31e..8835aede4c61 100755 --- a/scripts/sphinx-pre-install +++ b/scripts/sphinx-pre-install @@ -13,7 +13,7 @@ use strict; # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -my $virtenv_dir = "sphinx_1.4"; +my $conf = "Documentation/conf.py"; my $requirement_file = "Documentation/sphinx/requirements.txt"; # @@ -27,6 +27,10 @@ my $optional = 0; my $need_symlink = 0; my $need_sphinx = 0; my $install = ""; +my $min_version; +my $rec_version; +my $cur_version; +my $virtenv_dir = "sphinx_"; # # Command line arguments @@ -76,6 +80,52 @@ my %texlive = ( # Subroutines that checks if a feature exists # +sub handle_sphinx_version() +{ + open IN, $conf; + while (<IN>) { + if (m/^\s*needs_sphinx\s*=\s*[\'\"]([\d\.]+)[\'\"]/) { + $min_version=$1; + last; + } + } + close IN; + + die "Can't get needs_sphinx version from $conf" if (!$min_version); + + open IN, $requirement_file; + while (<IN>) { + if (m/^\s*Sphinx\s*==\s*([\d\.]+)$/) { + $rec_version=$1; + last; + } + } + close IN; + + open IN, "sphinx-build --version 2>&1 |"; + while (<IN>) { + if (m/^\s*sphinx-build\s+([\d\.]+)$/) { + $cur_version=$1; + last; + } + } + close IN; + + $virtenv_dir .= $rec_version; + + # Sphinx is not installed + return if (!$cur_version); + + if ($cur_version lt $min_version) { + print "Sphinx version older than $min_version! We recommend at least $rec_version"; + exit -1; + } + + if ($cur_version lt $rec_version) { + print "Warning: we recommend at least Sphinx version $rec_version"; + } +} + sub check_missing(%) { my %map = %{$_[0]}; @@ -587,6 +637,8 @@ while (@ARGV) { } } +handle_sphinx_version(); + # # Determine the system type. There's no standard unique way that would # work with all distros with a minimal package install. So, several