return unless grep /$step/, qw(build install clean);
- # --build-base can only be passed to the build command. However,
- # it is always read from the config file (really weird design).
- # Therefore create such a cfg config file.
- # See http://bugs.python.org/issue818201
- # http://bugs.python.org/issue1011113
if ($this->get_buildpath() ne $this->DEFAULT_BUILD_DIRECTORY()) {
+ # --build-base can only be passed to the build command. However,
+ # it is always read from the config file (really weird design).
+ # Therefore create such a cfg config file.
+ # See http://bugs.python.org/issue818201
+ # http://bugs.python.org/issue1011113
not $this->not_our_cfg() or
error("cannot set custom build directory: .pydistutils.cfg is in use");
$this->mkdir_builddir();
sub setup_py {
my $this=shift;
my $act=shift;
- $this->doit_in_sourcedir("python", "setup.py", $act, @_);
+
+ # 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
+ # 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`))) {
+ if (-x "/usr/bin/".$python) {
+ $this->doit_in_sourcedir($python, "setup.py", $act, @_);
+ }
+ }
}
sub build {