Class: Sprinkle::Installers::Source
- 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
-
#source ⇒ Object
:nodoc:.
Attributes inherited from Installer
#delivery, #options, #package, #post, #pre
Instance Method Summary collapse
-
#initialize(parent, source, options = {}, &block) ⇒ Source
constructor
:nodoc:.
-
#install_sequence ⇒ Object
:nodoc:.
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
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, = {}, &block) #:nodoc: super parent, , &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
#source ⇒ Object
:nodoc:
90 91 92 |
# File 'lib/sprinkle/installers/source.rb', line 90 def source @source end |
Instance Method Details
#install_sequence ⇒ Object
:nodoc:
108 109 110 |
# File 'lib/sprinkle/installers/source.rb', line 108 def install_sequence #:nodoc: prepare + download + extract + configure + build + install end |