boxgrinder-build 0.6.0 → 0.6.1

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 CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ v0.6.1
3
+
4
+ * [BGBUILD-81] post command execution w/ setarch breaks commands which are scripts
5
+
2
6
  v0.6.0
3
7
 
4
8
  * [BGBUILD-52] Wrong post section inheritance
data/README CHANGED
@@ -1,6 +1,6 @@
1
1
  Project home page
2
2
 
3
- http://www.jboss.org/stormgrind/projects/boxgrinder/build.html
3
+ http://www.jboss.org/boxgrinder
4
4
 
5
5
  Project documentation
6
6
 
data/Rakefile CHANGED
@@ -7,5 +7,5 @@ Echoe.new("boxgrinder-build") do |p|
7
7
  p.url = "http://www.jboss.org/boxgrinder"
8
8
  p.email = "info@boxgrinder.org"
9
9
  p.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git|\.log/
10
- p.runtime_dependencies = ["commander ~>4.0.3", "boxgrinder-core ~>0.1.0"]
10
+ p.runtime_dependencies = ["commander ~>4.0.3", "boxgrinder-core ~>0.1.1"]
11
11
  end
data/bin/boxgrinder-build CHANGED
@@ -1,13 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # JBoss, Home of Professional Open Source
4
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
5
- # by the @authors tag. See the copyright.txt in the distribution for a
6
- # full listing of individual contributors.
3
+ # Copyright 2010 Red Hat, Inc.
7
4
  #
8
5
  # This is free software; you can redistribute it and/or modify it
9
6
  # under the terms of the GNU Lesser General Public License as
10
- # published by the Free Software Foundation; either version 2.1 of
7
+ # published by the Free Software Foundation; either version 3 of
11
8
  # the License, or (at your option) any later version.
12
9
  #
13
10
  # This software is distributed in the hope that it will be useful,
@@ -22,7 +19,7 @@
22
19
 
23
20
  require 'rubygems'
24
21
 
25
- gem 'boxgrinder-core', '>= 0.1.0'
22
+ gem 'boxgrinder-core', '>= 0.1.1'
26
23
  gem 'commander', '>= 4.0.3'
27
24
 
28
25
  require 'boxgrinder-core/helpers/log-helper'
@@ -38,7 +35,7 @@ end
38
35
  require 'commander/import'
39
36
 
40
37
  program :name, 'BoxGrinder Build'
41
- program :version, '0.6.0'
38
+ program :version, '0.6.1'
42
39
  program :description, "A tool for building VM images from simple definition files."
43
40
  program :help, 'Homepage', 'http://www.jboss.org/boxgrinder/build.html'
44
41
  program :help, 'Documentation', 'http://community.jboss.org/docs/DOC-14358'
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{boxgrinder-build}
5
- s.version = "0.6.0"
5
+ s.version = "0.6.1"
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-10-12}
9
+ s.date = %q{2010-11-02}
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}
13
13
  s.executables = ["boxgrinder-build"]
14
14
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "bin/boxgrinder-build", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/appliance-customize-helper.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/guestfs-helper.rb", "lib/boxgrinder-build/helpers/image-helper.rb", "lib/boxgrinder-build/helpers/linux-helper.rb", "lib/boxgrinder-build/helpers/package-helper.rb", "lib/boxgrinder-build/helpers/plugin-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb"]
15
- s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/boxgrinder-build", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/appliance-customize-helper.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/guestfs-helper.rb", "lib/boxgrinder-build/helpers/image-helper.rb", "lib/boxgrinder-build/helpers/linux-helper.rb", "lib/boxgrinder-build/helpers/package-helper.rb", "lib/boxgrinder-build/helpers/plugin-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "spec/Rakefile", "spec/appliance-spec.rb", "spec/helpers/appliance-customize-helper-spec.rb", "spec/helpers/augeas-helper-spec.rb", "spec/helpers/guestfs-helper-spec.rb", "spec/helpers/image-helper-spec.rb", "spec/helpers/linux-helper-spec.rb", "spec/helpers/package-helper-spec.rb", "spec/helpers/plugin-helper-spec.rb", "spec/managers/plugin-manager-spec.rb", "spec/plugins/base-plugin-spec.rb", "spec/rspec/src/appliances/jeos-f13.appl", "boxgrinder-build.gemspec"]
15
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/boxgrinder-build", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/appliance-customize-helper.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/guestfs-helper.rb", "lib/boxgrinder-build/helpers/image-helper.rb", "lib/boxgrinder-build/helpers/linux-helper.rb", "lib/boxgrinder-build/helpers/package-helper.rb", "lib/boxgrinder-build/helpers/plugin-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "rubygem-boxgrinder-build.spec", "spec/Rakefile", "spec/appliance-spec.rb", "spec/helpers/appliance-customize-helper-spec.rb", "spec/helpers/augeas-helper-spec.rb", "spec/helpers/guestfs-helper-spec.rb", "spec/helpers/image-helper-spec.rb", "spec/helpers/linux-helper-spec.rb", "spec/helpers/package-helper-spec.rb", "spec/helpers/plugin-helper-spec.rb", "spec/managers/plugin-manager-spec.rb", "spec/plugins/base-plugin-spec.rb", "spec/rspec/src/appliances/jeos-f13.appl", "boxgrinder-build.gemspec"]
16
16
  s.homepage = %q{http://www.jboss.org/boxgrinder}
17
17
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-build", "--main", "README"]
18
18
  s.require_paths = ["lib"]
@@ -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.0"])
29
+ s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.1.1"])
30
30
  else
31
31
  s.add_dependency(%q<commander>, ["~> 4.0.3"])
32
- s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.0"])
32
+ s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.1"])
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.0"])
36
+ s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.1"])
37
37
  end
38
38
  end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -123,12 +121,7 @@ module BoxGrinder
123
121
 
124
122
  delivery_plugin, delivery_plugin_info = PluginManager.instance.initialize_plugin(:delivery, @options.delivery )
125
123
  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] )
126
-
127
- if @options.delivery != delivery_plugin_info[:name]
128
- delivery_plugin.run( @options.delivery )
129
- else
130
- delivery_plugin.run
131
- end
124
+ delivery_plugin.run( @options.delivery )
132
125
  end
133
126
  end
134
127
  end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -40,6 +38,9 @@ module BoxGrinder
40
38
  return
41
39
  end
42
40
 
41
+ @log.trace "Enabling coredump catching for augeas..."
42
+ @guestfs.debug( "core_pattern", [ "/sysroot/core" ] )
43
+
43
44
  @guestfs.aug_init( "/", 32 )
44
45
 
45
46
  unload = []
@@ -73,4 +74,4 @@ module BoxGrinder
73
74
  @files[name][key] = value
74
75
  end
75
76
  end
76
- end
77
+ end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -24,14 +22,14 @@ require 'logger'
24
22
 
25
23
  module BoxGrinder
26
24
  class SilencerProxy
27
- def initialize( o, destination )
25
+ def initialize(o, destination)
28
26
  @o = o
29
27
  @destination = destination
30
28
  end
31
29
 
32
- def method_missing( m, *args, &block )
30
+ def method_missing(m, *args, &block)
33
31
  begin
34
- redirect_streams( @destination ) do
32
+ redirect_streams(@destination) do
35
33
  @o.send(m, *args, &block)
36
34
  end
37
35
  rescue
@@ -39,20 +37,20 @@ module BoxGrinder
39
37
  end
40
38
  end
41
39
 
42
- def redirect_streams( destination )
40
+ def redirect_streams(destination)
43
41
  old_stdout_stream = STDOUT.dup
44
42
  old_stderr_stream = STDERR.dup
45
43
 
46
- STDOUT.reopen( destination )
47
- STDERR.reopen( destination )
44
+ STDOUT.reopen(destination)
45
+ STDERR.reopen(destination)
48
46
 
49
47
  STDOUT.sync = true
50
48
  STDERR.sync = true
51
49
 
52
50
  yield
53
51
  ensure
54
- STDOUT.reopen( old_stdout_stream )
55
- STDERR.reopen( old_stderr_stream )
52
+ STDOUT.reopen(old_stdout_stream)
53
+ STDERR.reopen(old_stderr_stream)
56
54
  end
57
55
  end
58
56
  end
@@ -61,9 +59,9 @@ module Guestfs
61
59
  class Guestfs
62
60
  alias_method :sh_original, :sh
63
61
 
64
- def sh( command )
62
+ def sh(command)
65
63
  begin
66
- output = sh_original( command )
64
+ output = sh_original(command)
67
65
  puts output
68
66
  rescue => e
69
67
  puts "Error occurred while executing above command. Appliance may not work properly."
@@ -72,15 +70,15 @@ module Guestfs
72
70
  output
73
71
  end
74
72
 
75
- def redirect( destination )
76
- BoxGrinder::SilencerProxy.new( self, destination )
73
+ def redirect(destination)
74
+ BoxGrinder::SilencerProxy.new(self, destination)
77
75
  end
78
76
  end
79
77
  end
80
78
 
81
79
  module BoxGrinder
82
80
  class GuestFSHelper
83
- def initialize( raw_disk, options = {} )
81
+ def initialize(raw_disk, options = {})
84
82
  @raw_disk = raw_disk
85
83
  @log = options[:log] || Logger.new(STDOUT)
86
84
 
@@ -102,7 +100,7 @@ module BoxGrinder
102
100
  end
103
101
  end
104
102
 
105
- helper = execute( write_pipe )
103
+ helper = execute(write_pipe)
106
104
 
107
105
  yield @guestfs, helper
108
106
 
@@ -113,14 +111,15 @@ module BoxGrinder
113
111
  Process.wait
114
112
  end
115
113
 
116
- def execute( pipe = nil )
114
+ def execute(pipe = nil)
117
115
  @log.debug "Preparing guestfs..."
118
116
 
119
- @guestfs = pipe.nil? ? Guestfs::create : Guestfs::create.redirect( pipe )
117
+ @guestfs = pipe.nil? ? Guestfs::create : Guestfs::create.redirect(pipe)
120
118
 
121
119
  # TODO remove this, https://bugzilla.redhat.com/show_bug.cgi?id=502058
122
- @guestfs.set_append( "noapic" )
120
+ @guestfs.set_append("noapic")
123
121
 
122
+ @log.trace "Setting debug + trace..."
124
123
  @guestfs.set_verbose(1)
125
124
  @guestfs.set_trace(1)
126
125
 
@@ -130,22 +129,25 @@ module BoxGrinder
130
129
  # Looks like in F13 (qemu-img-0.12.3-8.fc13.i686) this is fixed
131
130
  qemu_wrapper = "/usr/share/qemu-stable/bin/qemu.wrapper"
132
131
 
133
- if File.exists?( qemu_wrapper )
134
- @guestfs.set_qemu( qemu_wrapper )
132
+ if File.exists?(qemu_wrapper)
133
+ @guestfs.set_qemu(qemu_wrapper)
135
134
  end
136
135
 
137
136
  @log.trace "Adding drive '#{@raw_disk}'..."
138
- @guestfs.add_drive( @raw_disk )
137
+ @guestfs.add_drive(@raw_disk)
139
138
  @log.trace "Drive added."
140
139
 
140
+ @log.debug "Enabling networking for GuestFS..."
141
+ @guestfs.set_network(1)
142
+
141
143
  @log.debug "Launching guestfs..."
142
144
  @guestfs.launch
143
145
 
144
146
  case @guestfs.list_partitions.size
145
147
  when 0
146
- mount_partition( @guestfs.list_devices.first, '/' )
148
+ mount_partition(@guestfs.list_devices.first, '/')
147
149
  when 1
148
- mount_partition( @guestfs.list_partitions.first, '/' )
150
+ mount_partition(@guestfs.list_partitions.first, '/')
149
151
  else
150
152
  mount_partitions
151
153
  end
@@ -165,17 +167,17 @@ module BoxGrinder
165
167
  @log.trace "Guestfs closed."
166
168
  end
167
169
 
168
- def mount_partition( part, mount_point )
170
+ def mount_partition(part, mount_point)
169
171
  @log.trace "Mounting #{part} partition to #{mount_point}..."
170
- @guestfs.mount_options( "", part, mount_point )
172
+ @guestfs.mount_options("", part, mount_point)
171
173
  @log.trace "Partition mounted."
172
174
  end
173
175
 
174
176
  # TODO this is shitty, I know... https://bugzilla.redhat.com/show_bug.cgi?id=507188
175
177
  def rebuild_rpm_database
176
178
  @log.debug "Cleaning RPM database..."
177
- @guestfs.sh( "rm -f /var/lib/rpm/__db.*" )
178
- @guestfs.sh( "rpm --rebuilddb" )
179
+ @guestfs.sh("rm -f /var/lib/rpm/__db.*")
180
+ @guestfs.sh("rpm --rebuilddb")
179
181
  @log.debug "Cleaning RPM database finished."
180
182
  end
181
183
 
@@ -183,24 +185,33 @@ module BoxGrinder
183
185
  root_partition = nil
184
186
 
185
187
  @guestfs.list_partitions.each do |partition|
186
- mount_partition( partition, '/' )
187
- if @guestfs.exists( '/sbin/e2label' ) != 0
188
+ mount_partition(partition, '/')
189
+
190
+ # TODO: use this http://libguestfs.org/guestfs.3.html#guestfs_vfs_label
191
+ if @guestfs.exists('/sbin/e2label') != 0
188
192
  root_partition = partition
189
193
  break
190
194
  end
191
- @guestfs.umount( partition )
195
+ @guestfs.umount(partition)
192
196
  end
193
197
 
194
- raise "No root partition found for '#{File.basename( @raw_disk )}' disk!" if root_partition.nil?
198
+ raise "No root partition found for '#{File.basename(@raw_disk)}' disk!" if root_partition.nil?
195
199
 
196
200
  @guestfs.list_partitions.each do |partition|
197
201
  next if partition == root_partition
198
- mount_partition( partition, @guestfs.sh( "/sbin/e2label #{partition}" ).chomp.strip )
202
+ mount_partition(partition, @guestfs.sh("/sbin/e2label #{partition}").chomp.strip)
199
203
  end
200
204
  end
201
205
 
202
- def augeas( &block )
203
- AugeasHelper.new( @guestfs, self, :log => @log ).edit( &block )
206
+ def sh(cmd, options = {})
207
+ arch = options[:arch] || `uname -m`.chomp.strip
208
+
209
+ @log.debug "Executing #{cmd}"
210
+ @guestfs.sh("setarch #{arch} << SETARCH_EOF\n#{cmd.gsub('$', '\$')}\nSETARCH_EOF\n")
211
+ end
212
+
213
+ def augeas(&block)
214
+ AugeasHelper.new(@guestfs, self, :log => @log).edit(&block)
204
215
  end
205
216
  end
206
217
  end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -66,4 +64,4 @@ module BoxGrinder
66
64
  @log.debug "Kernel image recreated."
67
65
  end
68
66
  end
69
- end
67
+ end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -29,46 +27,32 @@ module BoxGrinder
29
27
  @exec_helper = options[:exec_helper] || ExecHelper.new({:log => @log})
30
28
  end
31
29
 
32
- def package(deliverables, options = {})
33
- type = options[:type] || :tar
34
- plugin_info = options[:plugin_info]
35
-
36
- platform = 'raw'
37
-
38
- unless plugin_info.nil?
39
- if plugin_info[:type] == :platform
40
- platform = plugin_info[:name].to_s
41
- end
42
- end
43
-
30
+ def package(deliverables, package, type = :tar)
44
31
  files = []
45
32
 
46
33
  deliverables.each_value do |file|
47
34
  files << File.basename(file)
48
35
  end
49
36
 
50
- #TODO rewrite this to use deliverables and previous_deliverables
51
- package_path = "#{@dir.tmp}/#{@appliance_config.name}-#{@appliance_config.version}.#{@appliance_config.release}-#{@appliance_config.os.name}-#{@appliance_config.os.version}-#{@appliance_config.hardware.arch}-#{platform}.tgz"
52
-
53
- if File.exists?(package_path)
54
- @log.info "Package of #{type} type for #{@appliance_config.name} appliance and #{platform} platform already exists, skipping."
55
- return package_path
37
+ if File.exists?(package)
38
+ @log.info "Package of #{type} type for #{@appliance_config.name} appliance already exists, skipping."
39
+ return package
56
40
  end
57
41
 
58
- FileUtils.mkdir_p(File.dirname(package_path))
42
+ FileUtils.mkdir_p(File.dirname(package))
59
43
 
60
- @log.info "Packaging #{@appliance_config.name} appliance for #{platform} platform to #{type}..."
44
+ @log.info "Packaging #{@appliance_config.name} appliance to #{type}..."
61
45
 
62
46
  case type
63
47
  when :tar
64
- @exec_helper.execute "tar -C #{File.dirname(deliverables[:disk])} -cvzf '#{package_path}' #{files.join(' ')}"
48
+ @exec_helper.execute "tar -C #{File.dirname(deliverables[:disk])} -cvzf '#{package}' #{files.join(' ')}"
65
49
  else
66
50
  raise "Only tar format is currently supported."
67
51
  end
68
52
 
69
53
  @log.info "Appliance #{@appliance_config.name} packaged."
70
54
 
71
- package_path
55
+ package
72
56
  end
73
57
  end
74
- end
58
+ end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -86,4 +84,4 @@ module BoxGrinder
86
84
  attr_reader :platform_plugins
87
85
  attr_reader :delivery_plugins
88
86
  end
89
- end
87
+ end
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -1,11 +1,9 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
5
3
  #
6
4
  # This is free software; you can redistribute it and/or modify it
7
5
  # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
6
+ # published by the Free Software Foundation; either version 3 of
9
7
  # the License, or (at your option) any later version.
10
8
  #
11
9
  # This software is distributed in the hope that it will be useful,
@@ -28,13 +26,13 @@ require 'logger'
28
26
  module BoxGrinder
29
27
  class BasePlugin
30
28
  def init(config, appliance_config, options = {})
31
- @config = config
32
- @appliance_config = appliance_config
33
- @options = options
29
+ @config = config
30
+ @appliance_config = appliance_config
31
+ @options = options
34
32
 
35
- @log = options[:log] || Logger.new(STDOUT)
36
- @exec_helper = options[:exec_helper] || ExecHelper.new( :log => @log )
37
- @image_helper = options[:image_helper] || ImageHelper.new( :log => @log )
33
+ @log = options[:log] || Logger.new(STDOUT)
34
+ @exec_helper = options[:exec_helper] || ExecHelper.new(:log => @log)
35
+ @image_helper = options[:image_helper] || ImageHelper.new(:log => @log)
38
36
 
39
37
  @plugin_info = options[:plugin_info]
40
38
  @previous_plugin_info = options[:previous_plugin_info]
@@ -54,14 +52,14 @@ module BoxGrinder
54
52
 
55
53
  read_plugin_config
56
54
 
57
- @initialized = true
55
+ @initialized = true
58
56
 
59
57
  after_init
60
58
 
61
59
  self
62
60
  end
63
61
 
64
- def register_deliverable( deliverable )
62
+ def register_deliverable(deliverable)
65
63
  raise "You can only register deliverables after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
66
64
  raise "Please specify deliverables as Hash, not #{deliverable.class}." unless deliverable.is_a?(Hash)
67
65
 
@@ -71,7 +69,7 @@ module BoxGrinder
71
69
  end
72
70
  end
73
71
 
74
- def register_supported_os( name, versions )
72
+ def register_supported_os(name, versions)
75
73
  raise "You can register supported operating system only after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
76
74
 
77
75
  @supported_oses[name] = OpenHash.new if @supported_oses[name].nil?
@@ -94,6 +92,16 @@ module BoxGrinder
94
92
  supported
95
93
  end
96
94
 
95
+ def current_platform
96
+ platform = :raw
97
+
98
+ if @previous_plugin_info[:type] == :platform
99
+ platform = @previous_plugin_info[:name]
100
+ end unless @previous_plugin_info.nil?
101
+
102
+ platform.to_s
103
+ end
104
+
97
105
  def validate_plugin_config(fields = [], doc = nil)
98
106
  more_info = doc.nil? ? '' : "See #{doc} for more info"
99
107
 
@@ -108,11 +116,11 @@ module BoxGrinder
108
116
  raise "You can only execute the plugin after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
109
117
  end
110
118
 
111
- def run( *args )
119
+ def run(*args)
112
120
  FileUtils.rm_rf @dir.tmp
113
121
  FileUtils.mkdir_p @dir.tmp
114
122
 
115
- execute( *args )
123
+ execute(*args)
116
124
 
117
125
  after_execute
118
126
  end
@@ -123,7 +131,7 @@ module BoxGrinder
123
131
  def after_execute
124
132
  @deliverables.each do |name, path|
125
133
  @log.trace "Moving '#{path}' deliverable to target destination '#{@target_deliverables[name]}'..."
126
- FileUtils.mv( path, @target_deliverables[name] )
134
+ FileUtils.mv(path, @target_deliverables[name])
127
135
  end
128
136
 
129
137
  FileUtils.rm_rf @dir.tmp
@@ -164,4 +172,4 @@ module BoxGrinder
164
172
  end
165
173
  end
166
174
  end
167
- end
175
+ end
@@ -0,0 +1,69 @@
1
+ %global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
2
+ %global gemname boxgrinder-build
3
+ %global geminstdir %{gemdir}/gems/%{gemname}-%{version}
4
+ %global rubyabi 1.8
5
+
6
+ Summary: A tool for creating appliances from simple plain text files
7
+ Name: rubygem-%{gemname}
8
+ Version: 0.6.1
9
+ Release: 1%{?dist}
10
+ Group: Development/Languages
11
+ License: LGPL
12
+ URL: http://www.jboss.org/boxgrinder
13
+ Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
14
+
15
+ Requires: ruby(abi) = %{rubyabi}
16
+ Requires: rubygems >= 1.2
17
+ Requires: ruby >= 0
18
+ Requires: rubygem(commander) => 4.0.3
19
+ Requires: rubygem(commander) < 4.1
20
+ Requires: rubygem(boxgrinder-core) => 0.1.0
21
+ Requires: rubygem(boxgrinder-core) < 0.2
22
+ BuildRequires: rubygems >= 1.2
23
+ BuildRequires: ruby >= 0
24
+
25
+ BuildArch: noarch
26
+ Provides: rubygem(%{gemname}) = %{version}
27
+
28
+ %description
29
+ A tool for creating appliances from simple plain text files for various
30
+ virtual environments
31
+
32
+ %prep
33
+
34
+ %build
35
+
36
+ %install
37
+ rm -rf %{buildroot}
38
+ mkdir -p %{buildroot}%{gemdir}
39
+ gem install --local --install-dir %{buildroot}%{gemdir} \
40
+ --force --rdoc %{SOURCE0}
41
+ mkdir -p %{buildroot}/%{_bindir}
42
+ mv %{buildroot}%{gemdir}/bin/* %{buildroot}/%{_bindir}
43
+ rmdir %{buildroot}%{gemdir}/bin
44
+ find %{buildroot}%{geminstdir}/bin -type f | xargs chmod a+x
45
+
46
+ %clean
47
+ rm -rf %{buildroot}
48
+
49
+ %files
50
+ %defattr(-, root, root, -)
51
+ %{_bindir}/boxgrinder-build
52
+ %dir %{geminstdir}
53
+ %{geminstdir}/bin
54
+ %{geminstdir}/lib
55
+ %doc %{gemdir}/doc/%{gemname}-%{version}
56
+ %doc %{geminstdir}/%{gemname}.gemspec
57
+ %doc %{geminstdir}/rubygem-%{gemname}.spec
58
+ %doc %{geminstdir}/CHANGELOG
59
+ %doc %{geminstdir}/LICENSE
60
+ %doc %{geminstdir}/README
61
+ %doc %{geminstdir}/Manifest
62
+ %doc %{geminstdir}/Rakefile
63
+ %doc %{geminstdir}/spec
64
+ %{gemdir}/cache/%{gemname}-%{version}.gem
65
+ %{gemdir}/specifications/%{gemname}-%{version}.gemspec
66
+
67
+ %changelog
68
+ * Mon Oct 18 2010 <mgoldman@redhat.com> - 0.6.1-1
69
+ - Initial package
data/spec/Rakefile CHANGED
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'rake'
2
20
  require 'spec/rake/spectask'
3
21
 
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/appliance'
2
20
  require 'rspec/rspec-config-helper'
3
21
  require 'ostruct'
@@ -180,7 +198,7 @@ module BoxGrinder
180
198
 
181
199
  delivery_plugin = mock('S3 Plugin')
182
200
  delivery_plugin.should_receive(:init)
183
- delivery_plugin.should_receive(:run).with(no_args())
201
+ delivery_plugin.should_receive(:run).with( :same )
184
202
 
185
203
  @plugin_manager.should_receive(:plugins).and_return( { :delivery => "something" } )
186
204
  @plugin_manager.should_receive(:initialize_plugin).with(:delivery, :same).and_return([ delivery_plugin, {:class => Appliance, :type => :delivery, :name => :same, :full_name => "A plugin"} ] )
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/helpers/appliance-customize-helper'
2
20
  require 'rspec/rspec-config-helper'
3
21
 
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/helpers/augeas-helper'
2
20
 
3
21
  module BoxGrinder
@@ -18,6 +36,7 @@ module BoxGrinder
18
36
  end
19
37
 
20
38
  it "should change configuration for one file" do
39
+ @guestfs.should_receive(:debug).with("core_pattern", ["/sysroot/core"])
21
40
  @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
22
41
  @guestfs.should_receive(:aug_init).with('/', 32)
23
42
  @guestfs.should_receive(:aug_rm).with("/augeas/load//incl[. != '/etc/ssh/sshd_config']")
@@ -31,6 +50,7 @@ module BoxGrinder
31
50
  end
32
51
 
33
52
  it "should change configuration for two files" do
53
+ @guestfs.should_receive(:debug).with("core_pattern", ["/sysroot/core"])
34
54
  @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
35
55
  @guestfs.should_receive(:exists).with('/etc/sysconfig/selinux').and_return(1)
36
56
  @guestfs.should_receive(:aug_init).with('/', 32)
@@ -47,6 +67,7 @@ module BoxGrinder
47
67
  end
48
68
 
49
69
  it "should change one configuration for two files because one file doesn't exists" do
70
+ @guestfs.should_receive(:debug).with("core_pattern", ["/sysroot/core"])
50
71
  @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
51
72
  @guestfs.should_receive(:exists).with('/etc/sysconfig/selinux').and_return(0)
52
73
  @guestfs.should_receive(:aug_init).with('/', 32)
@@ -1,14 +1,36 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/helpers/guestfs-helper'
2
20
 
3
21
  module BoxGrinder
4
22
  describe GuestFSHelper do
5
23
 
24
+ before(:all) do
25
+ @arch = `uname -m`.chomp.strip
26
+ end
27
+
6
28
  before(:each) do
7
29
  @log = Logger.new('/dev/null')
8
30
  @helper = GuestFSHelper.new('a/raw/disk', :log => @log)
9
31
  end
10
32
 
11
- def prepare_and_launch( partitions )
33
+ def prepare_and_launch(partitions)
12
34
  guetfs = mock('Guestfs')
13
35
  guetfs.should_receive(:set_append).with('noapic')
14
36
  guetfs.should_receive(:set_verbose)
@@ -18,8 +40,9 @@ module BoxGrinder
18
40
 
19
41
  guetfs.should_receive(:set_qemu).with('/usr/share/qemu-stable/bin/qemu.wrapper')
20
42
  guetfs.should_receive(:add_drive).with('a/raw/disk')
43
+ guetfs.should_receive(:set_network).with(1)
21
44
  guetfs.should_receive(:launch)
22
- guetfs.should_receive(:list_partitions).and_return( partitions )
45
+ guetfs.should_receive(:list_partitions).and_return(partitions)
23
46
 
24
47
  Guestfs.should_receive(:create).and_return(guetfs)
25
48
 
@@ -123,7 +146,24 @@ module BoxGrinder
123
146
  end
124
147
  end
125
148
 
149
+ it "execute a command for current arch" do
150
+ guestfs = mock('Guestfs')
126
151
 
152
+ @helper.should_receive(:`).with('uname -m').and_return('bleh')
153
+ @helper.instance_variable_set(:@guestfs, guestfs)
154
+
155
+ guestfs.should_receive(:sh).with("setarch bleh << SETARCH_EOF\ncommand\nSETARCH_EOF\n")
127
156
 
157
+ @helper.sh("command")
158
+ end
159
+
160
+ it "execute a command for specified arch" do
161
+ guestfs = mock('Guestfs')
162
+ @helper.instance_variable_set(:@guestfs, guestfs)
163
+
164
+ guestfs.should_receive(:sh).with("setarch arch << SETARCH_EOF\ncommand\nSETARCH_EOF\n")
165
+
166
+ @helper.sh("command", :arch => 'arch')
167
+ end
128
168
  end
129
169
  end
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/helpers/linux-helper'
2
20
 
3
21
  module BoxGrinder
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/helpers/package-helper'
2
20
 
3
21
  module BoxGrinder
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/helpers/plugin-helper'
2
20
  require 'rspec/rspec-config-helper'
3
21
  require 'ostruct'
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/managers/plugin-manager'
2
20
 
3
21
  module BoxGrinder
@@ -1,3 +1,21 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
1
19
  require 'boxgrinder-build/plugins/base-plugin'
2
20
  require 'rspec/rspec-config-helper'
3
21
 
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: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 0
10
- version: 0.6.0
9
+ - 1
10
+ version: 0.6.1
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-10-12 00:00:00 +02:00
18
+ date: 2010-11-02 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: 27
45
+ hash: 25
46
46
  segments:
47
47
  - 0
48
48
  - 1
49
- - 0
50
- version: 0.1.0
49
+ - 1
50
+ version: 0.1.1
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.
@@ -88,6 +88,7 @@ files:
88
88
  - lib/boxgrinder-build/helpers/plugin-helper.rb
89
89
  - lib/boxgrinder-build/managers/plugin-manager.rb
90
90
  - lib/boxgrinder-build/plugins/base-plugin.rb
91
+ - rubygem-boxgrinder-build.spec
91
92
  - spec/Rakefile
92
93
  - spec/appliance-spec.rb
93
94
  - spec/helpers/appliance-customize-helper-spec.rb