boxgrinder-build 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -1
- data/Manifest +0 -30
- data/Rakefile +13 -21
- data/bin/boxgrinder-build +24 -8
- data/boxgrinder-build.gemspec +5 -5
- data/lib/boxgrinder-build/appliance.rb +28 -25
- data/lib/boxgrinder-build/helpers/guestfs-helper.rb +1 -1
- data/lib/boxgrinder-build/plugins/base-plugin.rb +7 -6
- data/rubygem-boxgrinder-build.spec +41 -23
- data/spec/appliance-spec.rb +3 -3
- data/spec/helpers/appliance-customize-helper-spec.rb +4 -4
- data/spec/helpers/guestfs-helper-spec.rb +6 -0
- data/spec/helpers/image-helper-spec.rb +3 -2
- data/spec/plugins/base-plugin-spec.rb +2 -2
- metadata +7 -7
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
v0.6.4
|
2
|
+
|
3
|
+
* [BGBUILD-98] Use hashery gem
|
4
|
+
* [BGBUILD-99] Timeout exception is not catched on non-EC2 platfrom in GuestFSHelper
|
5
|
+
* [BGBUILD-92] Enable --trace switch by default
|
6
|
+
* [BGBUILD-91] Log exceptions to log file
|
1
7
|
|
2
8
|
v0.6.3
|
3
9
|
|
@@ -14,7 +20,7 @@ v0.6.1
|
|
14
20
|
v0.6.0
|
15
21
|
|
16
22
|
* [BGBUILD-52] Wrong post section inheritance
|
17
|
-
* [BGBUILD-46] Allow building 32 bit
|
23
|
+
* [BGBUILD-46] Allow building 32 bit image s on 64 bit arch
|
18
24
|
|
19
25
|
v0.5.1
|
20
26
|
|
data/Manifest
CHANGED
@@ -1,30 +0,0 @@
|
|
1
|
-
CHANGELOG
|
2
|
-
LICENSE
|
3
|
-
Manifest
|
4
|
-
README
|
5
|
-
Rakefile
|
6
|
-
bin/boxgrinder-build
|
7
|
-
boxgrinder-build.gemspec
|
8
|
-
lib/boxgrinder-build/appliance.rb
|
9
|
-
lib/boxgrinder-build/helpers/appliance-customize-helper.rb
|
10
|
-
lib/boxgrinder-build/helpers/augeas-helper.rb
|
11
|
-
lib/boxgrinder-build/helpers/guestfs-helper.rb
|
12
|
-
lib/boxgrinder-build/helpers/image-helper.rb
|
13
|
-
lib/boxgrinder-build/helpers/linux-helper.rb
|
14
|
-
lib/boxgrinder-build/helpers/package-helper.rb
|
15
|
-
lib/boxgrinder-build/helpers/plugin-helper.rb
|
16
|
-
lib/boxgrinder-build/managers/plugin-manager.rb
|
17
|
-
lib/boxgrinder-build/plugins/base-plugin.rb
|
18
|
-
rubygem-boxgrinder-build.spec
|
19
|
-
spec/Rakefile
|
20
|
-
spec/appliance-spec.rb
|
21
|
-
spec/helpers/appliance-customize-helper-spec.rb
|
22
|
-
spec/helpers/augeas-helper-spec.rb
|
23
|
-
spec/helpers/guestfs-helper-spec.rb
|
24
|
-
spec/helpers/image-helper-spec.rb
|
25
|
-
spec/helpers/linux-helper-spec.rb
|
26
|
-
spec/helpers/package-helper-spec.rb
|
27
|
-
spec/helpers/plugin-helper-spec.rb
|
28
|
-
spec/managers/plugin-manager-spec.rb
|
29
|
-
spec/plugins/base-plugin-spec.rb
|
30
|
-
spec/rspec/src/appliances/jeos-f13.appl
|
data/Rakefile
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
require 'rubygems'
|
20
20
|
require 'spec/rake/spectask'
|
21
21
|
require 'echoe'
|
22
|
+
require 'rbconfig'
|
22
23
|
|
23
24
|
Echoe.new("boxgrinder-build") do |p|
|
24
25
|
p.project = "BoxGrinder Build"
|
@@ -26,7 +27,7 @@ Echoe.new("boxgrinder-build") do |p|
|
|
26
27
|
p.summary = "A tool for creating appliances from simple plain text files for various virtual environments."
|
27
28
|
p.url = "http://www.jboss.org/boxgrinder"
|
28
29
|
p.email = "info@boxgrinder.org"
|
29
|
-
p.runtime_dependencies = ["commander ~>4.0.3", "boxgrinder-core ~>0.1.
|
30
|
+
p.runtime_dependencies = ["commander ~>4.0.3", "boxgrinder-core ~>0.1.3"]
|
30
31
|
end
|
31
32
|
|
32
33
|
desc "Run all tests"
|
@@ -48,32 +49,23 @@ Spec::Rake::SpecTask.new('spec:coverage') do |t|
|
|
48
49
|
t.verbose = true
|
49
50
|
end
|
50
51
|
|
51
|
-
topdir = "#{Dir.pwd}/pkg/rpmbuild"
|
52
|
-
directory "#{topdir}/SOURCES"
|
53
|
-
|
54
|
-
task 'gem:copy' => [:clean, :manifest, :gem, 'rpm:topdir'] do
|
55
|
-
Dir["**/pkg/*.gem"].each { |gem| FileUtils.cp(gem, "#{topdir}/SOURCES", :verbose => true) }
|
56
|
-
end
|
57
|
-
|
58
|
-
task 'rpm:topdir' do
|
59
|
-
FileUtils.mkdir_p(["#{topdir}/SOURCES", "#{topdir}/RPMS", "#{topdir}/BUILD", "#{topdir}/SPECS", "#{topdir}/SRPMS"], :verbose => true)
|
60
|
-
end
|
61
|
-
|
62
52
|
desc "Create RPM"
|
63
|
-
task
|
53
|
+
task :rpm, :target, :version, :arch, :needs => ['clean', 'gem'] do |t, args|
|
54
|
+
target = args[:target] || 'fedora'
|
55
|
+
version = args[:version] || 'rawhide'
|
56
|
+
arch = args[:arch] || RbConfig::CONFIG['host_cpu']
|
57
|
+
|
64
58
|
Dir["**/rubygem-*.spec"].each do |spec|
|
65
|
-
`
|
59
|
+
`mock -v -r #{target}-#{version}-#{arch} --buildsrpm --sources pkg/*.gem --spec #{spec} --resultdir pkg/`
|
60
|
+
exit 1 unless $? == 0
|
61
|
+
`mock -v -r #{target}-#{version}-#{arch} --rebuild pkg/*.rpm --resultdir pkg/`
|
66
62
|
exit 1 unless $? == 0
|
67
63
|
end
|
68
64
|
end
|
69
65
|
|
70
66
|
desc "Install RPM"
|
71
|
-
task 'rpm:install' => [
|
72
|
-
puts "sudo yum -y remove rubygem-boxgrinder-build"
|
67
|
+
task 'rpm:install' => [:rpm] do
|
73
68
|
system "sudo yum -y remove rubygem-boxgrinder-build"
|
69
|
+
system "sudo yum -y localinstall --nogpgcheck pkg/*.rpm"
|
74
70
|
exit 1 unless $? == 0
|
75
|
-
|
76
|
-
puts "sudo yum -y --nogpgcheck localinstall #{topdir}/RPMS/noarch/*.rpm"
|
77
|
-
system "sudo yum -y --nogpgcheck localinstall #{topdir}/RPMS/noarch/*.rpm"
|
78
|
-
exit 1 unless $? == 0
|
79
|
-
end
|
71
|
+
end
|
data/bin/boxgrinder-build
CHANGED
@@ -30,8 +30,23 @@ end
|
|
30
30
|
|
31
31
|
require 'commander/import'
|
32
32
|
|
33
|
+
module Commander
|
34
|
+
class Runner
|
35
|
+
def run!
|
36
|
+
require_program :version, :description
|
37
|
+
trap('INT') { abort program(:int_message) } if program(:int_message)
|
38
|
+
trap('INT') { program(:int_block).call } if program(:int_block)
|
39
|
+
global_option('-h', '--help', 'Display help documentation') { command(:help).run *@args[1..-1]; return }
|
40
|
+
global_option('-v', '--version', 'Display version information') { say version; return }
|
41
|
+
parse_global_options
|
42
|
+
remove_global_options options, @args
|
43
|
+
run_active_command
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
33
48
|
program :name, 'BoxGrinder Build'
|
34
|
-
program :version, '0.6.
|
49
|
+
program :version, '0.6.4'
|
35
50
|
program :description, "A tool for building VM images from simple definition files."
|
36
51
|
program :help, 'Homepage', 'http://www.jboss.org/boxgrinder/build.html'
|
37
52
|
program :help, 'Documentation', 'http://community.jboss.org/docs/DOC-14358'
|
@@ -40,8 +55,8 @@ default_command :build
|
|
40
55
|
|
41
56
|
$log_level = :info
|
42
57
|
|
43
|
-
global_option('-V', '--verbose', TrueClass, "Prints debug information while building. Default: false.") { $log_level = :debug}
|
44
|
-
global_option('-W', '--very-verbose', TrueClass, "Prints trace information while building. Default: false.") { $log_level = :trace}
|
58
|
+
global_option('-V', '--verbose', TrueClass, "Prints debug information while building. Default: false.") { $log_level = :debug }
|
59
|
+
global_option('-W', '--very-verbose', TrueClass, "Prints trace information while building. Default: false.") { $log_level = :trace }
|
45
60
|
|
46
61
|
module BoxGrinder
|
47
62
|
command :build do |c|
|
@@ -49,27 +64,28 @@ module BoxGrinder
|
|
49
64
|
c.description = 'Creates an image from selected appliance definition for selected platform.'
|
50
65
|
c.examples = "boxgrinder-build test.appl -p vmware\nboxgrinder-build test.appl -p ec2 -d ami\nboxgrinder-build test.appl -d sftp"
|
51
66
|
|
67
|
+
force = false
|
68
|
+
|
52
69
|
c.option '-p STRING', '--platform STRING', String, "The type of platform. Default: none." # Valid types are: #{PlatformPluginManager.instance.plugins.keys.join(', ')}. Default: none."
|
53
70
|
c.option '-d STRING', '--delivery STRING', String, "The delivery type for selected image. Default: none." # Valid types are: #{DeliveryPluginManager.instance.types.keys.join(', ')}. Default: none."
|
54
|
-
c.option
|
71
|
+
c.option('-f', '--force', "Force image creation - removes all previous builds for selected appliance.") { force = true }
|
55
72
|
c.option '-l STRING', '--plugins STRING', String, "Comma separated list of plugins. Default: default plugins will be available."
|
56
73
|
|
57
74
|
c.action do |args, options|
|
58
75
|
options.default :platform => :none
|
59
76
|
options.default :delivery => :none
|
60
|
-
options.default :force => false
|
61
77
|
|
78
|
+
options.force = force
|
62
79
|
options.name = program(:name)
|
63
80
|
options.version = program(:version)
|
64
|
-
|
65
81
|
options.platform = options.platform.to_s.downcase.to_sym
|
66
82
|
options.delivery = options.delivery.to_s.downcase.to_sym
|
67
83
|
|
68
84
|
appliance_definition_file = args.shift or raise("You need to specify appliance definition file. Run 'boxgrinder-build -h' for more info")
|
69
85
|
|
70
|
-
raise "Appliance definition file '#{appliance_definition_file}' could not be found" unless File.exists?(
|
86
|
+
raise "Appliance definition file '#{appliance_definition_file}' could not be found" unless File.exists?(appliance_definition_file)
|
71
87
|
|
72
|
-
Appliance.new(
|
88
|
+
Appliance.new(appliance_definition_file, :options => options, :log => LogHelper.new(:threshold => $log_level)).create
|
73
89
|
end
|
74
90
|
end
|
75
91
|
end
|
data/boxgrinder-build.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{boxgrinder-build}
|
5
|
-
s.version = "0.6.
|
5
|
+
s.version = "0.6.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Marek Goldmann"]
|
9
|
-
s.date = %q{2010-11-
|
9
|
+
s.date = %q{2010-11-23}
|
10
10
|
s.default_executable = %q{boxgrinder-build}
|
11
11
|
s.description = %q{A tool for creating appliances from simple plain text files for various virtual environments.}
|
12
12
|
s.email = %q{info@boxgrinder.org}
|
@@ -26,13 +26,13 @@ Gem::Specification.new do |s|
|
|
26
26
|
|
27
27
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
28
28
|
s.add_runtime_dependency(%q<commander>, ["~> 4.0.3"])
|
29
|
-
s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.1.
|
29
|
+
s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.1.3"])
|
30
30
|
else
|
31
31
|
s.add_dependency(%q<commander>, ["~> 4.0.3"])
|
32
|
-
s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.
|
32
|
+
s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.3"])
|
33
33
|
end
|
34
34
|
else
|
35
35
|
s.add_dependency(%q<commander>, ["~> 4.0.3"])
|
36
|
-
s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.
|
36
|
+
s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.3"])
|
37
37
|
end
|
38
38
|
end
|
@@ -27,7 +27,7 @@ require 'boxgrinder-core/validators/appliance-config-validator'
|
|
27
27
|
module BoxGrinder
|
28
28
|
class Appliance
|
29
29
|
|
30
|
-
def initialize(
|
30
|
+
def initialize(appliance_definition_file, options = {})
|
31
31
|
@config = Config.new
|
32
32
|
@appliance_definition_file = appliance_definition_file
|
33
33
|
@log = options[:log] || Logger.new(STDOUT)
|
@@ -39,17 +39,17 @@ module BoxGrinder
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def read_and_validate_definition
|
42
|
-
appliance_configs, appliance_config = ApplianceHelper.new(
|
43
|
-
appliance_config_helper = ApplianceConfigHelper.new(
|
42
|
+
appliance_configs, appliance_config = ApplianceHelper.new(:log => @log).read_definitions(@appliance_definition_file)
|
43
|
+
appliance_config_helper = ApplianceConfigHelper.new(appliance_configs)
|
44
44
|
|
45
45
|
@appliance_config = appliance_config_helper.merge(appliance_config.clone.init_arch).initialize_paths
|
46
46
|
|
47
|
-
ApplianceConfigValidator.new(
|
47
|
+
ApplianceConfigValidator.new(@appliance_config).validate
|
48
48
|
end
|
49
49
|
|
50
50
|
def remove_old_builds
|
51
51
|
@log.info "Removing previous builds for #{@appliance_config.name} appliance..."
|
52
|
-
FileUtils.rm_rf(
|
52
|
+
FileUtils.rm_rf(@appliance_config.path.build)
|
53
53
|
@log.debug "Previous builds removed."
|
54
54
|
end
|
55
55
|
|
@@ -57,38 +57,41 @@ module BoxGrinder
|
|
57
57
|
@log.info "Building '#{@appliance_config.name}' appliance for #{@appliance_config.hardware.arch} architecture."
|
58
58
|
|
59
59
|
base_plugin_output = execute_os_plugin
|
60
|
-
platform_plugin_output = execute_platform_plugin(
|
60
|
+
platform_plugin_output = execute_platform_plugin(base_plugin_output)
|
61
61
|
|
62
|
-
execute_delivery_plugin(
|
62
|
+
execute_delivery_plugin(platform_plugin_output)
|
63
63
|
end
|
64
64
|
|
65
65
|
def create
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
66
|
+
begin
|
67
|
+
PluginHelper.new(:options => @options, :log => @log).load_plugins
|
68
|
+
read_and_validate_definition
|
69
|
+
remove_old_builds if @options.force
|
70
|
+
execute_plugin_chain
|
71
|
+
rescue
|
72
|
+
@log.fatal $!
|
73
|
+
end
|
71
74
|
end
|
72
75
|
|
73
76
|
def execute_os_plugin
|
74
77
|
raise "No operating system plugins installed. Install one or more operating system plugin. See http://community.jboss.org/docs/DOC-15081 and http://community.jboss.org/docs/DOC-15214 for more info" if PluginManager.instance.plugins[:os].empty?
|
75
78
|
|
76
|
-
os_plugin, os_plugin_info = PluginManager.instance.initialize_plugin(:os, @appliance_config.os.name.to_sym
|
77
|
-
os_plugin.init(
|
79
|
+
os_plugin, os_plugin_info = PluginManager.instance.initialize_plugin(:os, @appliance_config.os.name.to_sym)
|
80
|
+
os_plugin.init(@config, @appliance_config, :log => @log, :plugin_info => os_plugin_info)
|
78
81
|
|
79
82
|
if os_plugin.deliverables_exists?
|
80
83
|
@log.info "Deliverables for #{os_plugin_info[:name]} operating system plugin exists, skipping."
|
81
|
-
return {
|
84
|
+
return {:deliverables => os_plugin.deliverables}
|
82
85
|
end
|
83
86
|
|
84
87
|
@log.debug "Executing operating system plugin for #{@appliance_config.os.name}..."
|
85
88
|
os_plugin.run
|
86
89
|
@log.debug "Operating system plugin executed."
|
87
90
|
|
88
|
-
{
|
91
|
+
{:deliverables => os_plugin.deliverables, :plugin_info => os_plugin_info}
|
89
92
|
end
|
90
93
|
|
91
|
-
def execute_platform_plugin(
|
94
|
+
def execute_platform_plugin(previous_plugin_output)
|
92
95
|
if @options.platform == :none or @options.platform == nil
|
93
96
|
@log.debug "No platform selected, skipping platform conversion."
|
94
97
|
return previous_plugin_output
|
@@ -96,22 +99,22 @@ module BoxGrinder
|
|
96
99
|
|
97
100
|
raise "No platform plugins installed. Install one or more platform plugin. See http://community.jboss.org/docs/DOC-15081 and http://community.jboss.org/docs/DOC-15214 for more info" if PluginManager.instance.plugins[:platform].empty?
|
98
101
|
|
99
|
-
platform_plugin, platform_plugin_info = PluginManager.instance.initialize_plugin(:platform, @options.platform
|
100
|
-
platform_plugin.init(
|
102
|
+
platform_plugin, platform_plugin_info = PluginManager.instance.initialize_plugin(:platform, @options.platform)
|
103
|
+
platform_plugin.init(@config, @appliance_config, :log => @log, :plugin_info => platform_plugin_info, :previous_plugin_info => previous_plugin_output[:plugin_info], :previous_deliverables => previous_plugin_output[:deliverables])
|
101
104
|
|
102
105
|
if platform_plugin.deliverables_exists?
|
103
106
|
@log.info "Deliverables for #{platform_plugin_info[:name]} platform plugin exists, skipping."
|
104
|
-
return {
|
107
|
+
return {:deliverables => platform_plugin.deliverables, :plugin_info => platform_plugin_info}
|
105
108
|
end
|
106
109
|
|
107
110
|
@log.debug "Executing platform plugin for #{@options.platform}..."
|
108
111
|
platform_plugin.run
|
109
112
|
@log.debug "Platform plugin executed."
|
110
113
|
|
111
|
-
{
|
114
|
+
{:deliverables => platform_plugin.deliverables, :plugin_info => platform_plugin_info}
|
112
115
|
end
|
113
116
|
|
114
|
-
def execute_delivery_plugin(
|
117
|
+
def execute_delivery_plugin(previous_plugin_output)
|
115
118
|
if @options.delivery == :none or @options.delivery == nil
|
116
119
|
@log.debug "No delivery method selected, skipping delivering."
|
117
120
|
return
|
@@ -119,9 +122,9 @@ module BoxGrinder
|
|
119
122
|
|
120
123
|
raise "No delivery plugins installed. Install one or more delivery plugin. See http://community.jboss.org/docs/DOC-15081 and http://community.jboss.org/docs/DOC-15214 for more info" if PluginManager.instance.plugins[:delivery].empty?
|
121
124
|
|
122
|
-
delivery_plugin, delivery_plugin_info = PluginManager.instance.initialize_plugin(:delivery, @options.delivery
|
123
|
-
delivery_plugin.init(
|
124
|
-
delivery_plugin.run(
|
125
|
+
delivery_plugin, delivery_plugin_info = PluginManager.instance.initialize_plugin(:delivery, @options.delivery)
|
126
|
+
delivery_plugin.init(@config, @appliance_config, :log => @log, :plugin_info => delivery_plugin_info, :previous_plugin_info => previous_plugin_output[:plugin_info], :previous_deliverables => previous_plugin_output[:deliverables])
|
127
|
+
delivery_plugin.run(@options.delivery)
|
125
128
|
end
|
126
129
|
end
|
127
130
|
end
|
@@ -16,11 +16,12 @@
|
|
16
16
|
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
17
17
|
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
18
18
|
|
19
|
+
require 'rubygems'
|
19
20
|
require 'boxgrinder-core/helpers/exec-helper'
|
20
21
|
require 'boxgrinder-core/helpers/log-helper'
|
21
22
|
require 'boxgrinder-build/helpers/image-helper'
|
22
23
|
require 'ostruct'
|
23
|
-
require '
|
24
|
+
require 'hashery/opencascade'
|
24
25
|
require 'fileutils'
|
25
26
|
require 'logger'
|
26
27
|
|
@@ -41,10 +42,10 @@ module BoxGrinder
|
|
41
42
|
@previous_deliverables = options[:previous_deliverables] || {}
|
42
43
|
@plugin_config = {}
|
43
44
|
|
44
|
-
@deliverables =
|
45
|
-
@supported_oses =
|
46
|
-
@target_deliverables =
|
47
|
-
@dir =
|
45
|
+
@deliverables = OpenCascade.new
|
46
|
+
@supported_oses = OpenCascade.new
|
47
|
+
@target_deliverables = OpenCascade.new
|
48
|
+
@dir = OpenCascade.new
|
48
49
|
|
49
50
|
@dir.base = "#{@appliance_config.path.build}/#{@plugin_info[:name]}-plugin"
|
50
51
|
@dir.tmp = "#{@dir.base}/tmp"
|
@@ -73,7 +74,7 @@ module BoxGrinder
|
|
73
74
|
def register_supported_os(name, versions)
|
74
75
|
raise "You can register supported operating system only after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
|
75
76
|
|
76
|
-
@supported_oses[name] =
|
77
|
+
@supported_oses[name] = OpenCascade.new if @supported_oses[name].nil?
|
77
78
|
@supported_oses[name] = versions
|
78
79
|
end
|
79
80
|
|
@@ -5,24 +5,25 @@
|
|
5
5
|
|
6
6
|
Summary: A tool for creating appliances from simple plain text files
|
7
7
|
Name: rubygem-%{gemname}
|
8
|
-
Version: 0.6.
|
9
|
-
Release:
|
8
|
+
Version: 0.6.4
|
9
|
+
Release: 3%{?dist}
|
10
10
|
Group: Development/Languages
|
11
11
|
License: LGPLv3+
|
12
12
|
URL: http://www.jboss.org/boxgrinder
|
13
13
|
Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
|
14
|
-
Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
15
14
|
|
16
15
|
Requires: ruby(abi) = %{rubyabi}
|
17
|
-
Requires:
|
18
|
-
Requires:
|
19
|
-
Requires:
|
20
|
-
Requires:
|
21
|
-
Requires:
|
22
|
-
|
23
|
-
|
24
|
-
BuildRequires: rubygem(
|
25
|
-
BuildRequires: rubygem(boxgrinder-core)
|
16
|
+
Requires: rubygem(commander)
|
17
|
+
Requires: rubygem(boxgrinder-core)
|
18
|
+
Requires: ruby-libguestfs
|
19
|
+
Requires: parted
|
20
|
+
Requires: e2fsprogs
|
21
|
+
|
22
|
+
BuildRequires: rubygem(rake)
|
23
|
+
BuildRequires: rubygem(rspec)
|
24
|
+
BuildRequires: rubygem(boxgrinder-core)
|
25
|
+
BuildRequires: rubygem(echoe)
|
26
|
+
BuildRequires: ruby-libguestfs
|
26
27
|
|
27
28
|
BuildArch: noarch
|
28
29
|
Provides: rubygem(%{gemname}) = %{version}
|
@@ -45,23 +46,23 @@ Documentation for %{name}
|
|
45
46
|
|
46
47
|
%install
|
47
48
|
rm -rf %{buildroot}
|
48
|
-
|
49
|
-
|
50
|
-
|
49
|
+
rm -rf %{_builddir}%{gemdir}
|
50
|
+
|
51
|
+
mkdir -p %{_builddir}%{gemdir}
|
51
52
|
mkdir -p %{buildroot}/%{_bindir}
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
mkdir -p %{buildroot}/%{gemdir}
|
54
|
+
|
55
|
+
gem install --local --install-dir %{_builddir}%{gemdir} \
|
56
|
+
--force --rdoc %{SOURCE0}
|
57
|
+
mv %{_builddir}%{gemdir}/bin/* %{buildroot}/%{_bindir}
|
58
|
+
find %{_builddir}%{geminstdir}/bin -type f | xargs chmod a+x
|
59
|
+
cp -r %{_builddir}%{gemdir}/* %{buildroot}/%{gemdir}
|
55
60
|
|
56
61
|
%check
|
57
|
-
pushd %{
|
62
|
+
pushd %{_builddir}/%{geminstdir}
|
58
63
|
rake spec
|
59
|
-
rm -rf log
|
60
64
|
popd
|
61
65
|
|
62
|
-
%clean
|
63
|
-
rm -rf %{buildroot}
|
64
|
-
|
65
66
|
%files
|
66
67
|
%defattr(-, root, root, -)
|
67
68
|
%{_bindir}/boxgrinder-build
|
@@ -84,6 +85,23 @@ rm -rf %{buildroot}
|
|
84
85
|
%{gemdir}/doc/%{gemname}-%{version}
|
85
86
|
|
86
87
|
%changelog
|
88
|
+
* Mon Nov 22 2010 <mgoldman@redhat.com> - 0.6.4-3
|
89
|
+
- Changelog rewritten
|
90
|
+
- Added Require: parted and e2fsprogs
|
91
|
+
|
92
|
+
* Sat Nov 20 2010 <mgoldman@redhat.com> - 0.6.4-2
|
93
|
+
- Small set of spec file adjustments
|
94
|
+
|
95
|
+
* Mon Nov 15 2010 <mgoldman@redhat.com> - 0.6.4-1
|
96
|
+
- Updated to new upstream release: 0.6.4
|
97
|
+
- Removed BuildRoot tag
|
98
|
+
- Adjusted Requires and BuildRequires
|
99
|
+
- Different approach for testing
|
100
|
+
- [BGBUILD-98] Use hashery gem
|
101
|
+
- [BGBUILD-99] Timeout exception is not catched on non-EC2 platfrom in GuestFSHelper
|
102
|
+
- [BGBUILD-92] Enable --trace switch by default
|
103
|
+
- [BGBUILD-91] Log exceptions to log file
|
104
|
+
|
87
105
|
* Tue Nov 09 2010 <mgoldman@redhat.com> - 0.6.3-1
|
88
106
|
- [BGBUILD-94] Check if set_network call is avaialbe in libguestfs
|
89
107
|
- Added 'check' section that executes tests
|
data/spec/appliance-spec.rb
CHANGED
@@ -41,15 +41,15 @@ module BoxGrinder
|
|
41
41
|
def prepare_appliance_config
|
42
42
|
@appliance_config = mock('ApplianceConfig')
|
43
43
|
|
44
|
-
@appliance_config.stub!(:path).and_return(
|
44
|
+
@appliance_config.stub!(:path).and_return(OpenCascade.new({:build => 'build/path'}))
|
45
45
|
@appliance_config.stub!(:name).and_return('full')
|
46
46
|
@appliance_config.stub!(:summary).and_return('asd')
|
47
47
|
@appliance_config.stub!(:version).and_return(1)
|
48
48
|
@appliance_config.stub!(:release).and_return(0)
|
49
|
-
@appliance_config.stub!(:os).and_return(
|
49
|
+
@appliance_config.stub!(:os).and_return(OpenCascade.new({:name => 'fedora', :version => '11'}))
|
50
50
|
|
51
51
|
@appliance_config.stub!(:hardware).and_return(
|
52
|
-
|
52
|
+
OpenCascade.new({
|
53
53
|
:partitions =>
|
54
54
|
{
|
55
55
|
'/' => {'size' => 2},
|
@@ -28,16 +28,16 @@ module BoxGrinder
|
|
28
28
|
|
29
29
|
@appliance_config = mock('ApplianceConfig')
|
30
30
|
|
31
|
-
@appliance_config.stub!(:path).and_return(
|
31
|
+
@appliance_config.stub!(:path).and_return(OpenCascade.new({:build => 'build/path'}))
|
32
32
|
@appliance_config.stub!(:name).and_return('full')
|
33
33
|
@appliance_config.stub!(:summary).and_return('asd')
|
34
34
|
@appliance_config.stub!(:version).and_return(1)
|
35
35
|
@appliance_config.stub!(:release).and_return(0)
|
36
|
-
@appliance_config.stub!(:os).and_return(
|
37
|
-
@appliance_config.stub!(:post).and_return(
|
36
|
+
@appliance_config.stub!(:os).and_return(OpenCascade.new({:name => 'fedora', :version => '11'}))
|
37
|
+
@appliance_config.stub!(:post).and_return(OpenCascade.new({:vmware => []}))
|
38
38
|
|
39
39
|
@appliance_config.stub!(:hardware).and_return(
|
40
|
-
|
40
|
+
OpenCascade.new({
|
41
41
|
:partitions =>
|
42
42
|
{
|
43
43
|
'/' => {'size' => 2},
|
@@ -183,6 +183,12 @@ module BoxGrinder
|
|
183
183
|
@helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_return("IP")
|
184
184
|
@helper.hw_virtualization_available?.should == false
|
185
185
|
end
|
186
|
+
|
187
|
+
it "should return false if timeout exception is thrown" do
|
188
|
+
@helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_raise(Timeout::Error.new('something'))
|
189
|
+
@helper.should_receive(:`).with('cat /proc/cpuinfo | grep flags | grep vmx | wc -l').and_return("0")
|
190
|
+
@helper.hw_virtualization_available?.should == false
|
191
|
+
end
|
186
192
|
end
|
187
193
|
end
|
188
194
|
end
|
@@ -28,7 +28,7 @@ module BoxGrinder
|
|
28
28
|
|
29
29
|
@appliance_config.stub!(:name).and_return('full')
|
30
30
|
@appliance_config.stub!(:hardware).and_return(
|
31
|
-
|
31
|
+
OpenCascade.new({
|
32
32
|
:partitions =>
|
33
33
|
{
|
34
34
|
'/' => {'size' => 2, 'type' => 'ext4'},
|
@@ -104,6 +104,7 @@ module BoxGrinder
|
|
104
104
|
@exec_helper.should_receive(:execute).ordered.with('losetup /dev/loop0 disk.raw')
|
105
105
|
@exec_helper.should_receive(:execute).ordered.with("parted /dev/loop0 'unit B print' | grep -e '^ [0-9]' | awk '{ print $2 }'").and_return("0B\n1234B\n")
|
106
106
|
@exec_helper.should_receive(:execute).ordered.with('losetup -d /dev/loop0')
|
107
|
+
@helper.should_receive(:sleep).with(1)
|
107
108
|
|
108
109
|
@helper.calculate_disk_offsets('disk.raw').should == ["0", "1234"]
|
109
110
|
end
|
@@ -122,7 +123,7 @@ module BoxGrinder
|
|
122
123
|
|
123
124
|
it "should create ext4 filesystem on selected device" do
|
124
125
|
@appliance_config.should_receive(:hardware).and_return(
|
125
|
-
|
126
|
+
OpenCascade.new({
|
126
127
|
:partitions =>
|
127
128
|
{
|
128
129
|
'/' => {'size' => 2, 'type' => 'ext3'},
|
@@ -29,8 +29,8 @@ module BoxGrinder
|
|
29
29
|
|
30
30
|
@appliance_config = mock('ApplianceConfig')
|
31
31
|
|
32
|
-
@appliance_config.stub!(:path).and_return(
|
33
|
-
@appliance_config.stub!(:os).and_return(
|
32
|
+
@appliance_config.stub!(:path).and_return(OpenCascade.new({:build => 'build/path'}))
|
33
|
+
@appliance_config.stub!(:os).and_return(OpenCascade.new({:name => 'fedora', :version => '11'}))
|
34
34
|
|
35
35
|
@plugin = BasePlugin.new
|
36
36
|
@plugin.init(@config, @appliance_config, :plugin_info => {:name => :plugin_name}, :log => Logger.new('/dev/null'))
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxgrinder-build
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 4
|
10
|
+
version: 0.6.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Marek Goldmann
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-23 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -42,12 +42,12 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 29
|
46
46
|
segments:
|
47
47
|
- 0
|
48
48
|
- 1
|
49
|
-
-
|
50
|
-
version: 0.1.
|
49
|
+
- 3
|
50
|
+
version: 0.1.3
|
51
51
|
type: :runtime
|
52
52
|
version_requirements: *id002
|
53
53
|
description: A tool for creating appliances from simple plain text files for various virtual environments.
|