vagrant-vbguest 0.6.0.pre6 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +3 -2
- data/lib/vagrant-vbguest/installer.rb +6 -6
- data/lib/vagrant-vbguest/installers/base.rb +50 -2
- data/lib/vagrant-vbguest/installers/debian.rb +1 -9
- data/lib/vagrant-vbguest/installers/linux.rb +28 -6
- data/lib/vagrant-vbguest/version.rb +1 -1
- data/locales/en.yml +1 -0
- metadata +67 -88
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## 0.6.0 (
|
1
|
+
## 0.6.0 (2012-01-13)
|
2
2
|
|
3
3
|
- Debian installer now cope with missing `dkms` package [GH-30]
|
4
4
|
- Fixed some issues when runnig on just creating boxes [GH-31]
|
@@ -7,7 +7,8 @@
|
|
7
7
|
- Installers no longer are shell scripts, but ruby classes
|
8
8
|
- Users may pass in their own installer classes
|
9
9
|
(yes! plugins in plugins)
|
10
|
-
- New `sprintf` style `%{version}` placeholder for iso download path
|
10
|
+
- New `sprintf` style `%{version}` placeholder for iso download path.
|
11
|
+
(old `$VBOX_VERSION` placeholder still working)
|
11
12
|
- Revisited command arguments to not just mirror config values:
|
12
13
|
- New `--do` argument: force-run one of those commands:
|
13
14
|
* `start` : Try to start the GuestAdditions Service
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module VagrantVbguest
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
##
|
4
|
+
# Dispatches the installation process to a rigistered
|
5
|
+
# Installer implementation.
|
5
6
|
class Installer
|
6
7
|
|
7
8
|
class NoInstallerFoundError < Vagrant::Errors::VagrantError
|
@@ -86,19 +87,19 @@ module VagrantVbguest
|
|
86
87
|
|
87
88
|
def guest_version(reload=false)
|
88
89
|
installer = guest_installer
|
89
|
-
raise NoInstallerFoundError, :method => 'check
|
90
|
+
raise NoInstallerFoundError, :method => 'check guest version of' if !installer
|
90
91
|
installer.guest_version(reload)
|
91
92
|
end
|
92
93
|
|
93
94
|
def host_version
|
94
95
|
installer = guest_installer
|
95
|
-
raise NoInstallerFoundError, :method => 'check
|
96
|
+
raise NoInstallerFoundError, :method => 'check host version of' if !installer
|
96
97
|
installer.host_version
|
97
98
|
end
|
98
99
|
|
99
100
|
def running?
|
100
101
|
installer = guest_installer
|
101
|
-
raise NoInstallerFoundError, :method => 'check
|
102
|
+
raise NoInstallerFoundError, :method => 'check current state of' if !installer
|
102
103
|
installer.running?
|
103
104
|
end
|
104
105
|
|
@@ -108,7 +109,6 @@ module VagrantVbguest
|
|
108
109
|
#
|
109
110
|
# @return [Installers::Base]
|
110
111
|
def guest_installer
|
111
|
-
|
112
112
|
@guest_installer ||= if @options[:installer].is_a? Class
|
113
113
|
@options[:installer].new(@vm)
|
114
114
|
else
|
@@ -129,6 +129,9 @@ module VagrantVbguest
|
|
129
129
|
vm.driver.version
|
130
130
|
end
|
131
131
|
|
132
|
+
# Determinates the version of the GuestAdditions installer in use
|
133
|
+
#
|
134
|
+
# @return [String] The version code of the GuestAdditions installer
|
132
135
|
def installer_version(path_to_installer)
|
133
136
|
version = nil
|
134
137
|
@vm.channel.sudo("#{path_to_installer} --info", :error_check => false) do |type, data|
|
@@ -139,18 +142,39 @@ module VagrantVbguest
|
|
139
142
|
version
|
140
143
|
end
|
141
144
|
|
145
|
+
# Helper to yield a warning message to the user, that the installation
|
146
|
+
# will start _now_.
|
147
|
+
# The message includes the host and installer version strings.
|
142
148
|
def yield_installation_waring(path_to_installer)
|
143
149
|
@vm.ui.warn I18n.t("vagrant.plugins.vbguest.installing#{@options[:force] ? '_forced' : ''}",
|
144
150
|
:guest_version => guest_version,
|
145
|
-
:installer_version => installer_version(path_to_installer) || "unknown")
|
151
|
+
:installer_version => installer_version(path_to_installer) || I18n.t("vagrant.plugins.vbguest.unknown"))
|
146
152
|
end
|
147
153
|
|
154
|
+
# Helper to yield a warning message to the user, that the installation
|
155
|
+
# will be rebuild using the installed GuestAdditions.
|
156
|
+
# The message includes the host and installer version strings.
|
148
157
|
def yield_rebuild_warning
|
149
158
|
@vm.ui.warn I18n.t("vagrant.plugins.vbguest.rebuild#{@options[:force] ? '_forced' : ''}",
|
150
159
|
:guest_version => guest_version(true),
|
151
160
|
:host_version => host_version)
|
152
161
|
end
|
153
162
|
|
163
|
+
# GuestAdditions-iso-file-detection-magig.
|
164
|
+
#
|
165
|
+
# Detectio runs in those stages:
|
166
|
+
# 1. Uses the +iso_path+ config option, if present and not set to +:auto+
|
167
|
+
# 2. Look out for a local iso file
|
168
|
+
# 3. Use the default web URI
|
169
|
+
#
|
170
|
+
# If the detected or configured path is not a local file and remote downloads
|
171
|
+
# are allowed (the config option +:no_remote+ is NOT set) it will try to
|
172
|
+
# download that file into a temp file using Vagrants Downloaders.
|
173
|
+
# If remote downloads are prohibited (the config option +:no_remote+ IS set)
|
174
|
+
# a +VagrantVbguest::IsoPathAutodetectionError+ will be thrown
|
175
|
+
#
|
176
|
+
# @return [String] A absolute path to the GuestAdditions iso file.
|
177
|
+
# This might be a temp-file, e.g. when downloaded from web.
|
154
178
|
def iso_file
|
155
179
|
@iso_file ||= begin
|
156
180
|
iso_path = options[:iso_path]
|
@@ -179,18 +203,35 @@ module VagrantVbguest
|
|
179
203
|
end
|
180
204
|
end
|
181
205
|
|
206
|
+
# Default web URI, where GuestAdditions iso file can be downloaded.
|
207
|
+
#
|
208
|
+
# @return [String] A URI template containing the versions placeholder.
|
182
209
|
def web_iso_path
|
183
210
|
"http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso"
|
184
211
|
end
|
185
212
|
|
213
|
+
# Finds GuestAdditions iso file on the host system.
|
214
|
+
# Returns +nil+ if none found.
|
215
|
+
#
|
216
|
+
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
186
217
|
def local_iso_path
|
187
218
|
media_manager_iso || guess_iso
|
188
219
|
end
|
189
220
|
|
221
|
+
# Helper method which queries the VirtualBox media manager
|
222
|
+
# for a +VBoxGuestAdditions.iso+ file.
|
223
|
+
# Returns +nil+ if none found.
|
224
|
+
#
|
225
|
+
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
190
226
|
def media_manager_iso
|
191
227
|
(m = vm.driver.execute('list', 'dvds').match(/^.+:\s+(.*VBoxGuestAdditions.iso)$/i)) && m[1]
|
192
228
|
end
|
193
229
|
|
230
|
+
# Makes an educated guess where the GuestAdditions iso file
|
231
|
+
# could be found on the host system depending on the OS.
|
232
|
+
# Returns +nil+ if no the file is not in it's place.
|
233
|
+
#
|
234
|
+
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
194
235
|
def guess_iso
|
195
236
|
path_platform = if Vagrant::Util::Platform.linux?
|
196
237
|
"/usr/share/virtualbox/VBoxGuestAdditions.iso"
|
@@ -207,13 +248,20 @@ module VagrantVbguest
|
|
207
248
|
end
|
208
249
|
|
209
250
|
# A helper method to handle the GuestAdditions iso file upload
|
251
|
+
# into the guest box.
|
252
|
+
# The file will uploaded to the location given by the +tmp_path+ method.
|
253
|
+
#
|
254
|
+
# @example Default upload
|
255
|
+
# upload(iso_file)
|
256
|
+
#
|
257
|
+
# @param [String] Path of the file to upload to the +tmp_path*
|
210
258
|
def upload(file)
|
211
259
|
vm.ui.info(I18n.t("vagrant.plugins.vbguest.start_copy_iso", :from => file, :to => tmp_path))
|
212
260
|
vm.channel.upload(file, tmp_path)
|
213
261
|
end
|
214
262
|
|
215
263
|
# A helper method to delete the uploaded GuestAdditions iso file
|
216
|
-
# from the guest
|
264
|
+
# from the guest box
|
217
265
|
def cleanup
|
218
266
|
@download.cleanup if @download
|
219
267
|
vm.channel.execute("test -f #{tmp_path} && rm #{tmp_path}", :error_check => false) do |type, data|
|
@@ -15,15 +15,7 @@ module VagrantVbguest
|
|
15
15
|
vm.channel.sudo('apt-get update', opts, &block)
|
16
16
|
vm.channel.sudo(install_dependencies_cmd, opts, &block)
|
17
17
|
end
|
18
|
-
|
19
|
-
vm.channel.sudo("mount #{tmp_path} -o loop #{mount_point}", opts, &block)
|
20
|
-
|
21
|
-
installer = File.join(mount_point, 'VBoxLinuxAdditions.run')
|
22
|
-
yield_installation_waring(installer)
|
23
|
-
|
24
|
-
vm.channel.sudo("#{installer} --nox11", opts, &block)
|
25
|
-
|
26
|
-
vm.channel.sudo("umount #{mount_point}", opts, &block)
|
18
|
+
super
|
27
19
|
end
|
28
20
|
|
29
21
|
protected
|
@@ -39,12 +39,12 @@ module VagrantVbguest
|
|
39
39
|
|
40
40
|
# a generic way of installing GuestAdditions assuming all
|
41
41
|
# dependencies on the guest are installed
|
42
|
-
def install(
|
43
|
-
vm.ui.warn I18n.t("vagrant.plugins.vbguest.installer.generic_linux_installer")
|
42
|
+
def install(opts=nil, &block)
|
43
|
+
vm.ui.warn I18n.t("vagrant.plugins.vbguest.installer.generic_linux_installer") if self.class == Linux
|
44
44
|
upload(iso_file)
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
mount_iso
|
46
|
+
execute_installer
|
47
|
+
unmount_iso
|
48
48
|
end
|
49
49
|
|
50
50
|
def running?(opts=nil, &block)
|
@@ -69,7 +69,6 @@ module VagrantVbguest
|
|
69
69
|
@guest_version
|
70
70
|
end
|
71
71
|
|
72
|
-
|
73
72
|
def rebuild(opts=nil, &block)
|
74
73
|
vm.channel.sudo('/etc/init.d/vboxadd setup', opts, &block)
|
75
74
|
end
|
@@ -79,6 +78,29 @@ module VagrantVbguest
|
|
79
78
|
vm.channel.sudo('/etc/init.d/vboxadd start', opts, &block)
|
80
79
|
end
|
81
80
|
|
81
|
+
|
82
|
+
# A generic helper method to execute the installer. The iso file
|
83
|
+
# has to be mounted on +mount_point+.
|
84
|
+
# This also yields a installation warning to the user.
|
85
|
+
def execute_installer(opts=nil, &block)
|
86
|
+
installer = File.join(mount_point, 'VBoxLinuxAdditions.run')
|
87
|
+
yield_installation_waring(installer)
|
88
|
+
vm.channel.sudo("#{installer} --nox11", opts, &block)
|
89
|
+
end
|
90
|
+
|
91
|
+
# A generic helper method for mounting the GuestAdditions iso file
|
92
|
+
# on most linux system.
|
93
|
+
# Mounts the given uploaded file from +tmp_path+ on +mount_point+.
|
94
|
+
def mount_iso(opts=nil, &block)
|
95
|
+
vm.channel.sudo("mount #{tmp_path} -o loop #{mount_point}", opts, &block)
|
96
|
+
end
|
97
|
+
|
98
|
+
# A generic helper method for un-mounting the GuestAdditions iso file
|
99
|
+
# on most linux system
|
100
|
+
# Unmounts the +mount_point+.
|
101
|
+
def unmount_iso(opts=nil, &block)
|
102
|
+
vm.channel.sudo("umount #{mount_point}", opts, &block)
|
103
|
+
end
|
82
104
|
end
|
83
105
|
end
|
84
106
|
end
|
data/locales/en.yml
CHANGED
metadata
CHANGED
@@ -1,98 +1,88 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vbguest
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 6
|
9
|
-
- 0
|
10
|
-
- pre
|
11
|
-
- 6
|
12
|
-
version: 0.6.0.pre6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
5
|
+
prerelease:
|
13
6
|
platform: ruby
|
14
|
-
authors:
|
7
|
+
authors:
|
15
8
|
- Robert Schulze
|
16
9
|
autorequire:
|
17
10
|
bindir: bin
|
18
11
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-01-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
23
15
|
name: micromachine
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
26
17
|
none: false
|
27
|
-
requirements:
|
18
|
+
requirements:
|
28
19
|
- - ~>
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 31
|
31
|
-
segments:
|
32
|
-
- 1
|
33
|
-
- 0
|
34
|
-
- 4
|
20
|
+
- !ruby/object:Gem::Version
|
35
21
|
version: 1.0.4
|
36
22
|
type: :runtime
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: i18n
|
40
23
|
prerelease: false
|
41
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.4
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: i18n
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
42
33
|
none: false
|
43
|
-
requirements:
|
34
|
+
requirements:
|
44
35
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
hash: 7
|
47
|
-
segments:
|
48
|
-
- 0
|
49
|
-
- 6
|
50
|
-
- 0
|
36
|
+
- !ruby/object:Gem::Version
|
51
37
|
version: 0.6.0
|
52
38
|
type: :runtime
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: log4r
|
56
39
|
prerelease: false
|
57
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
41
|
none: false
|
59
|
-
requirements:
|
42
|
+
requirements:
|
60
43
|
- - ~>
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.6.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: log4r
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
67
53
|
version: 1.1.9
|
68
54
|
type: :runtime
|
69
|
-
version_requirements: *id003
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: bundler
|
72
55
|
prerelease: false
|
73
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
57
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.9
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
83
69
|
version: 1.2.0
|
84
70
|
type: :development
|
85
|
-
|
86
|
-
|
87
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.2.0
|
78
|
+
description: A Vagrant plugin which automatically installs the host's VirtualBox Guest
|
79
|
+
Additions on the guest system.
|
80
|
+
email:
|
88
81
|
- robert@dotless.de
|
89
82
|
executables: []
|
90
|
-
|
91
83
|
extensions: []
|
92
|
-
|
93
84
|
extra_rdoc_files: []
|
94
|
-
|
95
|
-
files:
|
85
|
+
files:
|
96
86
|
- .gitignore
|
97
87
|
- CHANGELOG.md
|
98
88
|
- Gemfile
|
@@ -118,39 +108,28 @@ files:
|
|
118
108
|
- locales/en.yml
|
119
109
|
- vagrant-vbguest.gemspec
|
120
110
|
homepage: https://github.com/dotless-de/vagrant-vbguest
|
121
|
-
licenses:
|
111
|
+
licenses:
|
122
112
|
- MIT
|
123
113
|
post_install_message:
|
124
114
|
rdoc_options: []
|
125
|
-
|
126
|
-
require_paths:
|
115
|
+
require_paths:
|
127
116
|
- lib
|
128
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
118
|
none: false
|
130
|
-
requirements:
|
131
|
-
- -
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
|
134
|
-
|
135
|
-
- 0
|
136
|
-
version: "0"
|
137
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
124
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
hash: 23
|
143
|
-
segments:
|
144
|
-
- 1
|
145
|
-
- 3
|
146
|
-
- 6
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
147
128
|
version: 1.3.6
|
148
129
|
requirements: []
|
149
|
-
|
150
130
|
rubyforge_project:
|
151
131
|
rubygems_version: 1.8.24
|
152
132
|
signing_key:
|
153
133
|
specification_version: 3
|
154
134
|
summary: A Vagrant plugin to install the VirtualBoxAdditions into the guest VM
|
155
135
|
test_files: []
|
156
|
-
|