boxgrinder-build 0.6.3 → 0.6.4
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/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.
|