sub DEFAULT_BUILD_DIRECTORY {
my $this=shift;
- return $this->_canonpath($this->get_sourcepath("build"));
+ return $this->canonpath($this->get_sourcepath("build"));
}
sub new {
my $class=shift;
my $this=$class->SUPER::new(@_);
# Out of source tree building is prefered.
- $this->enforce_out_of_source_building(@_);
+ $this->prefer_out_of_source_building(@_);
return $this;
}
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.
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();
# Distutils reads $HOME/.pydistutils.cfg
$ENV{HOME} = Cwd::abs_path($this->get_buildpath());
}
+
+ $this->SUPER::pre_building_step($step);
}
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 {