]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scripts: sphinx-pre-install: change recommendation text if venv exists
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 21 Apr 2020 14:31:07 +0000 (16:31 +0200)
committerJonathan Corbet <corbet@lwn.net>
Tue, 28 Apr 2020 18:52:02 +0000 (12:52 -0600)
If one is running a Sphinx version older than what's recommended,
but there's already a newer working virtual env, change the
text, as it is just a matter of switching to the new venv, instead
of creating a new one from scratch.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/bcf79d0399a1c3444ca938dcdce599c3273980ab.1587478901.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/sphinx-pre-install

index 0d5684c08bbc67c2f83886ea0577e9c63a63a795..938b65d40fc8f1971383c3de1b455d9daeb07fb6 100755 (executable)
@@ -29,6 +29,7 @@ my $install = "";
 my $virtenv_dir = "";
 my $python_cmd = "";
 my $min_version;
+my $cur_version;
 my $rec_version = "1.7.9";     # PDF won't build here
 my $min_pdf_version = "2.4.4"; # Min version where pdf builds
 
@@ -257,7 +258,6 @@ sub get_sphinx_version($)
 sub check_sphinx()
 {
        my $default_version;
-       my $cur_version;
 
        open IN, $conf or die "Can't open $conf";
        while (<IN>) {
@@ -703,8 +703,6 @@ sub check_needs()
                print "Unknown OS\n\n";
        }
 
-       print "To upgrade Sphinx, use:\n\n" if ($rec_sphinx_upgrade);
-
        # Check python command line, trying first python3
        $python_cmd = findprog("python3");
        $python_cmd = check_program("python", 0) if (!$python_cmd);
@@ -786,24 +784,36 @@ sub check_needs()
                @activates = sort {$b cmp $a} @activates;
                my ($activate, $ver);
                foreach my $f (@activates) {
-                       $activate = $f;
-                       next if ($activate lt $min_activate);
+                       next if ($f lt $min_activate);
 
-                       my $sphinx_cmd = $activate;
+                       my $sphinx_cmd = $f;
                        $sphinx_cmd =~ s/activate/sphinx-build/;
                        next if (! -f $sphinx_cmd);
 
                        $ver = get_sphinx_version($sphinx_cmd);
-                       last if ($ver ge $min_version);
+                       if ($need_sphinx && ($ver ge $min_version)) {
+                               $activate = $f;
+                               last;
+                       } elsif ($ver gt $cur_version) {
+                               $activate = $f;
+                               last;
+                       }
                }
-               if ($need_sphinx && ($activate ne "")) {
-                       printf "\nNeed to activate Sphinx (version $ver) on virtualenv with:\n";
-                       printf "\t. $activate\n";
-                       deactivate_help();
-                       exit (1);
+               if ($activate ne "") {
+                       if ($need_sphinx) {
+                               printf "\nNeed to activate Sphinx (version $ver) on virtualenv with:\n";
+                               printf "\t. $activate\n";
+                               deactivate_help();
+                               exit (1);
+                       } else {
+                               printf "\nYou may also use a newer Sphinx (version $ver) with:\n";
+                               printf "\tdeactivate && . $activate\n";
+                       }
                } else {
                        my $rec_activate = "$virtenv_dir/bin/activate";
 
+                       print "To upgrade Sphinx, use:\n\n" if ($rec_sphinx_upgrade);
+
                        if ($need_venv) {
                                printf "\t$python_cmd -m venv $virtenv_dir\n";
                        } else {