diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2009-07-19 15:34:22 +0200 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-07-19 15:34:22 +0200 |
commit | 3e479237e5cbe95d78cd71aa410a4b410830cfe3 (patch) | |
tree | f8e2c799289ef3d17c9221a561fd4326c6ab39bb /Debian/Debhelper/Buildsystem | |
parent | ef9261728727c65424783cdffde8efe91686c61c (diff) | |
parent | 47687d38521549809ebcc85396142270fa1f21d3 (diff) |
Merge commit 'bzed/python-build' into buildsystems
Conflicts:
debian/changelog
Diffstat (limited to 'Debian/Debhelper/Buildsystem')
-rw-r--r-- | Debian/Debhelper/Buildsystem/python_distutils.pm | 52 |
1 files changed, 46 insertions, 6 deletions
diff --git a/Debian/Debhelper/Buildsystem/python_distutils.pm b/Debian/Debhelper/Buildsystem/python_distutils.pm index 2ee2cc1..9274a7d 100644 --- a/Debian/Debhelper/Buildsystem/python_distutils.pm +++ b/Debian/Debhelper/Buildsystem/python_distutils.pm @@ -79,6 +79,31 @@ sub pre_building_step { $this->SUPER::pre_building_step($step); } +sub dbg_build_needed { + my $this=shift; + my $act=shift; + + # Return a list of python-dbg package which are listed + # in the build-dependencies. This is kinda ugly, but building + # dbg extensions without checking if they're supposed to be + # built may result in various FTBFS if the package is not + # built in a clean chroot. + + my @dbg; + open (CONTROL, $this->get_sourcepath('debian/control')) || + error("cannot read debian/control: $!\n"); + foreach my $builddeps (join('', <CONTROL>) =~ + /^Build-Depends[^:]*:.*\n(?:^[^\w\n].*\n)*/gmi) { + foreach ($builddeps =~ /(python[^, ]*-dbg)/g) { + push @dbg, $1; + } + } + + close CONTROL; + return @dbg; + +} + sub setup_py { my $this=shift; my $act=shift; @@ -86,16 +111,31 @@ sub setup_py { # We need to to run setup.py with the default python first # as distutils/setuptools modifies the shebang lines of scripts. # This ensures that #!/usr/bin/python is used 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+$//; - foreach my $python ("python", grep(!/^$python_default/, - (split ' ', `pyversions -r 2>/dev/null`))) { + # 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`; + if (grep /^$python_default/, @python_requested) { + @python_requested = ("python", grep(!/^$python_default/, + @python_requested)); + } + my @dbg_build_needed = $this->dbg_build_needed(); + + foreach my $python (@python_requested) { if (-x "/usr/bin/".$python) { $this->doit_in_sourcedir($python, "setup.py", $act, @_); } + $python = $python . "-dbg"; + if ((grep /^(python-all-dbg|$python)/, @dbg_build_needed) + or (($python eq "python-dbg") + and (grep /^$python_default/, @dbg_build_needed))){ + $this->doit_in_sourcedir($python, "setup.py", $act, @_); + } } } |