Thread (4 messages) 4 messages, 2 authors, 2020-02-24

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help