class Autobuild::Python

Handler class to build python-based packages

Attributes

buildflags[RW]
installflags[RW]

Public Class Methods

new(options) click to toggle source
Calls superclass method Autobuild::Configurable::new
# File lib/autobuild/packages/python.rb, line 18
def initialize(options)
    @buildflags = []
    @installflags = []
    super
end

Public Instance Methods

build() click to toggle source

Do the build in builddir

# File lib/autobuild/packages/python.rb, line 65
def build
    return unless install_mode?

    command = generate_build_command
    command << '--force' if @forced
    progress_start 'building %s [progress not available]',
                   done_message: 'built %s' do
        run 'build', *command, working_directory: srcdir
    end
    Autobuild.touch_stamp(buildstamp)
end
configurestamp() click to toggle source
# File lib/autobuild/packages/python.rb, line 14
def configurestamp
    "#{builddir}/configure-autobuild-stamp"
end
generate_build_command() click to toggle source
# File lib/autobuild/packages/python.rb, line 34
def generate_build_command
    command = ['python', 'setup.py', 'build']
    command << "--build-base=#{builddir}"
    command += buildflags.flatten
    command
end
generate_install_command() click to toggle source
# File lib/autobuild/packages/python.rb, line 41
def generate_install_command
    command = generate_build_command
    command << 'install'
    command << "--prefix=#{prefix}"
    command += installflags.flatten
    command
end
install() click to toggle source

Install the result in prefix

Calls superclass method
# File lib/autobuild/packages/python.rb, line 78
def install
    return unless install_mode?

    command = generate_install_command
    command << '--force' if @forced
    progress_start 'installing %s',
                   done_message: 'installed %s' do
        run 'install', *command, working_directory: srcdir
    end
    super
end
install_mode?() click to toggle source
# File lib/autobuild/packages/python.rb, line 24
def install_mode?
    File.file?(File.join(srcdir, 'setup.py'))
end
prepare_for_forced_build() click to toggle source
# File lib/autobuild/packages/python.rb, line 28
def prepare_for_forced_build
    super
    FileUtils.rm_f configurestamp
    @forced = true
end
python_path() click to toggle source
# File lib/autobuild/packages/python.rb, line 49
def python_path
    begin
        _, output, _, ret = Open3.popen3({ 'PYTHONUSERBASE' => prefix },
                                         'python -m site --user-site')
    rescue Exception => e
        raise "Unable to set PYTHONPATH: #{e.message}"
    end

    if ret.value.success?
        output.read.chomp
    else
        raise 'Unable to set PYTHONPATH: user site directory disabled?'
    end
end
update_environment() click to toggle source
Calls superclass method
# File lib/autobuild/packages/python.rb, line 90
def update_environment
    super
    path = install_mode? ? python_path : srcdir
    env_add_path 'PYTHONPATH', path
end