Class: Sprinkle::Installers::Source

Inherits:
Installer show all
Defined in:
lib/sprinkle/installers/source.rb

Overview

Source Package Installer

The source package installer installs software from source. It handles downloading, extracting, configuring, building, and installing software.

Configuration Options

The source installer has many configuration options:

  • prefix - The prefix directory that is configured to.

  • archives - The location all the files are downloaded to.

  • builds - The directory the package is extracted to to configure and install

Pre/Post Hooks

The source installer defines a myriad of new stages which can be hooked into:

  • prepare - Prepare is the stage which all the prefix, archives, and build directories are made.

  • download - Download is the stage which the software package is downloaded.

  • extract - Extract is the stage which the software package is extracted.

  • configure - Configure is the stage which the ./configure script is run.

  • build - Build is the stage in which `make` is called.

  • install - Install is the stage which `make install` is called.

Example Usage

First, a simple package, no configuration:

package :magic_beans do
  source 'http://magicbeansland.com/latest-1.1.1.tar.gz'
end

Second, specifying exactly where I want my files:

package :magic_beans do
  source 'http://magicbeansland.com/latest-1.1.1.tar.gz' do
    prefix    '/usr/local'
    archives  '/tmp'
    builds    '/tmp/builds'
  end
end

Third, specifying some hooks:

package :magic_beans do
  source 'http://magicbeansland.com/latest-1.1.1.tar.gz' do
    prefix    '/usr/local'

    pre :prepare { 'echo "Here we go folks."' }
    post :extract { 'echo "I believe..."' }
    pre :build { 'echo "Cross your fingers!"' }
  end
end

Fourth, specifying a custom archive name because the downloaded file name differs from the source URL:

package :gitosis do
  source 'http://github.com/crafterm/sprinkle/tarball/master' do
    custom_archive 'crafterm-sprinkle-518e33c835986c03ec7ae8ea88c657443b006f28.tar.gz'
  end
end

Fifth, specifying a custom directory where the archive actually is extracted to:

package :ruby_build do
  source 'https://github.com/sstephenson/ruby-build/archive/v20130227.tar.gz' do
    custom_dir 'ruby-build-20130227'
    custom_install './install.sh'
  end
end

Sixth, specifying custom configure, build, and install commands:

package :mysql_build do
  source 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz/from/http://cdn.mysql.com/' do
    custom_archive 'mysql-5.5.25a.tar.gz'
    configure_command 'cmake .'
    build_command 'make'             # This is actually the default command but could be set to something else here.
    install_command 'make install'   # This is actually the default command but could be set to something else here.
  end
end

As you can see, setting options is as simple as creating a block and calling the option as a method with the value as its parameter.

Instance Attribute Summary collapse

Attributes inherited from Installer

#delivery, #options, #package, #post, #pre

Instance Method Summary collapse

Methods inherited from Installer

#announce, api, #commands_from_block, #defer, #escape_shell_arg, inherited, #method_missing, #per_host?, #post_process, #process, subclasses, verify_api

Methods included from Sudo

#sudo?, #sudo_cmd, #sudo_stack

Methods included from Attributes

#defaults, #set_defaults

Constructor Details

#initialize(parent, source, options = {}, &block) ⇒ Source

:nodoc:


99
100
101
102
# File 'lib/sprinkle/installers/source.rb', line 99

def initialize(parent, source, options = {}, &block) #:nodoc:
  super parent, options, &block
  @source = source
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Sprinkle::Installers::Installer

Instance Attribute Details

#sourceObject

:nodoc:


90
91
92
# File 'lib/sprinkle/installers/source.rb', line 90

def source
  @source
end

Instance Method Details

#install_sequenceObject

:nodoc:


108
109
110
# File 'lib/sprinkle/installers/source.rb', line 108

def install_sequence #:nodoc:
  prepare + download + extract + configure + build + install
end