eycloud-helper-emerge 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ pkg
2
+ tmp
3
+ Gemfile.lock
4
+ .DS_Store
data/ChangeLog.md ADDED
File without changes
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # Emerge helpers for EY Cloud
2
+
3
+ This cookbook holds 2 definitions, one called enable_package and one called update_file. Between these two definitions it enables you to 'unmask' a package in Chef and then install an 'masked' version of said package.
4
+
5
+ ## Usage
6
+
7
+ For example if you want to install Libxml 2.7.6 on AppCloud you would use the following as a recipe.
8
+
9
+ ```ruby
10
+ enable_package "dev-libs/libxml2" do
11
+ version "2.7.6"
12
+ end
13
+
14
+ package "dev-libs/libxml2" do
15
+ version "2.7.6"
16
+ action :install
17
+ end
18
+ ```
19
+
20
+ There is also the following which will update `/etc/portage/package.unmask/local`
21
+
22
+ ```ruby
23
+ enable_package "x11-libs/#{package}" do
24
+ version node[:qt_webkit_version]
25
+ unmask true
26
+ end
27
+ ```
28
+
29
+ Alternately, this example shows you how to modify the 'use_flags' that are used during package compilation too.
30
+
31
+ ```ruby
32
+ enable_package "dev-lang/ruby" do
33
+ version "1.8.7_p299"
34
+ end
35
+
36
+ package_use "dev-lang/ruby" do
37
+ flags "threads"
38
+ end
39
+
40
+ package "dev-lang/ruby" do
41
+ version "1.8.7_p299"
42
+ action :install
43
+ end
44
+ ```
45
+
46
+ ## Terminology
47
+
48
+ Gentoo uses the names 'mask' and 'unmask' terminology between stable and unstable. Typically this is done in /etc/make.conf with ACCEPT_KEYWORDS declaration for '~amd64' and '~x86'. However it can also be added to /etc/portage/package.keywords/local to 'unmask' packages individually.
49
+
50
+ ## Installation
51
+
52
+ INSTALLATION HERE
53
+
54
+ ## Contributing
55
+
56
+ 1. Fork it
57
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
58
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
59
+ 4. Push to the branch (`git push origin my-new-feature`)
60
+ 5. Create new Pull Request
61
+
62
+ ## License
63
+
64
+ MIT LICENSE
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,20 @@
1
+ define :enable_package, :version => nil do
2
+ name = params[:name]
3
+ version = params[:version]
4
+ full_name = name + ("-#{version}" if version)
5
+ unmask = params[:unmask] || false
6
+
7
+ update_file "local portage package.keywords" do
8
+ path "/etc/portage/package.keywords/local"
9
+ body "=#{full_name}"
10
+ not_if "grep '=#{full_name}' /etc/portage/package.keywords/local"
11
+ end
12
+
13
+ if unmask
14
+ update_file "local portage package.unmask" do
15
+ path "/etc/portage/package.unmask/local"
16
+ body "=#{full_name}"
17
+ not_if "grep '=#{full_name}' /etc/portage/package.keywords/local"
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ define :package_use, :flags => nil do
2
+ name = params[:name]
3
+ flags = params[:flags]
4
+ full_name = name + (" #{flags}" if flags)
5
+
6
+ file "/etc/portage/package.use" do
7
+ action :delete
8
+
9
+ not_if "file -d /etc/portage/package.use"
10
+ end
11
+
12
+ directory "/etc/portage/package.use" do
13
+ action :create
14
+ end
15
+
16
+ execute "touch /etc/portage/package.use/local" do
17
+ action :run
18
+ not_if { FileTest.exists?("/etc/portage/package.use/local") }
19
+ end
20
+
21
+ update_file "local portage package.use" do
22
+ path "/etc/portage/package.use/local"
23
+ body full_name
24
+ not_if "grep '#{full_name}' /etc/portage/package.use/local"
25
+ end
26
+ end
@@ -0,0 +1,36 @@
1
+ define :update_file, :action => :append do
2
+ require 'tempfile'
3
+
4
+ filepath = params[:path] || params[:name]
5
+
6
+ file params[:name] do
7
+ backup params[:backup] if params[:backup]
8
+ group params[:group] if params[:group]
9
+ mode params[:mode] if params[:mode]
10
+ owner params[:owner] if params[:owner]
11
+ path filepath
12
+ end
13
+
14
+ case params[:action].to_sym
15
+ when :append, :rewrite
16
+
17
+ mode = params[:action].to_sym == :append ? 'a' : 'w'
18
+
19
+ ruby_block "#{params[:action]}-to-#{filepath}" do
20
+ block do
21
+ File.open(filepath, mode) do |f|
22
+ f.puts params[:body]
23
+ end
24
+ not_if(params[:not_if]) if params[:not_if]
25
+ end
26
+ end
27
+
28
+ when :truncate
29
+
30
+ execute "truncate-#{filepath}" do
31
+ command "> #{filepath}"
32
+ not_if(params[:not_if]) if params[:not_if]
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ version = "0.1.0" # TODO get from metadata.json or .rb
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "eycloud-helper-emerge"
8
+ s.version = version
9
+ s.authors = ["Dr Nic Williams"]
10
+ s.email = ["drnicwilliams@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{Emerge recipe for EY Cloud} # TODO from metadata
13
+ s.description = %q{Emerge recipe for EY Cloud} # TODO from metadata long_description
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ # s.add_dependency("eycloud-helper-cronjobs")
21
+ s.add_development_dependency("rake")
22
+ end
data/metadata.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "emerge",
3
+ "description": "Emerge recipe for EY Cloud",
4
+ "long_description": "",
5
+ "license": "MIT",
6
+ "maintainer": "Dr Nic Williams",
7
+ "maintainer_email": "drnicwilliams@gmail.com",
8
+ "version": "0.1.0",
9
+ "attributes": {
10
+ },
11
+ "dependencies": {
12
+ }
13
+ }
data/metadata.rb ADDED
@@ -0,0 +1,7 @@
1
+ name "emerge"
2
+ description "Emerge recipe for EY Cloud"
3
+ long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
4
+ maintainer "Dr Nic Williams"
5
+ maintainer_email "drnicwilliams@gmail.com"
6
+ version "0.1.0"
7
+ # depends "cronjobs"
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eycloud-helper-emerge
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dr Nic Williams
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70326282899600 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70326282899600
25
+ description: Emerge recipe for EY Cloud
26
+ email:
27
+ - drnicwilliams@gmail.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - .gitignore
33
+ - ChangeLog.md
34
+ - Gemfile
35
+ - README.md
36
+ - Rakefile
37
+ - definitions/enable_package.rb
38
+ - definitions/package_use.rb
39
+ - definitions/update_file.rb
40
+ - eycloud-helper-emerge.gemspec
41
+ - metadata.json
42
+ - metadata.rb
43
+ homepage: ''
44
+ licenses: []
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ segments:
56
+ - 0
57
+ hash: -830720860235660342
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ segments:
65
+ - 0
66
+ hash: -830720860235660342
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 1.8.17
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: Emerge recipe for EY Cloud
73
+ test_files: []