RE: RFC: Fix for sphinx setup message
From: Bird, Tim <hidden>
Date: 2020-02-24 19:50:51
Also in:
lkml
-----Original Message----- From: Mauro Carvalho Chehab <mchehab@kernel.org> Em Sat, 22 Feb 2020 08:16:44 +0100 Mauro Carvalho Chehab [off-list ref] escreveu:quoted
Hi Tim, Em Fri, 21 Feb 2020 22:15:36 +0000 "Bird, Tim" [off-list ref] escreveu:quoted
(Resend: Sorry for the dup. I forgot to include the maintainers, and I had the LKML address wrong.) I was trying to set up my machine to do some documentation work, and I had some problems with the sphinx install. I figured out how to work around the issue, but I have a question about how to add the information to scripts/sphinx-pre-install (or whether it should go somewhere else). Detailed messages below, but the TLl;DR is that I got the message: ------- You should run: sudo apt-get install dvipng fonts-noto-cjk latexmk librsvg2-bin texlive-xetex /usr/bin/virtualenv sphinx_1.7.9 . sphinx_1.7.9/bin/activate pip install -r ./Documentation/sphinx/requirements.txt ... ------ The pip install step didn't work, and I found that I needed to have everything based on python3 instead. When I replaced: /usr/bin/virtualenv sphinx_1.7.9 with /usr/bin/virtualenv -p python3 sphinx_1.7.9 everything worked. This message is coming from scripts/sphinx-pre-install (I believe on line 708). Should I go ahead and submit a patch to add '-p python3' to that line? Are there any downsides to enforcing that the virtualenv used for the documentation build use python3 only?Actually, the script tries to detect if python3 is installed. Currently, it does it by seeking for a python3 variant of virtualenv. If it finds, it changes the recommendation accordingly. The actual code with does that is this one: my $virtualenv = findprog("virtualenv-3"); $virtualenv = findprog("virtualenv-3.5") if (!$virtualenv); $virtualenv = findprog("virtualenv") if (!$virtualenv); $virtualenv = "virtualenv" if (!$virtualenv); This works fine on older Fedora distros (and probably CentOS/RHEL), where there is a python3 variant of virtualenv. On Ubuntu (and Fedora 31), it will just use virtualenv. So, perhaps if we add something like this (untested): my $python = findprog("python3"); if ($python) $virtualenv = "$virtualenv -p $python"; it would make the trick. Please notice, however, that this could cause troubles with some distros that might have a version of virtualenv that won't work with the above. So, perhaps we should add something like the above inside give_debian_hints(), and either ensure that other Debian and Ubuntu LTS versions will work with such change, or add some checks for the Ubuntu/Debian versions where we know this works.Indeed it seems that, with some versions of python, virtualenv -p python3 don't work: https://stackoverflow.com/questions/23842713/using-python-3-in-virtualenv This could well be something already solved on most distros, but I think it would be safer if we only add "-p python3" if it is Ubuntu 16.04 or upper (and doing a similar test for Debian).
OK - see the patch I will send shortly for what I came up with. -- Tim
quoted
Note: the version of the distribution (and its name) is already stored at the global var $system_release. Cheers, Mauro