boxgrinder-build 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ v0.6.2
3
+
4
+ * [BGBUILD-84] Don't use in libguestfs qemu-kvm where hardware accleration isn't available
5
+
2
6
  v0.6.1
3
7
 
4
8
  * [BGBUILD-81] post command execution w/ setarch breaks commands which are scripts
@@ -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.1"
5
+ s.version = "0.6.2"
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-02}
9
+ s.date = %q{2010-11-04}
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}
@@ -19,6 +19,8 @@
19
19
  require 'boxgrinder-build/helpers/augeas-helper'
20
20
  require 'guestfs'
21
21
  require 'logger'
22
+ require 'open-uri'
23
+ require 'rbconfig'
22
24
 
23
25
  module BoxGrinder
24
26
  class SilencerProxy
@@ -87,6 +89,26 @@ module BoxGrinder
87
89
 
88
90
  attr_reader :guestfs
89
91
 
92
+ def hw_virtualization_available?
93
+ @log.trace "Checking if HW virtualization is available..."
94
+
95
+ begin
96
+ open('http://169.254.169.254/1.0/meta-data/local-ipv4')
97
+ ec2 = true
98
+ rescue
99
+ ec2 = false
100
+ end
101
+
102
+ if `cat /proc/cpuinfo | grep flags | grep vmx | wc -l`.chomp.strip.to_i > 0 and !ec2
103
+ @log.trace "HW acceleration available."
104
+ return true
105
+ end
106
+
107
+ @log.trace "HW acceleration not available."
108
+
109
+ false
110
+ end
111
+
90
112
  def customize
91
113
  read_pipe, write_pipe = IO.pipe
92
114
 
@@ -116,21 +138,21 @@ module BoxGrinder
116
138
 
117
139
  @guestfs = pipe.nil? ? Guestfs::create : Guestfs::create.redirect(pipe)
118
140
 
119
- # TODO remove this, https://bugzilla.redhat.com/show_bug.cgi?id=502058
141
+ # https://bugzilla.redhat.com/show_bug.cgi?id=502058
120
142
  @guestfs.set_append("noapic")
121
143
 
122
144
  @log.trace "Setting debug + trace..."
123
145
  @guestfs.set_verbose(1)
124
146
  @guestfs.set_trace(1)
125
147
 
126
- # workaround for latest qemu
127
- # It'll only work if qemu-stable package is installed. It is installed by default on meta-appliance
128
- # TODO wait for stable qemu and remove this
129
- # Looks like in F13 (qemu-img-0.12.3-8.fc13.i686) this is fixed
130
- qemu_wrapper = "/usr/share/qemu-stable/bin/qemu.wrapper"
148
+ unless hw_virtualization_available?
149
+ qemu_wrapper = (RbConfig::CONFIG['host_cpu'].eql?('x86_64') ? "/usr/bin/qemu-system-x86_64" : "/usr/bin/qemu")
131
150
 
132
- if File.exists?(qemu_wrapper)
133
- @guestfs.set_qemu(qemu_wrapper)
151
+ if File.exists?(qemu_wrapper)
152
+ @log.trace "Setting QEMU wrapper to #{qemu_wrapper}..."
153
+ @guestfs.set_qemu(qemu_wrapper)
154
+ @log.trace "QEMU wrapper set."
155
+ end
134
156
  end
135
157
 
136
158
  @log.trace "Adding drive '#{@raw_disk}'..."
@@ -5,7 +5,7 @@
5
5
 
6
6
  Summary: A tool for creating appliances from simple plain text files
7
7
  Name: rubygem-%{gemname}
8
- Version: 0.6.1
8
+ Version: 0.6.2
9
9
  Release: 1%{?dist}
10
10
  Group: Development/Languages
11
11
  License: LGPL
@@ -17,7 +17,7 @@ Requires: rubygems >= 1.2
17
17
  Requires: ruby >= 0
18
18
  Requires: rubygem(commander) => 4.0.3
19
19
  Requires: rubygem(commander) < 4.1
20
- Requires: rubygem(boxgrinder-core) => 0.1.0
20
+ Requires: rubygem(boxgrinder-core) => 0.1.1
21
21
  Requires: rubygem(boxgrinder-core) < 0.2
22
22
  BuildRequires: rubygems >= 1.2
23
23
  BuildRequires: ruby >= 0
@@ -65,5 +65,8 @@ rm -rf %{buildroot}
65
65
  %{gemdir}/specifications/%{gemname}-%{version}.gemspec
66
66
 
67
67
  %changelog
68
+ * Wed Nov 03 2010 <mgoldman@redhat.com> - 0.6.2-1
69
+ - [BGBUILD-84] Don't use in libguestfs qemu-kvm where hardware accleration isn't available
70
+
68
71
  * Mon Oct 18 2010 <mgoldman@redhat.com> - 0.6.1-1
69
72
  - Initial package
@@ -30,15 +30,15 @@ module BoxGrinder
30
30
  @helper = GuestFSHelper.new('a/raw/disk', :log => @log)
31
31
  end
32
32
 
33
- def prepare_and_launch(partitions)
33
+ def prepare_and_launch(partitions, wrapper = nil)
34
34
  guetfs = mock('Guestfs')
35
35
  guetfs.should_receive(:set_append).with('noapic')
36
36
  guetfs.should_receive(:set_verbose)
37
37
  guetfs.should_receive(:set_trace)
38
38
 
39
- File.should_receive(:exists?).with('/usr/share/qemu-stable/bin/qemu.wrapper').and_return(true)
39
+ @helper.should_receive(:hw_virtualization_available?).and_return(true)
40
40
 
41
- guetfs.should_receive(:set_qemu).with('/usr/share/qemu-stable/bin/qemu.wrapper')
41
+ guetfs.should_receive(:set_qemu).with(wrapper) unless wrapper.nil?
42
42
  guetfs.should_receive(:add_drive).with('a/raw/disk')
43
43
  guetfs.should_receive(:set_network).with(1)
44
44
  guetfs.should_receive(:launch)
@@ -165,5 +165,24 @@ module BoxGrinder
165
165
 
166
166
  @helper.sh("command", :arch => 'arch')
167
167
  end
168
+
169
+ describe ".hw_virtualization_available?" do
170
+ it "should return true if HW acceleration is available" do
171
+ @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_raise("blah")
172
+ @helper.should_receive(:`).with('cat /proc/cpuinfo | grep flags | grep vmx | wc -l').and_return("2")
173
+ @helper.hw_virtualization_available?.should == true
174
+ end
175
+
176
+ it "should return false if no vmx flag is present" do
177
+ @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_raise("blah")
178
+ @helper.should_receive(:`).with('cat /proc/cpuinfo | grep flags | grep vmx | wc -l').and_return("0")
179
+ @helper.hw_virtualization_available?.should == false
180
+ end
181
+
182
+ it "should return false if we're on EC2" do
183
+ @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_return("IP")
184
+ @helper.hw_virtualization_available?.should == false
185
+ end
186
+ end
168
187
  end
169
188
  end
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: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 1
10
- version: 0.6.1
9
+ - 2
10
+ version: 0.6.2
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-02 00:00:00 +01:00
18
+ date: 2010-11-04 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency