From eec6717067c008cc0baf6c75b241e81651ee0ccb Mon Sep 17 00:00:00 2001 From: Bernd Zeimetz Date: Sun, 19 Jul 2009 13:51:50 +0200 Subject: Build Python dbg extensions automatically. Python dbg interpreters are only called if the package build-depends on them. --- Debian/Debhelper/Buildsystem/python_distutils.pm | 35 ++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'Debian/Debhelper/Buildsystem/python_distutils.pm') diff --git a/Debian/Debhelper/Buildsystem/python_distutils.pm b/Debian/Debhelper/Buildsystem/python_distutils.pm index a54b6483..63bc8716 100644 --- a/Debian/Debhelper/Buildsystem/python_distutils.pm +++ b/Debian/Debhelper/Buildsystem/python_distutils.pm @@ -79,21 +79,52 @@ sub pre_building_step { $this->SUPER::pre_building_step($step); } +sub dbg_build_needed { + my $this=shift; + my $act=shift; + + my @dbg; + open (CONTROL, $this->get_sourcepath('debian/control')) || + error("cannot read debian/control: $!\n"); + foreach my $builddeps (join('', ) =~ /^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; + my $python_default = `pyversions -d`; $python_default =~ s/^\s+//; $python_default =~ s/\s+$//; + my $python_requested = split ' ', `pyversions -r 2>/dev/null`; + my @dbg_build_needed = $this->dbg_build_needed(); # 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 - $this->doit_in_sourcedir("python", "setup.py", $act, @_); - for my $python (grep(!/^$python_default/, (split ' ', `pyversions -r 2>/dev/null`))) { + if (grep /^$python_default/, $python_requested) { + $this->doit_in_sourcedir("python", "setup.py", $act, @_); + } + if (grep /^(python-all-dbg|python-dbg)/, $dbg_build_needed) { + $this->doit_in_sourcedir("python-dbg", "setup.py", $act, @_); + } + for my $python (grep !/^$python_default/, $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) { + $this->doit_in_sourcedir($python, "setup.py", $act, @_); + } + } } -- cgit v1.2.3 From 47687d38521549809ebcc85396142270fa1f21d3 Mon Sep 17 00:00:00 2001 From: Bernd Zeimetz Date: Sun, 19 Jul 2009 15:24:40 +0200 Subject: Check the various build-deps for python-dbg. The default dbg interpreter can be installed by various build-deps, check them all. --- Debian/Debhelper/Buildsystem/python_distutils.pm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'Debian/Debhelper/Buildsystem/python_distutils.pm') diff --git a/Debian/Debhelper/Buildsystem/python_distutils.pm b/Debian/Debhelper/Buildsystem/python_distutils.pm index c29a9529..9274a7d1 100644 --- a/Debian/Debhelper/Buildsystem/python_distutils.pm +++ b/Debian/Debhelper/Buildsystem/python_distutils.pm @@ -83,6 +83,12 @@ 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"); @@ -116,7 +122,7 @@ sub setup_py { my @python_requested = split ' ', `pyversions -r 2>/dev/null`; if (grep /^$python_default/, @python_requested) { @python_requested = ("python", grep(!/^$python_default/, - @python_requested); + @python_requested)); } my @dbg_build_needed = $this->dbg_build_needed(); @@ -125,10 +131,11 @@ sub setup_py { $this->doit_in_sourcedir($python, "setup.py", $act, @_); } $python = $python . "-dbg"; - if (grep /^(python-all-dbg|$python)/, @dbg_build_needed) { + 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, @_); } - } } -- cgit v1.2.3