vagrant-vbguest 0.6.0.pre6 → 0.6.0
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.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
|
-
|