mirror of https://gitee.com/openkylin/linux.git
scripts: sphinx-pre-install: fix a bug when using with venv
When python3 creates a venv, it adds python into it! This causes any upgrade recommendation to look like this: /devel/v4l/docs/sphinx_1.7.9/bin/python3 -m venv sphinx_2.4.4 . sphinx_2.4.4/bin/activate pip install -r ./Documentation/sphinx/requirements.txt With is wrong (and it may not work). So, when recomending an upgrade, exclude the venv dir from the search path, and get the system's python. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Link: https://lore.kernel.org/r/aa622ff71bebf6960fc0262fb90e7ebc7a999a02.1587478901.git.mchehab+huawei@kernel.org Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
2834a7412b
commit
412b09ddad
|
@ -148,6 +148,24 @@ sub findprog($)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub find_python_no_venv()
|
||||||
|
{
|
||||||
|
my $prog = shift;
|
||||||
|
|
||||||
|
my $cur_dir = qx(pwd);
|
||||||
|
$cur_dir =~ s/\s+$//;
|
||||||
|
|
||||||
|
foreach my $dir (split(/:/, $ENV{PATH})) {
|
||||||
|
next if ($dir =~ m,($cur_dir)/sphinx,);
|
||||||
|
return "$dir/python3" if(-x "$dir/python3");
|
||||||
|
}
|
||||||
|
foreach my $dir (split(/:/, $ENV{PATH})) {
|
||||||
|
next if ($dir =~ m,($cur_dir)/sphinx,);
|
||||||
|
return "$dir/python" if(-x "$dir/python");
|
||||||
|
}
|
||||||
|
return "python";
|
||||||
|
}
|
||||||
|
|
||||||
sub check_program($$)
|
sub check_program($$)
|
||||||
{
|
{
|
||||||
my $prog = shift;
|
my $prog = shift;
|
||||||
|
@ -814,6 +832,8 @@ sub check_needs()
|
||||||
|
|
||||||
print "To upgrade Sphinx, use:\n\n" if ($rec_sphinx_upgrade);
|
print "To upgrade Sphinx, use:\n\n" if ($rec_sphinx_upgrade);
|
||||||
|
|
||||||
|
$python_cmd = find_python_no_venv();
|
||||||
|
|
||||||
if ($need_venv) {
|
if ($need_venv) {
|
||||||
printf "\t$python_cmd -m venv $virtenv_dir\n";
|
printf "\t$python_cmd -m venv $virtenv_dir\n";
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue