vault-tree 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +26 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +43 -0
- data/LICENSE.txt +22 -0
- data/README.md +118 -0
- data/Rakefile +17 -0
- data/VagrantFile +30 -0
- data/features/core.feature +44 -0
- data/features/exceptions.feature +41 -0
- data/features/steps/core.steps.rb +168 -0
- data/features/steps/exceptions.steps.rb +103 -0
- data/features/support/env.rb +1 -0
- data/features/world.rb +3 -0
- data/lib/vault-tree.rb +7 -0
- data/lib/vault-tree/config/dependencies.rb +4 -0
- data/lib/vault-tree/config/lib.rb +2 -0
- data/lib/vault-tree/config/path_helpers.rb +49 -0
- data/lib/vault-tree/config/string.rb +25 -0
- data/lib/vault-tree/contract/close_validator.rb +35 -0
- data/lib/vault-tree/contract/contract.rb +85 -0
- data/lib/vault-tree/contract/contract_presenter.rb +27 -0
- data/lib/vault-tree/contract/doorman.rb +112 -0
- data/lib/vault-tree/contract/null_vault.rb +16 -0
- data/lib/vault-tree/contract/open_validator.rb +20 -0
- data/lib/vault-tree/contract/vault.rb +96 -0
- data/lib/vault-tree/exceptions/empty_vault.rb +8 -0
- data/lib/vault-tree/exceptions/fill_attempt_master_password.rb +6 -0
- data/lib/vault-tree/exceptions/invalid_signature.rb +0 -0
- data/lib/vault-tree/exceptions/malformed_json.rb +0 -0
- data/lib/vault-tree/exceptions/missing_external_data.rb +6 -0
- data/lib/vault-tree/exceptions/missing_partner_decryption_key.rb +6 -0
- data/lib/vault-tree/exceptions/missing_passphrase.rb +6 -0
- data/lib/vault-tree/exceptions/non_unique_vault_id.rb +0 -0
- data/lib/vault-tree/exceptions/unsupported_keyword.rb +6 -0
- data/lib/vault-tree/exceptions/vault_does_not_exist.rb +6 -0
- data/lib/vault-tree/exceptions/vault_tree_exception.rb +6 -0
- data/lib/vault-tree/keywords/decryption_key.rb +14 -0
- data/lib/vault-tree/keywords/external_data.rb +13 -0
- data/lib/vault-tree/keywords/keyword.rb +19 -0
- data/lib/vault-tree/keywords/keyword_interpreter.rb +45 -0
- data/lib/vault-tree/keywords/master_passphrase.rb +9 -0
- data/lib/vault-tree/keywords/public_encryption_key.rb +27 -0
- data/lib/vault-tree/keywords/random_number.rb +9 -0
- data/lib/vault-tree/keywords/shared_key.rb +24 -0
- data/lib/vault-tree/keywords/unlocked.rb +9 -0
- data/lib/vault-tree/keywords/vault_contents.rb +13 -0
- data/lib/vault-tree/lock_smith/asymmetric_cipher.rb +31 -0
- data/lib/vault-tree/lock_smith/crypto_hash.rb +11 -0
- data/lib/vault-tree/lock_smith/digital_signature.rb +32 -0
- data/lib/vault-tree/lock_smith/encryption_key_pair.rb +25 -0
- data/lib/vault-tree/lock_smith/null_vault.rb +4 -0
- data/lib/vault-tree/lock_smith/random_number.rb +11 -0
- data/lib/vault-tree/lock_smith/shared_key_pair.rb +12 -0
- data/lib/vault-tree/lock_smith/signing_key_pair.rb +25 -0
- data/lib/vault-tree/lock_smith/symmetric_cipher.rb +25 -0
- data/lib/vault-tree/util/json.rb +16 -0
- data/lib/vault-tree/version.rb +3 -0
- data/spec/app/locksmith/asymmetric_cipher_spec.rb +25 -0
- data/spec/app/locksmith/signing_key_pair_spec.rb +22 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/fixtures/blank_simple_test_contract.json +14 -0
- data/spec/support/fixtures/broken_contract.json +55 -0
- data/spec/support/fixtures/one_two_three-0.5.0.EXP.json +105 -0
- data/spec/support/fixtures/reference_contract.1.0.0.json +227 -0
- data/spec/support/fixtures/simple_test_contract.json +14 -0
- data/support/cookbooks/ark/.gitignore +12 -0
- data/support/cookbooks/ark/.kitchen.yml +34 -0
- data/support/cookbooks/ark/.travis.yml +6 -0
- data/support/cookbooks/ark/Berksfile +9 -0
- data/support/cookbooks/ark/CHANGELOG.md +87 -0
- data/support/cookbooks/ark/CONTRIBUTING.md +257 -0
- data/support/cookbooks/ark/README.md +301 -0
- data/support/cookbooks/ark/Rakefile +36 -0
- data/support/cookbooks/ark/TESTING.md +25 -0
- data/support/cookbooks/ark/Toftfile +15 -0
- data/support/cookbooks/ark/attributes/default.rb +6 -0
- data/support/cookbooks/ark/chefignore +96 -0
- data/support/cookbooks/ark/files/default/foo.tar.gz +0 -0
- data/support/cookbooks/ark/files/default/foo.tbz +0 -0
- data/support/cookbooks/ark/files/default/foo.tgz +0 -0
- data/support/cookbooks/ark/files/default/foo.zip +0 -0
- data/support/cookbooks/ark/files/default/tests/minitest/default_test.rb +0 -0
- data/support/cookbooks/ark/files/default/tests/minitest/support/helpers.rb +0 -0
- data/support/cookbooks/ark/files/default/tests/minitest/test_test.rb +94 -0
- data/support/cookbooks/ark/libraries/default.rb +167 -0
- data/support/cookbooks/ark/metadata.rb +13 -0
- data/support/cookbooks/ark/providers/default.rb +370 -0
- data/support/cookbooks/ark/recipes/default.rb +31 -0
- data/support/cookbooks/ark/recipes/test.rb +138 -0
- data/support/cookbooks/ark/resources/default.rb +54 -0
- data/support/cookbooks/ark/templates/default/add_to_path.sh.erb +1 -0
- data/support/cookbooks/ark/test/support/Gemfile +4 -0
- data/support/cookbooks/build-essential/README.md +24 -0
- data/support/cookbooks/build-essential/metadata.rb +10 -0
- data/support/cookbooks/build-essential/recipes/default.rb +45 -0
- data/support/cookbooks/chruby/.gitignore +15 -0
- data/support/cookbooks/chruby/.kitchen.yml +26 -0
- data/support/cookbooks/chruby/.ruby_version +1 -0
- data/support/cookbooks/chruby/Berksfile +3 -0
- data/support/cookbooks/chruby/Gemfile +7 -0
- data/support/cookbooks/chruby/LICENSE +14 -0
- data/support/cookbooks/chruby/README.md +92 -0
- data/support/cookbooks/chruby/Rakefile +7 -0
- data/support/cookbooks/chruby/Thorfile +6 -0
- data/support/cookbooks/chruby/Vagrantfile +86 -0
- data/support/cookbooks/chruby/attributes/default.rb +10 -0
- data/support/cookbooks/chruby/chefignore +96 -0
- data/support/cookbooks/chruby/metadata.rb +11 -0
- data/support/cookbooks/chruby/recipes/default.rb +43 -0
- data/support/cookbooks/chruby/recipes/system.rb +25 -0
- data/support/cookbooks/chruby/templates/default/chruby.sh.erb +22 -0
- data/support/cookbooks/chruby/test/integration/default/bash/embedded_test.sh +1 -0
- data/support/cookbooks/git/.gitignore +14 -0
- data/support/cookbooks/git/.kitchen.yml +46 -0
- data/support/cookbooks/git/Berksfile +8 -0
- data/support/cookbooks/git/CHANGELOG.md +87 -0
- data/support/cookbooks/git/CONTRIBUTING +29 -0
- data/support/cookbooks/git/Gemfile +3 -0
- data/support/cookbooks/git/LICENSE +201 -0
- data/support/cookbooks/git/README.md +115 -0
- data/support/cookbooks/git/TESTING.md +25 -0
- data/support/cookbooks/git/attributes/default.rb +40 -0
- data/support/cookbooks/git/metadata.rb +35 -0
- data/support/cookbooks/git/recipes/default.rb +53 -0
- data/support/cookbooks/git/recipes/server.rb +58 -0
- data/support/cookbooks/git/recipes/source.rb +49 -0
- data/support/cookbooks/git/recipes/windows.rb +37 -0
- data/support/cookbooks/git/templates/default/git-xinetd.d.erb +10 -0
- data/support/cookbooks/git/templates/default/sv-git-daemon-log-run.erb +2 -0
- data/support/cookbooks/git/templates/default/sv-git-daemon-run.erb +3 -0
- data/support/cookbooks/install_ruby/README.md +3 -0
- data/support/cookbooks/install_ruby/metadata.rb +10 -0
- data/support/cookbooks/install_ruby/recipes/default.rb +14 -0
- data/support/cookbooks/ruby_build/.gitignore +6 -0
- data/support/cookbooks/ruby_build/.kitchen.yml +31 -0
- data/support/cookbooks/ruby_build/.travis.yml +4 -0
- data/support/cookbooks/ruby_build/Berksfile +10 -0
- data/support/cookbooks/ruby_build/CHANGELOG.md +72 -0
- data/support/cookbooks/ruby_build/Gemfile +14 -0
- data/support/cookbooks/ruby_build/README.md +338 -0
- data/support/cookbooks/ruby_build/Rakefile +21 -0
- data/support/cookbooks/ruby_build/attributes/default.rb +67 -0
- data/support/cookbooks/ruby_build/chefignore +53 -0
- data/support/cookbooks/ruby_build/libraries/ruby_build_recipe_helpers.rb +40 -0
- data/support/cookbooks/ruby_build/metadata.rb +18 -0
- data/support/cookbooks/ruby_build/providers/ruby.rb +88 -0
- data/support/cookbooks/ruby_build/recipes/default.rb +69 -0
- data/support/cookbooks/ruby_build/resources/ruby.rb +33 -0
- data/support/cookbooks/ruby_build/test/cookbooks/alltherubies/metadata.rb +10 -0
- data/support/cookbooks/ruby_build/test/cookbooks/alltherubies/recipes/default.rb +59 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/_verify_tests.bash +33 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_1.8.7.bats +29 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_1.9.2.bats +18 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_1.9.3.bats +18 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_2.0.0.bats +18 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_jruby.bats +20 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_rbx.bats +18 -0
- data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_ree.bats +19 -0
- data/support/cookbooks/ruby_build/test/integration/installation/bats/installation.bats +6 -0
- data/support/scripts/libsodium_ubuntu.sh +80 -0
- data/support/tasks/.gitkeep +0 -0
- data/support/tasks/libsodium_install.rb +57 -0
- data/vault-tree.gemspec +26 -0
- metadata +305 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'foodcritic'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'emeril/rake'
|
6
|
+
rescue LoadError
|
7
|
+
puts ">>>>> Emeril gem not loaded, omitting tasks" unless ENV['CI']
|
8
|
+
end
|
9
|
+
|
10
|
+
FoodCritic::Rake::LintTask.new do |t|
|
11
|
+
t.options = { :fail_tags => ['any'] }
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
require 'kitchen/rake_tasks'
|
16
|
+
Kitchen::RakeTasks.new
|
17
|
+
rescue LoadError
|
18
|
+
puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
|
19
|
+
end
|
20
|
+
|
21
|
+
task :default => [:foodcritic]
|
@@ -0,0 +1,67 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: ruby_build
|
3
|
+
# Attributes:: default
|
4
|
+
#
|
5
|
+
# Author:: Fletcher Nichol <fnichol@nichol.ca>
|
6
|
+
#
|
7
|
+
# Copyright 2011, Fletcher Nichol
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
# git repository containing the ruby-build framework
|
23
|
+
default['ruby_build']['git_url'] = "https://github.com/sstephenson/ruby-build.git"
|
24
|
+
default['ruby_build']['git_ref'] = "master"
|
25
|
+
|
26
|
+
# default base path for a system-wide installed Ruby
|
27
|
+
default['ruby_build']['default_ruby_base_path'] = "/usr/local/ruby"
|
28
|
+
|
29
|
+
# ruby-build upgrade action
|
30
|
+
default['ruby_build']['upgrade'] = "none"
|
31
|
+
|
32
|
+
case platform
|
33
|
+
when "redhat", "centos", "fedora", "amazon", "scientific"
|
34
|
+
node.set['ruby_build']['install_pkgs'] = %w{ tar bash curl }
|
35
|
+
node.set['ruby_build']['install_git_pkgs'] = %w{ git }
|
36
|
+
node.set['ruby_build']['install_pkgs_cruby'] =
|
37
|
+
%w{ gcc-c++ patch readline readline-devel zlib zlib-devel
|
38
|
+
libffi-devel openssl-devel
|
39
|
+
make bzip2 autoconf automake libtool bison
|
40
|
+
libxml2 libxml2-devel libxslt libxslt-devel
|
41
|
+
subversion autoconf }
|
42
|
+
node.set['ruby_build']['install_pkgs_jruby'] = []
|
43
|
+
|
44
|
+
when "debian", "ubuntu"
|
45
|
+
node.set['ruby_build']['install_pkgs'] = %w{ tar bash curl }
|
46
|
+
node.set['ruby_build']['install_git_pkgs'] = %w{ git-core }
|
47
|
+
node.set['ruby_build']['install_pkgs_cruby'] =
|
48
|
+
%w{ build-essential bison openssl libreadline6 libreadline6-dev
|
49
|
+
zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0
|
50
|
+
libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf
|
51
|
+
libc6-dev ssl-cert subversion }
|
52
|
+
node.set['ruby_build']['install_pkgs_jruby'] = %w{ make g++ }
|
53
|
+
|
54
|
+
when "suse"
|
55
|
+
node.set['ruby_build']['install_pkgs'] = %w{ tar bash curl }
|
56
|
+
node.set['ruby_build']['install_git_pkgs'] = %w{ git-core }
|
57
|
+
node.set['ruby_build']['install_pkgs_cruby'] =
|
58
|
+
%w{ gcc-c++ patch zlib zlib-devel libffi-devel
|
59
|
+
sqlite3-devel libxml2-devel libxslt-devel subversion autoconf }
|
60
|
+
node.set['ruby_build']['install_pkgs_jruby'] = []
|
61
|
+
|
62
|
+
when "mac_os_x"
|
63
|
+
node.set['ruby_build']['install_pkgs'] = []
|
64
|
+
node.set['ruby_build']['install_git_pkgs'] = %w{ git-core }
|
65
|
+
node.set['ruby_build']['install_pkgs_cruby'] = []
|
66
|
+
node.set['ruby_build']['install_pkgs_jruby'] = []
|
67
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Put files/directories that should be ignored in this file.
|
2
|
+
# Lines that start with '# ' are comments.
|
3
|
+
|
4
|
+
## OS
|
5
|
+
.DS_Store
|
6
|
+
Icon?
|
7
|
+
nohup.out
|
8
|
+
|
9
|
+
## EDITORS
|
10
|
+
\#*
|
11
|
+
.#*
|
12
|
+
*~
|
13
|
+
*.sw[a-z]
|
14
|
+
*.bak
|
15
|
+
REVISION
|
16
|
+
TAGS*
|
17
|
+
tmtags
|
18
|
+
*_flymake.*
|
19
|
+
*_flymake
|
20
|
+
*.tmproj
|
21
|
+
.project
|
22
|
+
.settings
|
23
|
+
mkmf.log
|
24
|
+
|
25
|
+
## COMPILED
|
26
|
+
a.out
|
27
|
+
*.o
|
28
|
+
*.pyc
|
29
|
+
*.so
|
30
|
+
|
31
|
+
## OTHER SCM
|
32
|
+
*/.bzr/*
|
33
|
+
*/.hg/*
|
34
|
+
*/.svn/*
|
35
|
+
|
36
|
+
## Don't send rspecs up in cookbook
|
37
|
+
.watchr
|
38
|
+
.rspec
|
39
|
+
spec/*
|
40
|
+
spec/fixtures/*
|
41
|
+
test/*
|
42
|
+
features/*
|
43
|
+
|
44
|
+
## SCM
|
45
|
+
.gitignore
|
46
|
+
|
47
|
+
# Berkshelf
|
48
|
+
Berksfile
|
49
|
+
Berksfile.lock
|
50
|
+
cookbooks/*
|
51
|
+
|
52
|
+
# Vagrant
|
53
|
+
.vagrant
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: ruby_build
|
3
|
+
# Library:: Chef::RubyBuild::RecipeHelpers
|
4
|
+
#
|
5
|
+
# Author:: Fletcher Nichol <fnichol@nichol.ca>
|
6
|
+
#
|
7
|
+
# Copyright 2011, Fletcher Nichol
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
class Chef
|
23
|
+
module RubyBuild
|
24
|
+
module RecipeHelpers
|
25
|
+
def build_upgrade_strategy(strategy)
|
26
|
+
if strategy.nil? || strategy == false
|
27
|
+
"none"
|
28
|
+
else
|
29
|
+
strategy
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def mac_with_no_homebrew
|
34
|
+
node['platform'] == 'mac_os_x' &&
|
35
|
+
Chef::Platform.find_provider_for_node(node, :package) !=
|
36
|
+
Chef::Provider::Package::Homebrew
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
name "ruby_build"
|
2
|
+
maintainer "Fletcher Nichol"
|
3
|
+
maintainer_email "fnichol@nichol.ca"
|
4
|
+
license "Apache 2.0"
|
5
|
+
description "Manages the ruby-build framework and its installed rubies. A LWRP is also defined."
|
6
|
+
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
|
7
|
+
version "0.8.1"
|
8
|
+
|
9
|
+
supports "ubuntu"
|
10
|
+
supports "debian"
|
11
|
+
supports "freebsd"
|
12
|
+
supports "redhat"
|
13
|
+
supports "centos"
|
14
|
+
supports "fedora"
|
15
|
+
supports "amazon"
|
16
|
+
supports "scientific"
|
17
|
+
supports "suse"
|
18
|
+
supports "mac_os_x"
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: ruby_build
|
3
|
+
# Provider:: ruby
|
4
|
+
#
|
5
|
+
# Author:: Fletcher Nichol <fnichol@nichol.ca>
|
6
|
+
#
|
7
|
+
# Copyright 2011, Fletcher Nichol
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
def load_current_resource
|
23
|
+
@rubie = new_resource.definition
|
24
|
+
@prefix_path = new_resource.prefix_path ||
|
25
|
+
"#{node['ruby_build']['default_ruby_base_path']}/#{@rubie}"
|
26
|
+
end
|
27
|
+
|
28
|
+
action :install do
|
29
|
+
perform_install
|
30
|
+
end
|
31
|
+
|
32
|
+
action :reinstall do
|
33
|
+
perform_install
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def perform_install
|
39
|
+
if ruby_installed?
|
40
|
+
Chef::Log.debug(
|
41
|
+
"ruby_build_ruby[#{@rubie}] is already installed, so skipping")
|
42
|
+
else
|
43
|
+
install_start = Time.now
|
44
|
+
|
45
|
+
install_ruby_dependencies
|
46
|
+
|
47
|
+
Chef::Log.info(
|
48
|
+
"Building ruby_build_ruby[#{@rubie}], this could take a while...")
|
49
|
+
|
50
|
+
rubie = @rubie # bypass block scoping issue
|
51
|
+
prefix_path = @prefix_path # bypass block scoping issue
|
52
|
+
execute "ruby-build[#{rubie}]" do
|
53
|
+
command %{/usr/local/bin/ruby-build "#{rubie}" "#{prefix_path}"}
|
54
|
+
user new_resource.user if new_resource.user
|
55
|
+
group new_resource.group if new_resource.group
|
56
|
+
environment new_resource.environment if new_resource.environment
|
57
|
+
|
58
|
+
action :nothing
|
59
|
+
end.run_action(:run)
|
60
|
+
|
61
|
+
Chef::Log.info("ruby_build_ruby[#{@rubie}] build time was " +
|
62
|
+
"#{(Time.now - install_start)/60.0} minutes")
|
63
|
+
new_resource.updated_by_last_action(true)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def ruby_installed?
|
68
|
+
if Array(new_resource.action).include?(:reinstall)
|
69
|
+
false
|
70
|
+
else
|
71
|
+
::File.exists?("#{@prefix_path}/bin/ruby")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def install_ruby_dependencies
|
76
|
+
case ::File.basename(new_resource.definition)
|
77
|
+
when /^\d\.\d\.\d-/, /^rbx-/, /^ree-/
|
78
|
+
pkgs = node['ruby_build']['install_pkgs_cruby']
|
79
|
+
when /^jruby-/
|
80
|
+
pkgs = node['ruby_build']['install_pkgs_jruby']
|
81
|
+
end
|
82
|
+
|
83
|
+
Array(pkgs).each do |pkg|
|
84
|
+
package pkg do
|
85
|
+
action :nothing
|
86
|
+
end.run_action(:install)
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: ruby_build
|
3
|
+
# Recipe:: default
|
4
|
+
#
|
5
|
+
# Copyright 2011, Fletcher Nichol
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
class Chef::Recipe
|
21
|
+
# mix in recipe helpers
|
22
|
+
include Chef::RubyBuild::RecipeHelpers
|
23
|
+
end
|
24
|
+
|
25
|
+
git_url = node['ruby_build']['git_url']
|
26
|
+
git_ref = node['ruby_build']['git_ref']
|
27
|
+
upgrade_strategy = build_upgrade_strategy(node['ruby_build']['upgrade'])
|
28
|
+
|
29
|
+
cache_path = Chef::Config['file_cache_path']
|
30
|
+
src_path = "#{cache_path}/ruby-build"
|
31
|
+
|
32
|
+
unless mac_with_no_homebrew
|
33
|
+
Array(node['ruby_build']['install_pkgs']).each do |pkg|
|
34
|
+
package pkg
|
35
|
+
end
|
36
|
+
|
37
|
+
Array(node['ruby_build']['install_git_pkgs']).each do |pkg|
|
38
|
+
package pkg do
|
39
|
+
not_if "git --version >/dev/null"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
execute "Install ruby-build" do
|
45
|
+
cwd src_path
|
46
|
+
command %{./install.sh}
|
47
|
+
|
48
|
+
action :nothing
|
49
|
+
not_if do
|
50
|
+
::File.exists?("/usr/local/bin/ruby-build") && upgrade_strategy == "none"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
directory ::File.dirname(src_path) do
|
55
|
+
recursive true
|
56
|
+
end
|
57
|
+
|
58
|
+
git src_path do #~FC043 exception to support AWS OpsWorks using an older Chef
|
59
|
+
repository git_url
|
60
|
+
reference git_ref
|
61
|
+
|
62
|
+
if upgrade_strategy == "none"
|
63
|
+
action :checkout
|
64
|
+
else
|
65
|
+
action :sync
|
66
|
+
end
|
67
|
+
|
68
|
+
notifies :run, resources(:execute => "Install ruby-build"), :immediately
|
69
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: ruby_build
|
3
|
+
# Resource:: ruby
|
4
|
+
#
|
5
|
+
# Author:: Fletcher Nichol <fnichol@nichol.ca>
|
6
|
+
#
|
7
|
+
# Copyright 2011, Fletcher Nichol
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
actions :install, :reinstall
|
23
|
+
|
24
|
+
attribute :definition, :kind_of => String, :name_attribute => true
|
25
|
+
attribute :prefix_path, :kind_of => String
|
26
|
+
attribute :user, :kind_of => String
|
27
|
+
attribute :group, :kind_of => String
|
28
|
+
attribute :environment, :kind_of => Hash
|
29
|
+
|
30
|
+
def initialize(*args)
|
31
|
+
super
|
32
|
+
@action = :install
|
33
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
name "alltherubies"
|
2
|
+
maintainer "Fletcher Nichol"
|
3
|
+
maintainer_email "fnichol@nichol.ca"
|
4
|
+
license "Apache 2.0"
|
5
|
+
description "Installs all-the-rubies via ruby_build cookbook"
|
6
|
+
long_description "Everything must be installed"
|
7
|
+
version "0.1.0"
|
8
|
+
|
9
|
+
depends "java"
|
10
|
+
depends "user"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: alltherubies
|
3
|
+
# Recipe:: default
|
4
|
+
#
|
5
|
+
# Copyright 2012, Fletcher Nichol
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
cores = node['cpu']['total'].to_i
|
21
|
+
system_rubies = %w{ 1.9.2-p320 1.9.3-p362 2.0.0-preview2
|
22
|
+
jruby-1.7.1 rbx-2.0.0-rc1 }
|
23
|
+
|
24
|
+
include_recipe "java"
|
25
|
+
|
26
|
+
if %{ubuntu debian}.include?(node['platform'])
|
27
|
+
package "default-jre-headless"
|
28
|
+
end
|
29
|
+
|
30
|
+
log "Forcing update of java alternatives" do
|
31
|
+
notifies :create, "ruby_block[update-java-alternatives]", :immediately
|
32
|
+
end
|
33
|
+
|
34
|
+
system_rubies.each do |rubie|
|
35
|
+
ruby_build_ruby rubie do
|
36
|
+
environment({ 'MAKE_OPTS' => "-j #{cores + 1}" })
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Woah, REE, crazy bananas! For more details see:
|
41
|
+
# * https://github.com/sstephenson/rbenv/issues/297
|
42
|
+
# * https://github.com/sstephenson/ruby-build/issues/186
|
43
|
+
ruby_build_ruby "ree-1.8.7-2012.02" do
|
44
|
+
environment({
|
45
|
+
'MAKE_OPTS' => "-j #{cores + 1}",
|
46
|
+
'CONFIGURE_OPTS' => "--no-tcmalloc",
|
47
|
+
})
|
48
|
+
end
|
49
|
+
|
50
|
+
user_account "app" do
|
51
|
+
home "/home/app"
|
52
|
+
end
|
53
|
+
|
54
|
+
ruby_build_ruby "1.8.7-p371" do
|
55
|
+
prefix_path "/home/app/.rubies/ruby-1.8.7-p371"
|
56
|
+
user "app"
|
57
|
+
group "app"
|
58
|
+
environment({ 'MAKE_OPTS' => "-j #{cores + 1}" })
|
59
|
+
end
|