X-Git-Url: https://git.donarmstrong.com/?p=debhelper.git;a=blobdiff_plain;f=Debian%2FDebhelper%2FBuildsystem%2Fpython_distutils.pm;h=81cff3c9fc8fe15689605f800964f585a0725dbd;hp=9b20e185c2a48aca7df0cbc4fc8e225d5dffd29f;hb=00250d8cd20a37be362850d3ed8a652b0768455f;hpb=ec62efa9792eae708c39c688aacc0a26f90c7fda diff --git a/Debian/Debhelper/Buildsystem/python_distutils.pm b/Debian/Debhelper/Buildsystem/python_distutils.pm index 9b20e18..81cff3c 100644 --- a/Debian/Debhelper/Buildsystem/python_distutils.pm +++ b/Debian/Debhelper/Buildsystem/python_distutils.pm @@ -24,14 +24,14 @@ sub DEFAULT_BUILD_DIRECTORY { sub new { my $class=shift; my $this=$class->SUPER::new(@_); - # Out of source tree building is prefered. + # Out of source tree building is preferred. $this->prefer_out_of_source_building(@_); return $this; } sub check_auto_buildable { my $this=shift; - return -e $this->get_sourcepath("setup.py"); + return -e $this->get_sourcepath("setup.py") ? 1 : 0; } sub not_our_cfg { @@ -108,25 +108,42 @@ sub setup_py { my $this=shift; my $act=shift; - # We need to to run setup.py with the default python first + # We need to to run setup.py with the default python last # as distutils/setuptools modifies the shebang lines of scripts. - # This ensures that #!/usr/bin/python is used and not pythonX.Y + # This ensures that #!/usr/bin/python is installed last and + # not pythonX.Y # Take into account that the default Python must not be in # the requested Python versions. # Then, run setup.py with each available python, to build # extensions for each. - my $python_default = `pyversions -d`; - $python_default =~ s/^\s+//; - $python_default =~ s/\s+$//; - my @python_requested = split ' ', `pyversions -r 2>/dev/null`; + my $python_default = `pyversions -d`; + if ($? == -1) { + error("failed to run pyversions") + } + my $ecode = $? >> 8; + if ($ecode != 0) { + error("pyversions -d failed [$ecode]") + } + $python_default =~ s/^\s+//; + $python_default =~ s/\s+$//; + my @python_requested = split ' ', `pyversions -r`; + if ($? == -1) { + error("failed to run pyversions") + } + $ecode = $? >> 8; + if ($ecode != 0) { + error("pyversions -r failed [$ecode]") + } if (grep /^\Q$python_default\E/, @python_requested) { - @python_requested = ("python", grep(!/^\Q$python_default\E/, - @python_requested)); + @python_requested = ( + grep(!/^\Q$python_default\E/, @python_requested), + "python", + ); } my @python_dbg; - my @dbg_build_needed = $this->dbg_build_needed(); + my @dbg_build_needed = $this->dbg_build_needed(); foreach my $python (map { $_."-dbg" } @python_requested) { if (grep /^(python-all-dbg|\Q$python\E)/, @dbg_build_needed) { push @python_dbg, $python; @@ -137,8 +154,8 @@ sub setup_py { } } - foreach my $python (@python_requested, @python_dbg) { - if (-x "/usr/bin/".$python) { + foreach my $python (@python_dbg, @python_requested) { + if (-f "/usr/lib/$python/distutils/__init__.py") { # To allow backports of debhelper we don't pass # --install-layout=deb to 'setup.py install` for # those Python versions where the option is @@ -160,7 +177,9 @@ sub setup_py { sub build { my $this=shift; - $this->setup_py("build", @_); + $this->setup_py("build", + "--force", + @_); } sub install {