diff --git a/files/brews/bison26.rb b/files/brews/bison26.rb new file mode 100644 index 0000000..692a2f8 --- /dev/null +++ b/files/brews/bison26.rb @@ -0,0 +1,18 @@ +require 'formula' + +class Bisonphp26 < Formula + homepage 'http://www.gnu.org/software/bison/' + url 'http://ftpmirror.gnu.org/bison/bison-2.6.5.tar.gz' + mirror 'http://ftp.gnu.org/gnu/bison/bison-2.6.5.tar.gz' + sha1 '2cea0ea4a41dcfc05332613060026de0af1458cc' + + version '2.6.5-boxen1' + + keg_only :provided_by_osx, 'Some formulae require a newer version of bison.' + + def install + system "./configure", "--disable-dependency-tracking", + "--prefix=#{prefix}" + system "make install" + end +end \ No newline at end of file diff --git a/lib/puppet/provider/php_version/php_source.rb b/lib/puppet/provider/php_version/php_source.rb index f7c904f..8dfccf6 100644 --- a/lib/puppet/provider/php_version/php_source.rb +++ b/lib/puppet/provider/php_version/php_source.rb @@ -164,8 +164,17 @@ def configure(version) args = args.join(" ") # Right, the hard part - configure for our system - puts "Configuring PHP #{version}: #{args}" - puts %x( cd #{@resource[:phpenv_root]}/php-src/ && export ac_cv_exeext='' && ./configure #{args} ) + + # Some env variables are needed for configuration + env = "export ac_cv_exeext=''" + + # PHP 5.5+ requires a later version of Bison than OSX provides (2.6 vs 2.3) + env << " && export PATH=/opt/boxen/homebrew/opt/bisonphp26/bin:$PATH" unless @resource[:version].match(/\A5\.[34]/) + + # Construct and run configure command + configure_command = "cd #{@resource[:phpenv_root]}/php-src/ && #{env} && ./configure #{args}" + puts "Configuring PHP #{version}: #{configure_command}" + puts %x( #{configure_command} ) exit_code = $? # Ensure Configure exited successfully diff --git a/manifests/5_5.pp b/manifests/5_5.pp new file mode 100644 index 0000000..db4440e --- /dev/null +++ b/manifests/5_5.pp @@ -0,0 +1,15 @@ +# Installs php 5.5.0 and symlinks it as 5.5 +# +# Usage: +# +# include php::5-5 +class php::5_5 { + require php + require php::5_5_0 + + file { "${php::config::root}/versions/5.5": + ensure => symlink, + force => true, + target => "${php::root}/versions/5.5.0" + } +} diff --git a/manifests/5_5_0.pp b/manifests/5_5_0.pp new file mode 100644 index 0000000..00dbf66 --- /dev/null +++ b/manifests/5_5_0.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.0 +# +# Usage: +# +# include php::5_5_0 +class php::5_5_0 { + php::version { '5.5.0': } +} diff --git a/manifests/5_5_1.pp b/manifests/5_5_1.pp new file mode 100644 index 0000000..7174e6a --- /dev/null +++ b/manifests/5_5_1.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.1 +# +# Usage: +# +# include php::5_5_1 +class php::5_5_1 { + php::version { '5.5.1': } +} diff --git a/manifests/5_5_10.pp b/manifests/5_5_10.pp new file mode 100644 index 0000000..ddfa44d --- /dev/null +++ b/manifests/5_5_10.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.10 +# +# Usage: +# +# include php::5_5_10 +class php::5_5_10 { + php::version { '5.5.10': } +} diff --git a/manifests/5_5_2.pp b/manifests/5_5_2.pp new file mode 100644 index 0000000..c960f29 --- /dev/null +++ b/manifests/5_5_2.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.2 +# +# Usage: +# +# include php::5_5_2 +class php::5_5_2 { + php::version { '5.5.2': } +} diff --git a/manifests/5_5_3.pp b/manifests/5_5_3.pp new file mode 100644 index 0000000..8cde17c --- /dev/null +++ b/manifests/5_5_3.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.3 +# +# Usage: +# +# include php::5_5_3 +class php::5_5_3 { + php::version { '5.5.3': } +} diff --git a/manifests/5_5_4.pp b/manifests/5_5_4.pp new file mode 100644 index 0000000..8b96952 --- /dev/null +++ b/manifests/5_5_4.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.4 +# +# Usage: +# +# include php::5_5_4 +class php::5_5_4 { + php::version { '5.5.4': } +} diff --git a/manifests/5_5_5.pp b/manifests/5_5_5.pp new file mode 100644 index 0000000..b36da82 --- /dev/null +++ b/manifests/5_5_5.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.5 +# +# Usage: +# +# include php::5_5_5 +class php::5_5_5 { + php::version { '5.5.5': } +} diff --git a/manifests/5_5_6.pp b/manifests/5_5_6.pp new file mode 100644 index 0000000..8696454 --- /dev/null +++ b/manifests/5_5_6.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.6 +# +# Usage: +# +# include php::5_5_6 +class php::5_5_6 { + php::version { '5.5.6': } +} diff --git a/manifests/5_5_7.pp b/manifests/5_5_7.pp new file mode 100644 index 0000000..a5b1d78 --- /dev/null +++ b/manifests/5_5_7.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.7 +# +# Usage: +# +# include php::5_5_7 +class php::5_5_7 { + php::version { '5.5.7': } +} diff --git a/manifests/5_5_8.pp b/manifests/5_5_8.pp new file mode 100644 index 0000000..88da5bb --- /dev/null +++ b/manifests/5_5_8.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.8 +# +# Usage: +# +# include php::5_5_8 +class php::5_5_8 { + php::version { '5.5.8': } +} diff --git a/manifests/5_5_9.pp b/manifests/5_5_9.pp new file mode 100644 index 0000000..9f4bd4e --- /dev/null +++ b/manifests/5_5_9.pp @@ -0,0 +1,8 @@ +# Installs php 5.5.9 +# +# Usage: +# +# include php::5_5_9 +class php::5_5_9 { + php::version { '5.5.9': } +} diff --git a/manifests/fpm/5_5_0.pp b/manifests/fpm/5_5_0.pp new file mode 100644 index 0000000..77d4ad9 --- /dev/null +++ b/manifests/fpm/5_5_0.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.0 +# Installs PHP 5.5.0 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_0 +# +class php::fpm::5_5_0 { + php::fpm { '5.5.0': } +} diff --git a/manifests/fpm/5_5_1.pp b/manifests/fpm/5_5_1.pp new file mode 100644 index 0000000..0a59519 --- /dev/null +++ b/manifests/fpm/5_5_1.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.1 +# Installs PHP 5.5.1 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_1 +# +class php::fpm::5_5_1 { + php::fpm { '5.5.1': } +} diff --git a/manifests/fpm/5_5_10.pp b/manifests/fpm/5_5_10.pp new file mode 100644 index 0000000..fad7525 --- /dev/null +++ b/manifests/fpm/5_5_10.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.10 +# Installs PHP 5.5.10 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_10 +# +class php::fpm::5_5_10 { + php::fpm { '5.5.10': } +} diff --git a/manifests/fpm/5_5_2.pp b/manifests/fpm/5_5_2.pp new file mode 100644 index 0000000..b10e0b2 --- /dev/null +++ b/manifests/fpm/5_5_2.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.2 +# Installs PHP 5.5.2 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_2 +# +class php::fpm::5_5_2 { + php::fpm { '5.5.2': } +} diff --git a/manifests/fpm/5_5_3.pp b/manifests/fpm/5_5_3.pp new file mode 100644 index 0000000..2bac8ce --- /dev/null +++ b/manifests/fpm/5_5_3.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.3 +# Installs PHP 5.5.3 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_3 +# +class php::fpm::5_5_3 { + php::fpm { '5.5.3': } +} diff --git a/manifests/fpm/5_5_4.pp b/manifests/fpm/5_5_4.pp new file mode 100644 index 0000000..c17f52a --- /dev/null +++ b/manifests/fpm/5_5_4.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.4 +# Installs PHP 5.5.4 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_4 +# +class php::fpm::5_5_4 { + php::fpm { '5.5.4': } +} diff --git a/manifests/fpm/5_5_5.pp b/manifests/fpm/5_5_5.pp new file mode 100644 index 0000000..e118b77 --- /dev/null +++ b/manifests/fpm/5_5_5.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.5 +# Installs PHP 5.5.5 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_5 +# +class php::fpm::5_5_5 { + php::fpm { '5.5.5': } +} diff --git a/manifests/fpm/5_5_6.pp b/manifests/fpm/5_5_6.pp new file mode 100644 index 0000000..c58859b --- /dev/null +++ b/manifests/fpm/5_5_6.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.6 +# Installs PHP 5.5.6 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_6 +# +class php::fpm::5_5_6 { + php::fpm { '5.5.6': } +} diff --git a/manifests/fpm/5_5_7.pp b/manifests/fpm/5_5_7.pp new file mode 100644 index 0000000..bfbd7d0 --- /dev/null +++ b/manifests/fpm/5_5_7.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.7 +# Installs PHP 5.5.7 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_7 +# +class php::fpm::5_5_7 { + php::fpm { '5.5.7': } +} diff --git a/manifests/fpm/5_5_8.pp b/manifests/fpm/5_5_8.pp new file mode 100644 index 0000000..6581553 --- /dev/null +++ b/manifests/fpm/5_5_8.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.8 +# Installs PHP 5.5.8 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_8 +# +class php::fpm::5_5_8 { + php::fpm { '5.5.8': } +} diff --git a/manifests/fpm/5_5_9.pp b/manifests/fpm/5_5_9.pp new file mode 100644 index 0000000..3955c84 --- /dev/null +++ b/manifests/fpm/5_5_9.pp @@ -0,0 +1,10 @@ +# Launches a PHP FPM service running PHP 5.5.9 +# Installs PHP 5.5.9 if it doesn't already exist +# +# Usage: +# +# include php::fpm::5_5_9 +# +class php::fpm::5_5_9 { + php::fpm { '5.5.9': } +} diff --git a/manifests/init.pp b/manifests/init.pp index e3931c4..4c26730 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -85,6 +85,18 @@ ensure => '2.13-boxen1', } + # PHP 5.5 drops support for Bison 2.3 which is shipped with OSX + # Therefore need a later version, which we'll again sandbox just for this + + homebrew::formula { 'bisonphp26': + source => 'puppet:///modules/php/brews/bison26.rb', + before => Package['boxen/brews/bisonphp26'], + } + + package { 'boxen/brews/bisonphp26': + ensure => '2.6.5-boxen1', + } + # Install dupe version of zlib as tapping homebrew dupes appears to have # broken. I've also tried to build a specific zlib module, but this also # will not currently install via brew within boxen diff --git a/spec/classes/fpm/php_fpm_5_5_0_spec.rb b/spec/classes/fpm/php_fpm_5_5_0_spec.rb new file mode 100644 index 0000000..f2b2164 --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_0_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_0" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.0") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_10_spec.rb b/spec/classes/fpm/php_fpm_5_5_10_spec.rb new file mode 100644 index 0000000..e1505da --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_10_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_10" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.10") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_1_spec.rb b/spec/classes/fpm/php_fpm_5_5_1_spec.rb new file mode 100644 index 0000000..8034a1a --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_1_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_1" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.1") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_2_spec.rb b/spec/classes/fpm/php_fpm_5_5_2_spec.rb new file mode 100644 index 0000000..f346c7b --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_2_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_2" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.2") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_3_spec.rb b/spec/classes/fpm/php_fpm_5_5_3_spec.rb new file mode 100644 index 0000000..8027cdf --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_3_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_3" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.3") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_4_spec.rb b/spec/classes/fpm/php_fpm_5_5_4_spec.rb new file mode 100644 index 0000000..f34590b --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_4_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_4" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.4") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_5_spec.rb b/spec/classes/fpm/php_fpm_5_5_5_spec.rb new file mode 100644 index 0000000..b3bd13a --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_5_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_5" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.5") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_6_spec.rb b/spec/classes/fpm/php_fpm_5_5_6_spec.rb new file mode 100644 index 0000000..5f63323 --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_6_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_6" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.6") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_7_spec.rb b/spec/classes/fpm/php_fpm_5_5_7_spec.rb new file mode 100644 index 0000000..afbbd12 --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_7_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_7" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.7") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_8_spec.rb b/spec/classes/fpm/php_fpm_5_5_8_spec.rb new file mode 100644 index 0000000..a182da2 --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_8_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_8" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.8") + end +end diff --git a/spec/classes/fpm/php_fpm_5_5_9_spec.rb b/spec/classes/fpm/php_fpm_5_5_9_spec.rb new file mode 100644 index 0000000..f0c5385 --- /dev/null +++ b/spec/classes/fpm/php_fpm_5_5_9_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::fpm::5_5_9" do + let(:facts) { default_test_facts } + + it do + should contain_php__fpm("5.5.9") + end +end diff --git a/spec/classes/php_5_5_0_spec.rb b/spec/classes/php_5_5_0_spec.rb new file mode 100644 index 0000000..12976d5 --- /dev/null +++ b/spec/classes/php_5_5_0_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_0" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.0") + end +end diff --git a/spec/classes/php_5_5_10_spec.rb b/spec/classes/php_5_5_10_spec.rb new file mode 100644 index 0000000..0b94c07 --- /dev/null +++ b/spec/classes/php_5_5_10_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_10" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.10") + end +end diff --git a/spec/classes/php_5_5_1_spec.rb b/spec/classes/php_5_5_1_spec.rb new file mode 100644 index 0000000..7a21137 --- /dev/null +++ b/spec/classes/php_5_5_1_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_1" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.1") + end +end diff --git a/spec/classes/php_5_5_2_spec.rb b/spec/classes/php_5_5_2_spec.rb new file mode 100644 index 0000000..ee2e333 --- /dev/null +++ b/spec/classes/php_5_5_2_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_2" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.2") + end +end diff --git a/spec/classes/php_5_5_3_spec.rb b/spec/classes/php_5_5_3_spec.rb new file mode 100644 index 0000000..82460fb --- /dev/null +++ b/spec/classes/php_5_5_3_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_3" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.3") + end +end diff --git a/spec/classes/php_5_5_4_spec.rb b/spec/classes/php_5_5_4_spec.rb new file mode 100644 index 0000000..6d564b3 --- /dev/null +++ b/spec/classes/php_5_5_4_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_4" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.4") + end +end diff --git a/spec/classes/php_5_5_5_spec.rb b/spec/classes/php_5_5_5_spec.rb new file mode 100644 index 0000000..e86061b --- /dev/null +++ b/spec/classes/php_5_5_5_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_5" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.5") + end +end diff --git a/spec/classes/php_5_5_6_spec.rb b/spec/classes/php_5_5_6_spec.rb new file mode 100644 index 0000000..e54a395 --- /dev/null +++ b/spec/classes/php_5_5_6_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_6" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.6") + end +end diff --git a/spec/classes/php_5_5_7_spec.rb b/spec/classes/php_5_5_7_spec.rb new file mode 100644 index 0000000..ca1d55c --- /dev/null +++ b/spec/classes/php_5_5_7_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_7" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.7") + end +end diff --git a/spec/classes/php_5_5_8_spec.rb b/spec/classes/php_5_5_8_spec.rb new file mode 100644 index 0000000..6bf9657 --- /dev/null +++ b/spec/classes/php_5_5_8_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_8" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.8") + end +end diff --git a/spec/classes/php_5_5_9_spec.rb b/spec/classes/php_5_5_9_spec.rb new file mode 100644 index 0000000..4dde25f --- /dev/null +++ b/spec/classes/php_5_5_9_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe "php::5_5_9" do + let(:facts) { default_test_facts } + + it do + should contain_php__version("5.5.9") + end +end diff --git a/spec/classes/php_spec.rb b/spec/classes/php_spec.rb index b99ec6e..2845b4c 100644 --- a/spec/classes/php_spec.rb +++ b/spec/classes/php_spec.rb @@ -91,6 +91,15 @@ :ensure => "1.2.8-boxen1" }) + should contain_homebrew__formula("bisonphp26").with({ + :source => "puppet:///modules/php/brews/bison26.rb", + :before => "Package[boxen/brews/bisonphp26]" + }) + + should contain_package("boxen/brews/bisonphp26").with({ + :ensure => "2.6.5-boxen1" + }) + should contain_exec("phpenv-setup-root-repo").with({ :command => "git init . && git remote add origin https://github.com/phpenv/phpenv.git && git fetch -q origin && git reset --hard #{phpenv_version}", :cwd => "/test/boxen/phpenv",