vanagon 0.14.3 → 0.15.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.
- checksums.yaml +4 -4
- data/bin/build +1 -1
- data/bin/build_host_info +1 -1
- data/bin/inspect +1 -1
- data/bin/render +1 -1
- data/bin/ship +1 -1
- data/lib/vanagon/component/dsl.rb +4 -4
- data/lib/vanagon/component/source/git.rb +7 -7
- data/lib/vanagon/component/source/http.rb +2 -2
- data/lib/vanagon/component/source/local.rb +4 -4
- data/lib/vanagon/component.rb +10 -10
- data/lib/vanagon/driver.rb +8 -8
- data/lib/vanagon/engine/base.rb +1 -1
- data/lib/vanagon/engine/docker.rb +1 -1
- data/lib/vanagon/engine/ec2.rb +5 -5
- data/lib/vanagon/engine/hardware.rb +3 -3
- data/lib/vanagon/engine/pooler.rb +3 -3
- data/lib/vanagon/environment.rb +4 -4
- data/lib/vanagon/platform/deb.rb +10 -1
- data/lib/vanagon/platform/dsl.rb +14 -0
- data/lib/vanagon/platform/osx.rb +1 -0
- data/lib/vanagon/platform/rpm/aix.rb +1 -0
- data/lib/vanagon/platform/rpm/wrl.rb +1 -1
- data/lib/vanagon/platform/rpm.rb +0 -3
- data/lib/vanagon/platform/solaris_10.rb +3 -2
- data/lib/vanagon/platform.rb +54 -10
- data/lib/vanagon/project/dsl.rb +1 -1
- data/lib/vanagon/project.rb +25 -7
- data/lib/vanagon/utilities.rb +4 -4
- data/lib/vanagon.rb +2 -2
- data/resources/Makefile.erb +2 -2
- data/resources/deb/control.erb +3 -3
- data/resources/rpm/project.spec.erb +18 -8
- data/spec/lib/vanagon/component/dsl_spec.rb +10 -0
- data/spec/lib/vanagon/platform/osx_spec.rb +21 -0
- data/spec/lib/vanagon/platform/rpm/aix_spec.rb +1 -1
- data/spec/lib/vanagon/platform/solaris_10_spec.rb +29 -0
- data/spec/lib/vanagon/project/dsl_spec.rb +164 -16
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29674503cd814cb61b44c6077a9f92b921e0a3a9
|
4
|
+
data.tar.gz: 41bc417df34897e2f7b934c7a2dc8015d150c020
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f56c460a3243eef19ccf1344e1e02e6cf0d746f9f7358f0457fb6e08be08c8e07aef31d9494792d7c0340c11c4506f148b78d0608b4edcc7d52397f069800b2
|
7
|
+
data.tar.gz: 2f910455c317ab05665d70561207d251c1fd29dc942797b9fa4e57b5ac617a4f40314ad83d7af377011eaafe2ebe26152bc3d9486f897e6be09b34ffbb4183f5
|
data/bin/build
CHANGED
data/bin/build_host_info
CHANGED
data/bin/inspect
CHANGED
data/bin/render
CHANGED
data/bin/ship
CHANGED
@@ -397,23 +397,23 @@ class Vanagon
|
|
397
397
|
# @param env [Hash] mapping of keys to values to add to the environment for the component
|
398
398
|
def environment(*env) # rubocop:disable Metrics/AbcSize
|
399
399
|
if env.size == 1 && env.first.is_a?(Hash)
|
400
|
-
warn <<-
|
400
|
+
warn <<-WARNING.undent
|
401
401
|
the component DSL method signature #environment({Key => Value}) is deprecated
|
402
402
|
and will be removed by Vanagon 1.0.0.
|
403
403
|
|
404
404
|
Please update your project configurations to use the form:
|
405
405
|
#environment(key, value)
|
406
|
-
|
406
|
+
WARNING
|
407
407
|
return @component.environment.merge!(env.first)
|
408
408
|
elsif env.size == 2
|
409
409
|
return @component.environment[env.first] = env.last
|
410
410
|
end
|
411
|
-
raise ArgumentError, <<-
|
411
|
+
raise ArgumentError, <<-WARNING.undent
|
412
412
|
component DSL method #environment only accepts a single Hash (deprecated)
|
413
413
|
or a key-value pair (preferred):
|
414
414
|
environment({"KEY" => "value"})
|
415
415
|
environment("KEY", "value")
|
416
|
-
|
416
|
+
WARNING
|
417
417
|
end
|
418
418
|
|
419
419
|
# Checks that the array of pkg_state is valid (install AND/OR upgrade).
|
@@ -29,7 +29,7 @@ class Vanagon
|
|
29
29
|
|
30
30
|
# Default options used when cloning; this may expand
|
31
31
|
# or change over time.
|
32
|
-
def default_options
|
32
|
+
def default_options # rubocop:disable Lint/DuplicateMethods
|
33
33
|
@default_options ||= { ref: "HEAD" }
|
34
34
|
end
|
35
35
|
private :default_options
|
@@ -71,7 +71,7 @@ class Vanagon
|
|
71
71
|
# There is no md5 to manually verify here, so this is a noop.
|
72
72
|
def verify
|
73
73
|
# nothing to do here, so just tell users that and return
|
74
|
-
|
74
|
+
warn "Nothing to verify for '#{dirname}' (using Git reference '#{ref}')"
|
75
75
|
end
|
76
76
|
|
77
77
|
# The dirname to reference when building from the repo
|
@@ -82,7 +82,7 @@ class Vanagon
|
|
82
82
|
end
|
83
83
|
|
84
84
|
# Use `git describe` to lazy-load a version for this component
|
85
|
-
def version
|
85
|
+
def version # rubocop:disable Lint/DuplicateMethods
|
86
86
|
@version ||= describe
|
87
87
|
end
|
88
88
|
|
@@ -117,8 +117,8 @@ class Vanagon
|
|
117
117
|
# Clone a remote repo, make noise about it, and fail entirely
|
118
118
|
# if we're unable to retrieve the remote repo
|
119
119
|
def clone!
|
120
|
-
|
121
|
-
|
120
|
+
warn "Cloning Git repo '#{url}'"
|
121
|
+
warn "Successfully cloned '#{dirname}'" if clone
|
122
122
|
rescue ::Git::GitExecuteError
|
123
123
|
raise Vanagon::InvalidRepo, "Unable to clone from '#{url}'"
|
124
124
|
end
|
@@ -127,7 +127,7 @@ class Vanagon
|
|
127
127
|
# Checkout desired ref/sha, make noise about it, and fail
|
128
128
|
# entirely if we're unable to checkout that given ref/sha
|
129
129
|
def checkout!
|
130
|
-
|
130
|
+
warn "Checking out '#{ref}'' from Git repo '#{dirname}'"
|
131
131
|
clone.checkout(ref)
|
132
132
|
rescue ::Git::GitExecuteError
|
133
133
|
raise Vanagon::CheckoutFailed, "unable to checkout #{ref} from '#{url}'"
|
@@ -137,7 +137,7 @@ class Vanagon
|
|
137
137
|
# Attempt to update submodules, and do not panic
|
138
138
|
# if there are no submodules to initialize
|
139
139
|
def update_submodules
|
140
|
-
|
140
|
+
warn "Attempting to update submodules for repo '#{dirname}'"
|
141
141
|
clone.update_submodules(init: true)
|
142
142
|
end
|
143
143
|
private :update_submodules
|
@@ -93,7 +93,7 @@ class Vanagon
|
|
93
93
|
#
|
94
94
|
# @raise [RuntimeError] an exception is raised if the sum does not match the sum of the file
|
95
95
|
def verify # rubocop:disable Metrics/AbcSize
|
96
|
-
|
96
|
+
warn "Verifying file: #{file} against sum: '#{sum}'"
|
97
97
|
actual = get_sum(File.join(workdir, file), sum_type)
|
98
98
|
return true if sum == actual
|
99
99
|
|
@@ -107,7 +107,7 @@ class Vanagon
|
|
107
107
|
uri = URI.parse(target_url.to_s)
|
108
108
|
target_file ||= File.basename(uri.path)
|
109
109
|
|
110
|
-
|
110
|
+
warn "Downloading file '#{target_file}' from url '#{target_url}'"
|
111
111
|
|
112
112
|
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
113
113
|
http.request(Net::HTTP::Get.new(uri, headers)) do |response|
|
@@ -57,17 +57,17 @@ class Vanagon
|
|
57
57
|
#
|
58
58
|
# @raise [RuntimeError, Vanagon::Error] an exception is raised if the URI scheme cannot be handled
|
59
59
|
def copy
|
60
|
-
|
60
|
+
warn "Copying file '#{url.basename}' to workdir"
|
61
61
|
|
62
62
|
FileUtils.cp_r(url, file)
|
63
63
|
end
|
64
64
|
alias_method :fetch, :copy
|
65
65
|
|
66
|
-
def file
|
66
|
+
def file # rubocop:disable Lint/DuplicateMethods
|
67
67
|
@file ||= workdir + File.basename(url)
|
68
68
|
end
|
69
69
|
|
70
|
-
def extension
|
70
|
+
def extension # rubocop:disable Lint/DuplicateMethods
|
71
71
|
@extension ||= extname
|
72
72
|
end
|
73
73
|
|
@@ -117,7 +117,7 @@ class Vanagon
|
|
117
117
|
#
|
118
118
|
# @return [String] command to cleanup the source
|
119
119
|
# @raise [RuntimeError] an exception is raised if there is no known extraction method for @extension
|
120
|
-
def cleanup
|
120
|
+
def cleanup # rubocop:disable Lint/DuplicateMethods
|
121
121
|
archive? ? "rm #{file}; rm -r #{dirname}" : "rm #{file}"
|
122
122
|
end
|
123
123
|
|
data/lib/vanagon/component.rb
CHANGED
@@ -134,10 +134,10 @@ class Vanagon
|
|
134
134
|
dsl = Vanagon::Component::DSL.new(name, settings, platform)
|
135
135
|
dsl.instance_eval(File.read(compfile), compfile, 1)
|
136
136
|
dsl._component
|
137
|
-
rescue => e
|
138
|
-
|
139
|
-
|
140
|
-
|
137
|
+
rescue StandardError => e
|
138
|
+
warn "Error loading project '#{name}' using '#{compfile}':"
|
139
|
+
warn e
|
140
|
+
warn e.backtrace.join("\n")
|
141
141
|
raise e
|
142
142
|
end
|
143
143
|
|
@@ -215,7 +215,7 @@ class Vanagon
|
|
215
215
|
# whatever URI was defined for #uri. If no mirrors are set and the
|
216
216
|
# deprecated rewrite system has been configured, this will return
|
217
217
|
# rewritten URIs
|
218
|
-
def mirrors
|
218
|
+
def mirrors # rubocop:disable Lint/DuplicateMethods
|
219
219
|
@mirrors ||= Set.new [deprecated_rewrite_url].compact
|
220
220
|
end
|
221
221
|
|
@@ -232,7 +232,7 @@ class Vanagon
|
|
232
232
|
def fetch_mirrors(options)
|
233
233
|
mirrors.to_a.shuffle.each do |mirror|
|
234
234
|
begin
|
235
|
-
|
235
|
+
warn %(Attempting to fetch from mirror URL "#{mirror}")
|
236
236
|
@source = Vanagon::Component::Source.source(mirror, options)
|
237
237
|
return true if source.fetch
|
238
238
|
rescue SocketError
|
@@ -255,7 +255,7 @@ class Vanagon
|
|
255
255
|
# @return [Boolean] return True if the source can be retrieved,
|
256
256
|
# or False otherwise
|
257
257
|
def fetch_url(options)
|
258
|
-
|
258
|
+
warn %(Attempting to fetch from canonical URL "#{url}")
|
259
259
|
@source = Vanagon::Component::Source.source(url, options)
|
260
260
|
# Explicitly coerce the return value of #source.fetch,
|
261
261
|
# because each subclass of Vanagon::Component::Source returns
|
@@ -334,7 +334,7 @@ class Vanagon
|
|
334
334
|
|
335
335
|
# @return [Array] the specific tool or command line invocations that
|
336
336
|
# should be used to extract a given component's primary source
|
337
|
-
def extract_with
|
337
|
+
def extract_with # rubocop:disable Lint/DuplicateMethods
|
338
338
|
@extract_with ||= []
|
339
339
|
end
|
340
340
|
|
@@ -356,11 +356,11 @@ class Vanagon
|
|
356
356
|
# @return [String] environment suitable for inclusion in a Makefile
|
357
357
|
# @deprecated
|
358
358
|
def get_environment
|
359
|
-
warn <<-
|
359
|
+
warn <<-WARNING.undent
|
360
360
|
#get_environment is deprecated; environment variables have been moved
|
361
361
|
into the Makefile, and should not be used within a Makefile's recipe.
|
362
362
|
The #get_environment method will be removed by Vanagon 1.0.0.
|
363
|
-
|
363
|
+
WARNING
|
364
364
|
|
365
365
|
if environment.empty?
|
366
366
|
": no environment variables defined"
|
data/lib/vanagon/driver.rb
CHANGED
@@ -43,8 +43,8 @@ class Vanagon
|
|
43
43
|
# flatten all the results in to one array and set project.components to that.
|
44
44
|
@project.components = only_build.flat_map { |comp| @project.filter_component(comp) }.uniq
|
45
45
|
if @verbose
|
46
|
-
|
47
|
-
@project.components.each { |comp|
|
46
|
+
warn "Only building:"
|
47
|
+
@project.components.each { |comp| warn comp.name }
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -66,7 +66,7 @@ class Vanagon
|
|
66
66
|
def load_engine_object(engine_type, platform, target)
|
67
67
|
require "vanagon/engine/#{engine_type}"
|
68
68
|
@engine = Object::const_get("Vanagon::Engine::#{camelize(engine_type)}").new(platform, target, remote_workdir: remote_workdir)
|
69
|
-
rescue
|
69
|
+
rescue StandardError
|
70
70
|
fail "No such engine '#{camelize(engine_type)}'"
|
71
71
|
end
|
72
72
|
|
@@ -117,7 +117,7 @@ class Vanagon
|
|
117
117
|
|
118
118
|
@engine.startup(workdir)
|
119
119
|
|
120
|
-
|
120
|
+
warn "Target is #{@engine.target}"
|
121
121
|
retry_task { install_build_dependencies }
|
122
122
|
retry_task { @project.fetch_sources(workdir) }
|
123
123
|
|
@@ -133,13 +133,13 @@ class Vanagon
|
|
133
133
|
@engine.teardown
|
134
134
|
cleanup_workdir
|
135
135
|
end
|
136
|
-
rescue => e
|
136
|
+
rescue StandardError => e
|
137
137
|
if [:never].include? @preserve
|
138
138
|
@engine.teardown
|
139
139
|
cleanup_workdir
|
140
140
|
end
|
141
|
-
|
142
|
-
|
141
|
+
warn e
|
142
|
+
warn e.backtrace.join("\n")
|
143
143
|
raise e
|
144
144
|
ensure
|
145
145
|
if ["hardware", "ec2"].include?(@engine.name)
|
@@ -153,7 +153,7 @@ class Vanagon
|
|
153
153
|
raise Vanagon::Error, "Project requires a version set, all is lost."
|
154
154
|
end
|
155
155
|
|
156
|
-
|
156
|
+
warn "rendering Makefile"
|
157
157
|
retry_task { @project.fetch_sources(workdir) }
|
158
158
|
@project.make_bill_of_materials(workdir)
|
159
159
|
@project.generate_packaging_artifacts(workdir)
|
data/lib/vanagon/engine/base.rb
CHANGED
@@ -63,7 +63,7 @@ class Vanagon
|
|
63
63
|
dispatch("mkdir -p #{@remote_workdir_path}", true)
|
64
64
|
@remote_workdir = @remote_workdir_path
|
65
65
|
else
|
66
|
-
@remote_workdir = dispatch("mktemp
|
66
|
+
@remote_workdir = dispatch("#{@platform.mktemp} 2>/dev/null", true)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
@remote_workdir
|
@@ -38,7 +38,7 @@ class Vanagon
|
|
38
38
|
Vanagon::Utilities.retry_with_timeout do
|
39
39
|
Vanagon::Utilities.remote_ssh_command("#{@target_user}@#{@target}", 'exit', @platform.ssh_port)
|
40
40
|
end
|
41
|
-
rescue => e
|
41
|
+
rescue StandardError => e
|
42
42
|
raise Vanagon::Error.wrap(e, "Something went wrong getting a target vm to build on using docker. Ssh was not up in the container after 5 seconds.")
|
43
43
|
end
|
44
44
|
|
data/lib/vanagon/engine/ec2.rb
CHANGED
@@ -6,7 +6,7 @@ require 'vanagon/engine/base'
|
|
6
6
|
class Vanagon
|
7
7
|
class Engine
|
8
8
|
class Ec2 < Base
|
9
|
-
attr_accessor :ami, :key_name, :userdata, :key, :
|
9
|
+
attr_accessor :ami, :key_name, :userdata, :key, :shutdown_behavior
|
10
10
|
attr_accessor :subnet_id, :instance_type
|
11
11
|
|
12
12
|
def initialize(platform, target = nil, **opts) # rubocop:disable Metrics/AbcSize
|
@@ -57,17 +57,17 @@ class Vanagon
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def select_target
|
60
|
-
|
61
|
-
|
60
|
+
warn "Instance created id: #{instance.id}"
|
61
|
+
warn "Created instance waiting for status ok"
|
62
62
|
@ec2.wait_until(:instance_status_ok, instance_ids: [instance.id])
|
63
|
-
|
63
|
+
warn "Instance running"
|
64
64
|
@target = instance.private_ip_address
|
65
65
|
rescue ::Aws::Waiters::Errors::WaiterFailed => error
|
66
66
|
fail "Failed to wait for ec2 instance to start got error #{error}"
|
67
67
|
end
|
68
68
|
|
69
69
|
def teardown
|
70
|
-
|
70
|
+
warn "Destroying instance on AWS id: #{instance.id}"
|
71
71
|
instances.batch_terminate!
|
72
72
|
end
|
73
73
|
end
|
@@ -23,7 +23,7 @@ class Vanagon
|
|
23
23
|
Vanagon::Driver.logger.info "Polling for a lock on #{host}."
|
24
24
|
@lockman.polling_lock(host, VANAGON_LOCK_USER, "Vanagon automated lock")
|
25
25
|
Vanagon::Driver.logger.info "Lock acquired on #{host}."
|
26
|
-
|
26
|
+
warn "Lock acquired on #{host} for #{VANAGON_LOCK_USER}."
|
27
27
|
host
|
28
28
|
end
|
29
29
|
|
@@ -33,7 +33,7 @@ class Vanagon
|
|
33
33
|
Vanagon::Driver.logger.info "Attempting to lock #{h}."
|
34
34
|
if @lockman.lock(h, VANAGON_LOCK_USER, "Vanagon automated lock")
|
35
35
|
Vanagon::Driver.logger.info "Lock acquired on #{h}."
|
36
|
-
|
36
|
+
warn "Lock acquired on #{h} for #{VANAGON_LOCK_USER}."
|
37
37
|
return h
|
38
38
|
end
|
39
39
|
end
|
@@ -45,7 +45,7 @@ class Vanagon
|
|
45
45
|
# complete. In this case, we'll attempt to unlock the hardware
|
46
46
|
def teardown
|
47
47
|
Vanagon::Driver.logger.info "Removing lock on #{@target}."
|
48
|
-
|
48
|
+
warn "Removing lock on #{@target}."
|
49
49
|
@lockman.unlock(@target, VANAGON_LOCK_USER)
|
50
50
|
end
|
51
51
|
|
@@ -56,7 +56,7 @@ class Vanagon
|
|
56
56
|
absolute_path = File.expand_path(path)
|
57
57
|
return nil unless File.exist?(absolute_path)
|
58
58
|
|
59
|
-
|
59
|
+
warn "Reading vmpooler token from: #{path}"
|
60
60
|
File.read(absolute_path).chomp
|
61
61
|
end
|
62
62
|
private :read_vanagon_token
|
@@ -70,7 +70,7 @@ class Vanagon
|
|
70
70
|
absolute_path = File.expand_path(path)
|
71
71
|
return nil unless File.exist?(absolute_path)
|
72
72
|
|
73
|
-
|
73
|
+
warn "Reading vmpooler token from: #{path}"
|
74
74
|
YAML.load_file(absolute_path)['token']
|
75
75
|
end
|
76
76
|
private :read_vmfloaty_token
|
@@ -141,7 +141,7 @@ class Vanagon
|
|
141
141
|
)
|
142
142
|
if response and response["ok"]
|
143
143
|
Vanagon::Driver.logger.info "#{@target} has been destroyed"
|
144
|
-
|
144
|
+
warn "#{@target} has been destroyed"
|
145
145
|
else
|
146
146
|
Vanagon::Driver.logger.info "#{@target} could not be destroyed"
|
147
147
|
warn "#{@target} could not be destroyed"
|
data/lib/vanagon/environment.rb
CHANGED
@@ -141,11 +141,11 @@ class Vanagon
|
|
141
141
|
|
142
142
|
warning = [%(Value "#{str}" looks like it's escaping one or more values for subshell interpolation.)]
|
143
143
|
escaped_variables.each { |v| warning.push %(\t"$$(#{v})" will be coerced to "$(shell #{v})") }
|
144
|
-
warning.push <<-
|
144
|
+
warning.push <<-WARNING.undent
|
145
145
|
All environment variables will now be resolved by Make before they're executed
|
146
146
|
by the shell. These variables will be mangled for you for now, but you should
|
147
147
|
update your project's parameters.
|
148
|
-
|
148
|
+
WARNING
|
149
149
|
|
150
150
|
warn warning.join("\n")
|
151
151
|
str.gsub(pattern, '$(shell \1)')
|
@@ -159,11 +159,11 @@ class Vanagon
|
|
159
159
|
|
160
160
|
warning = [%(Value "#{str}" looks like it's escaping one or more shell variable names for shell interpolation.)]
|
161
161
|
escaped_variables.each { |v| warning.push %(\t"$$#{v}" will be coerced to "$(#{v})") }
|
162
|
-
warning.push <<-
|
162
|
+
warning.push <<-WARNING.undent
|
163
163
|
All environment variables will now be resolved by Make before they're executed
|
164
164
|
by the shell. These variables will be mangled for you for now, but you should
|
165
165
|
update your project's parameters.
|
166
|
-
|
166
|
+
WARNING
|
167
167
|
|
168
168
|
warn warning.join("\n")
|
169
169
|
str.gsub(pattern, '$(\1)')
|
data/lib/vanagon/platform/deb.rb
CHANGED
@@ -19,7 +19,7 @@ class Vanagon
|
|
19
19
|
"cat file-list >> debian/install",
|
20
20
|
"cp -pr debian $(tempdir)/#{project.name}-#{project.version}",
|
21
21
|
"gunzip -c #{project.name}-#{project.version}.tar.gz | '#{@tar}' -C '$(tempdir)/#{project.name}-#{project.version}' --strip-components 1 -xf -",
|
22
|
-
"sed -i 's/\ /?/g' $(tempdir)/#{project.name}-#{project.version}/debian/install",
|
22
|
+
"#{sed} -i 's/\ /?/g' $(tempdir)/#{project.name}-#{project.version}/debian/install",
|
23
23
|
"(cd $(tempdir)/#{project.name}-#{project.version}; debuild --no-lintian #{pkg_arch_opt} -uc -us)",
|
24
24
|
"cp $(tempdir)/#{copy_extensions} ./output/#{target_dir}"]
|
25
25
|
end
|
@@ -122,6 +122,14 @@ class Vanagon
|
|
122
122
|
project.package_overrides << var
|
123
123
|
end
|
124
124
|
|
125
|
+
def version_munger(version_string, default: '=')
|
126
|
+
operator, version = super.split(' ')
|
127
|
+
if operator =~ /^[<>]$/
|
128
|
+
operator = "#{operator}#{operator}"
|
129
|
+
end
|
130
|
+
|
131
|
+
"#{operator} #{version}"
|
132
|
+
end
|
125
133
|
# Constructor. Sets up some defaults for the debian platform and calls the parent constructor
|
126
134
|
#
|
127
135
|
# @param name [String] name of the platform
|
@@ -132,6 +140,7 @@ class Vanagon
|
|
132
140
|
@tar = "tar"
|
133
141
|
@patch = "/usr/bin/patch"
|
134
142
|
@num_cores = "/usr/bin/nproc"
|
143
|
+
@valid_operators = ['<', '>', '<=', '>=', '=', '<<', '>>']
|
135
144
|
super(name)
|
136
145
|
end
|
137
146
|
end
|
data/lib/vanagon/platform/dsl.rb
CHANGED
@@ -129,6 +129,13 @@ class Vanagon
|
|
129
129
|
@platform.find = find_cmd
|
130
130
|
end
|
131
131
|
|
132
|
+
# Set the path to sed for the platform
|
133
|
+
#
|
134
|
+
# @param command [String] full path to the sed command for the platform
|
135
|
+
def sed(command)
|
136
|
+
@platform.sed = command
|
137
|
+
end
|
138
|
+
|
132
139
|
# Set the path to sort for the platform
|
133
140
|
#
|
134
141
|
# @param sort_cmd [String] Full path to the sort command for the platform
|
@@ -170,6 +177,13 @@ class Vanagon
|
|
170
177
|
@platform.install = install_cmd
|
171
178
|
end
|
172
179
|
|
180
|
+
# Set the path and options for the mktemp command
|
181
|
+
# @param command [String] Full path (if needed) for the mktemp command with arguments to
|
182
|
+
# be used by default
|
183
|
+
def mktemp(command)
|
184
|
+
@platform.mktemp = command
|
185
|
+
end
|
186
|
+
|
173
187
|
# Set the path to patch for the platform
|
174
188
|
#
|
175
189
|
# @param patch_cmd [String] Full path to the patch command for the platform
|
data/lib/vanagon/platform/osx.rb
CHANGED
@@ -17,6 +17,7 @@ class Vanagon
|
|
17
17
|
@make = "/usr/bin/gmake"
|
18
18
|
@tar = "/opt/freeware/bin/tar"
|
19
19
|
@patch = "/opt/freeware/bin/patch"
|
20
|
+
@sed = "/opt/freeware/bin/sed"
|
20
21
|
@shasum = "/opt/freeware/bin/sha1sum"
|
21
22
|
@num_cores = "lsdev -Cc processor |wc -l"
|
22
23
|
@install = "/opt/freeware/bin/install"
|
@@ -18,7 +18,7 @@ class Vanagon
|
|
18
18
|
def install_build_dependencies(build_dependencies)
|
19
19
|
commands = []
|
20
20
|
unless build_dependencies.empty?
|
21
|
-
commands << "tmpdir=$(mktemp
|
21
|
+
commands << "tmpdir=$(#{mktemp})"
|
22
22
|
commands << "cd ${tmpdir}"
|
23
23
|
build_dependencies.each do |build_dependency|
|
24
24
|
if build_dependency =~ /^http.*\.rpm$/
|
data/lib/vanagon/platform/rpm.rb
CHANGED
@@ -62,7 +62,7 @@ class Vanagon
|
|
62
62
|
$$1 ~ /^d$$/ && (#{explicit_search_string}) {print "d",$$2,$$3,"0755 root sys";} \
|
63
63
|
$$1 ~ /^s$$/ {print;} \
|
64
64
|
$$1 ~ /^f$$/ {print "f",$$2,$$3,$$4,"root sys";} \
|
65
|
-
$$1 !~ /^[dfs]$$/ {print;} ' |
|
65
|
+
$$1 !~ /^[dfs]$$/ {print;} ' | #{sed} \
|
66
66
|
-e '/^[fd] [^ ]\\+ .*[/]s\\?bin[^ ]\\+/ {s/root sys$$/root bin/}' \
|
67
67
|
-e '/^[fd] [^ ]\\+ .*[/]lib[/][^ ]\\+/ {s/root sys$$/root bin/}' \
|
68
68
|
-e '/^[fd] [^ ]\\+ .*[/][^ ]\\+[.]so/ {s/root sys$$/root bin/}' >> ../packaging/proto)),
|
@@ -156,7 +156,7 @@ class Vanagon
|
|
156
156
|
if build_dependency =~ /^http.*\.gz/
|
157
157
|
# Fetch, unpack, install...this assumes curl is present.
|
158
158
|
package = build_dependency.sub(/^http.*\//, '')
|
159
|
-
http << "tmpdir=$(mktemp
|
159
|
+
http << "tmpdir=$(#{mktemp}); (cd ${tmpdir} && curl -O #{build_dependency} && gunzip -c #{package} | pkgadd -d /dev/stdin -a /var/tmp/noask all)"
|
160
160
|
else
|
161
161
|
# Opencsw dependencies. At this point we assume that pkgutil is installed.
|
162
162
|
pkgutil << build_dependency
|
@@ -185,6 +185,7 @@ class Vanagon
|
|
185
185
|
@make = "/opt/csw/bin/gmake"
|
186
186
|
@tar = "/usr/sfw/bin/gtar"
|
187
187
|
@patch = "/usr/bin/gpatch"
|
188
|
+
@sed = "/opt/csw/bin/gsed"
|
188
189
|
@shasum = "/opt/csw/bin/shasum"
|
189
190
|
# solaris 10
|
190
191
|
@num_cores = "/usr/bin/kstat cpu_info | awk '{print $$1}' | grep '^core_id$$' | wc -l"
|