vanagon 0.18.1 → 0.19.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/bin/build +3 -1
  3. data/bin/build_host_info +3 -1
  4. data/bin/build_requirements +3 -1
  5. data/bin/inspect +3 -1
  6. data/bin/render +3 -1
  7. data/bin/repo +3 -1
  8. data/bin/ship +3 -1
  9. data/bin/sign +3 -1
  10. data/lib/vanagon/cli.rb +4 -2
  11. data/lib/vanagon/cli/build.rb +2 -1
  12. data/lib/vanagon/cli/build_host_info.rb +3 -2
  13. data/lib/vanagon/cli/build_requirements.rb +4 -4
  14. data/lib/vanagon/cli/completion.rb +4 -3
  15. data/lib/vanagon/cli/inspect.rb +3 -2
  16. data/lib/vanagon/cli/list.rb +5 -6
  17. data/lib/vanagon/cli/render.rb +2 -1
  18. data/lib/vanagon/cli/ship.rb +5 -4
  19. data/lib/vanagon/cli/sign.rb +3 -2
  20. data/lib/vanagon/component.rb +11 -9
  21. data/lib/vanagon/component/dsl.rb +6 -5
  22. data/lib/vanagon/component/source.rb +2 -1
  23. data/lib/vanagon/component/source/git.rb +7 -6
  24. data/lib/vanagon/component/source/http.rb +3 -2
  25. data/lib/vanagon/component/source/local.rb +2 -1
  26. data/lib/vanagon/component/source/rewrite.rb +3 -2
  27. data/lib/vanagon/driver.rb +20 -23
  28. data/lib/vanagon/engine/always_be_scheduling.rb +12 -11
  29. data/lib/vanagon/engine/docker.rb +2 -1
  30. data/lib/vanagon/engine/ec2.rb +5 -4
  31. data/lib/vanagon/engine/hardware.rb +4 -3
  32. data/lib/vanagon/engine/pooler.rb +6 -5
  33. data/lib/vanagon/environment.rb +3 -2
  34. data/lib/vanagon/logger.rb +31 -0
  35. data/lib/vanagon/platform.rb +6 -5
  36. data/lib/vanagon/platform/dsl.rb +5 -4
  37. data/lib/vanagon/platform/windows.rb +3 -1
  38. data/lib/vanagon/project.rb +20 -14
  39. data/lib/vanagon/project/dsl.rb +6 -5
  40. data/lib/vanagon/utilities.rb +5 -4
  41. data/resources/deb/control.erb +1 -1
  42. data/resources/osx/postinstall.erb +6 -2
  43. data/resources/rpm/project.spec.erb +1 -1
  44. data/resources/solaris/10/depend.erb +2 -2
  45. data/resources/solaris/10/postinstall.erb +11 -3
  46. data/resources/solaris/11/p5m.erb +2 -2
  47. data/spec/lib/vanagon/cli_spec.rb +1 -4
  48. data/spec/lib/vanagon/component/dsl_spec.rb +9 -2
  49. data/spec/lib/vanagon/component_spec.rb +3 -2
  50. data/spec/lib/vanagon/engine/always_be_scheduling_spec.rb +4 -4
  51. metadata +33 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f2bcc876c2ab62d16237b4af431f8c25d93db9c4cd204f8f07667f48451b9be
4
- data.tar.gz: 231ba1237f8f5c7b1656271e6d627955ebed719c00ee6c59f1070266f698c276
3
+ metadata.gz: 607d97840532f0417fd81348a7decb7fbc8e86791fee5e11f8ef53350600d5b4
4
+ data.tar.gz: c03e5996707781aa956b29599e788b55c7c1cde5cfc707a261d4a22eec3c16f2
5
5
  SHA512:
6
- metadata.gz: 871d364f36c00ba3f8ecfa6a2e0bb593c12577c14cfe961f9a285b4beb105153de4f3e34adf457fdca1ac066570209c3882691531aa7e9db99158c3f61c5dddd
7
- data.tar.gz: 4cd3a458968855eafb4f2643215ae59a9f0b508985b002aa7ef1a42cba0c3f484579b585dc0817f690f6f81ea8fb13b1984c1c89c82141311bebb7d047f6f868
6
+ metadata.gz: f59b39738804c83787514f2662a9ba40343d126de298b9b01b4a97cd4d5195ad6c14c0255049fdf002bcb72fa5fa8b27a57983853219a8eddd35dac9cf08030d
7
+ data.tar.gz: ea3ac00e2beb1919372cde8c74bacc22d68dab5911c0f7cd2c14091153cd0aff3592446bcfac21f77a4c7569299cd2927a3437ee2cfdc3814cb85dc480c42704
data/bin/build CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
data/bin/render CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
data/bin/repo CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  ENV["PROJECT_ROOT"] = Dir.pwd
4
6
 
5
7
  # Begin warning: This ship script is an internal tool.
@@ -21,7 +23,7 @@ when 'rpm'
21
23
  when 'deb'
22
24
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:deb_repos')
23
25
  when 'none'
24
- $stdout.puts "Skipping repo generation since repo target is set to 'none'"
26
+ VanagonLogger.warn "Skipping repo generation since repo target is set to 'none'"
25
27
  else
26
28
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:rpm_repos')
27
29
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:deb_repos')
data/bin/ship CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
data/bin/sign CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -15,6 +15,8 @@ require 'vanagon/cli/render'
15
15
  require 'vanagon/cli/ship'
16
16
  require 'vanagon/cli/sign'
17
17
 
18
+ require 'vanagon/logger'
19
+
18
20
 
19
21
  class Vanagon
20
22
  class InvalidArgument < StandardError
@@ -66,7 +68,7 @@ class Vanagon
66
68
  puts DOCUMENTATION
67
69
  exit 0
68
70
  else
69
- warn "vanagon: Error: unknown command: \"#{sub_command}\"\n\n#{DOCUMENTATION}"
71
+ VanagonLogger.error "vanagon: Error: unknown command: \"#{sub_command}\"\n\n#{DOCUMENTATION}"
70
72
  exit 1
71
73
  end
72
74
 
@@ -95,7 +97,7 @@ class Vanagon
95
97
  def parse_options(argv)
96
98
  Docopt.docopt(DOCUMENTATION, { argv: argv, options_first: true })
97
99
  rescue Docopt::Exit => e
98
- puts e.message
100
+ VanagonLogger.error e.message
99
101
  exit 1
100
102
  end
101
103
  end
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -32,7 +33,7 @@ class Vanagon
32
33
  def parse(argv)
33
34
  Docopt.docopt(DOCUMENTATION, { argv: argv })
34
35
  rescue Docopt::Exit => e
35
- puts e.message
36
+ VanagonLogger.error e.message
36
37
  exit 1
37
38
  end
38
39
 
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -26,7 +27,7 @@ class Vanagon
26
27
  def parse(argv)
27
28
  Docopt.docopt(DOCUMENTATION, { argv: argv })
28
29
  rescue Docopt::Exit => e
29
- puts e.message
30
+ VanagonLogger.error e.message
30
31
  exit 1
31
32
  end
32
33
 
@@ -36,7 +37,7 @@ class Vanagon
36
37
 
37
38
  platforms.each do |platform|
38
39
  driver = Vanagon::Driver.new(platform, project, options)
39
- $stdout.puts JSON.generate(driver.build_host_info)
40
+ VanagonLogger.warn JSON.generate(driver.build_host_info)
40
41
  end
41
42
  end
42
43
 
@@ -1,5 +1,6 @@
1
1
  require 'docopt'
2
2
  require 'json'
3
+ require 'vanagon/logger'
3
4
 
4
5
  class Vanagon
5
6
  class CLI
@@ -27,7 +28,7 @@ class Vanagon
27
28
  def parse(argv)
28
29
  Docopt.docopt(DOCUMENTATION, { argv: argv })
29
30
  rescue Docopt::Exit => e
30
- puts e.message
31
+ VanagonLogger.error e.message
31
32
  exit 1
32
33
  end
33
34
 
@@ -47,9 +48,8 @@ class Vanagon
47
48
  end
48
49
  end
49
50
 
50
- $stdout.puts
51
- $stdout.puts "**** External packages required to build #{project} on #{platform}: ***"
52
- $stdout.puts JSON.pretty_generate(build_requirements.flatten.uniq.sort)
51
+ VanagonLogger.warn "**** External packages required to build #{project} on #{platform}: ***"
52
+ VanagonLogger.warn JSON.pretty_generate(build_requirements.flatten.uniq.sort)
53
53
  end
54
54
 
55
55
  def options_translate(docopt_options)
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -15,7 +16,7 @@ class Vanagon
15
16
  def parse(argv)
16
17
  Docopt.docopt(DOCUMENTATION, { argv: argv })
17
18
  rescue Docopt::Exit => e
18
- puts e.message
19
+ VanagonLogger.error e.message
19
20
  exit 1
20
21
  end
21
22
 
@@ -24,10 +25,10 @@ class Vanagon
24
25
  completion_file = File.expand_path(File.join('..', '..', '..', '..', 'extras', 'completions', "vanagon.#{shell}"), __FILE__)
25
26
 
26
27
  if File.exist?(completion_file)
27
- puts completion_file
28
+ VanagonLogger.warn completion_file
28
29
  exit 0
29
30
  else
30
- puts "Could not find completion file for '#{shell}': No such file #{completion_file}"
31
+ VanagonLogger.error "Could not find completion file for '#{shell}': No such file #{completion_file}"
31
32
  exit 1
32
33
  end
33
34
  end
@@ -1,5 +1,6 @@
1
1
  require 'docopt'
2
2
  require 'json'
3
+ require 'vanagon/logger'
3
4
 
4
5
  class Vanagon
5
6
  class CLI
@@ -30,7 +31,7 @@ class Vanagon
30
31
  def parse(argv)
31
32
  Docopt.docopt(DOCUMENTATION, { argv: argv })
32
33
  rescue Docopt::Exit => e
33
- puts e.message
34
+ VanagonLogger.error e.message
34
35
  exit 1
35
36
  end
36
37
 
@@ -41,7 +42,7 @@ class Vanagon
41
42
  platforms.each do |platform|
42
43
  driver = Vanagon::Driver.new(platform, project, options)
43
44
  components = driver.project.components.map(&:to_hash)
44
- $stdout.puts JSON.pretty_generate(components)
45
+ VanagonLogger.warn JSON.pretty_generate(components)
45
46
  end
46
47
  end
47
48
 
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -18,7 +19,7 @@ class Vanagon
18
19
  def parse(argv)
19
20
  Docopt.docopt(DOCUMENTATION, { argv: argv })
20
21
  rescue Docopt::Exit => e
21
- puts e.message
22
+ VanagonLogger.error e.message
22
23
  exit 1
23
24
  end
24
25
 
@@ -31,7 +32,7 @@ class Vanagon
31
32
  if Dir.exist?(File.join(options[:configdir], 'platforms')) == false ||
32
33
  Dir.exist?(File.join(options[:configdir], 'projects')) == false
33
34
 
34
- warn "Path to #{File.join(options[:configdir], 'platforms')} or #{File.join(options[:configdir], 'projects')} not found."
35
+ VanagonLogger.error "Path to #{File.join(options[:configdir], 'platforms')} or #{File.join(options[:configdir], 'projects')} not found."
35
36
  exit 1
36
37
  end
37
38
 
@@ -49,14 +50,12 @@ class Vanagon
49
50
  end
50
51
 
51
52
  if options[:projects]
52
- puts "- Projects"
53
- puts output(project_list, options[:use_spaces])
53
+ puts "- Projects", output(project_list, options[:use_spaces])
54
54
  return
55
55
  end
56
56
 
57
57
  if options[:platforms]
58
- puts "- Platforms"
59
- puts output(platform_list, options[:use_spaces])
58
+ puts "- Platforms", output(platform_list, options[:use_spaces])
60
59
  return
61
60
  end
62
61
  end
@@ -1,5 +1,6 @@
1
1
  require 'docopt'
2
2
  require 'json'
3
+ require 'vanagon/logger'
3
4
 
4
5
  class Vanagon
5
6
  class CLI
@@ -27,7 +28,7 @@ class Vanagon
27
28
  def parse(argv)
28
29
  Docopt.docopt(DOCUMENTATION, { argv: argv })
29
30
  rescue Docopt::Exit => e
30
- puts e.message
31
+ VanagonLogger.error e.message
31
32
  exit 1
32
33
  end
33
34
 
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -14,7 +15,7 @@ class Vanagon
14
15
  def parse(argv)
15
16
  Docopt.docopt(DOCUMENTATION, { argv: argv })
16
17
  rescue Docopt::Exit => e
17
- puts e.message
18
+ VanagonLogger.error e.message
18
19
  exit 1
19
20
  end
20
21
 
@@ -32,7 +33,7 @@ class Vanagon
32
33
  DOC
33
34
 
34
35
  if Dir['output/**/*'].select { |entry| File.file?(entry) }.empty?
35
- warn 'vanagon: Error: No packages to ship in the "output" directory. Maybe build some first?'
36
+ VanagonLogger.error 'vanagon: Error: No packages to ship in the "output" directory. Maybe build some first?'
36
37
  exit 1
37
38
  end
38
39
 
@@ -42,9 +43,9 @@ class Vanagon
42
43
  begin
43
44
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:ship_to_artifactory', 'output')
44
45
  rescue LoadError
45
- warn artifactory_warning
46
+ VanagonLogger.error artifactory_warning
46
47
  rescue StandardError
47
- warn artifactory_warning
48
+ VanagonLogger.error artifactory_warning
48
49
  end
49
50
  end
50
51
  end
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -14,14 +15,14 @@ class Vanagon
14
15
  def parse(argv)
15
16
  Docopt.docopt(DOCUMENTATION, { argv: argv })
16
17
  rescue Docopt::Exit => e
17
- puts e.message
18
+ VanagonLogger.error e.message
18
19
  exit 1
19
20
  end
20
21
 
21
22
  def run(_)
22
23
  ENV['PROJECT_ROOT'] = Dir.pwd
23
24
  if Dir['output/**/*'].select { |entry| File.file?(entry) }.empty?
24
- warn 'sign: Error: No packages to sign in the "output" directory. Maybe build some first?'
25
+ VanagonLogger.error 'sign: Error: No packages to sign in the "output" directory. Maybe build some first?'
25
26
  exit 1
26
27
  end
27
28
 
@@ -3,6 +3,8 @@ require 'vanagon/component/rules'
3
3
  require 'vanagon/component/source'
4
4
  require 'vanagon/component/source/rewrite'
5
5
 
6
+ require 'vanagon/logger'
7
+
6
8
  class Vanagon
7
9
  class Component
8
10
  include Vanagon::Utilities
@@ -138,9 +140,9 @@ class Vanagon
138
140
  dsl.instance_eval(File.read(compfile), compfile, 1)
139
141
  dsl._component
140
142
  rescue StandardError => e
141
- warn "Error loading project '#{name}' using '#{compfile}':"
142
- warn e
143
- warn e.backtrace.join("\n")
143
+ VanagonLogger.error "Error loading project '#{name}' using '#{compfile}':"
144
+ VanagonLogger(e)
145
+ VanagonLogger.error e.backtrace.join("\n")
144
146
  raise e
145
147
  end
146
148
 
@@ -254,18 +256,18 @@ class Vanagon
254
256
  def fetch_mirrors(options)
255
257
  mirrors.to_a.shuffle.each do |mirror|
256
258
  begin
257
- warn %(Attempting to fetch from mirror URL "#{mirror}")
259
+ VanagonLogger.info %(Attempting to fetch from mirror URL "#{mirror}")
258
260
  @source = Vanagon::Component::Source.source(mirror, options)
259
261
  return true if source.fetch
260
262
  rescue SocketError
261
263
  # SocketError means that there was no DNS/name resolution
262
264
  # for whatever remote protocol the mirror tried to use.
263
- warn %(Unable to resolve mirror URL "#{mirror}")
265
+ VanagonLogger.error %(Unable to resolve mirror URL "#{mirror}")
264
266
  rescue RuntimeError
265
267
  # Source retrieval does not consistently return a meaningful
266
268
  # namespaced error message, which means we're brute-force rescuing
267
269
  # RuntimeError. Not a good look, and we should fix this.
268
- warn %(Unable to retrieve mirror URL "#{mirror}")
270
+ VanagonLogger.error %(Unable to retrieve mirror URL "#{mirror}")
269
271
  end
270
272
  end
271
273
  false
@@ -277,7 +279,7 @@ class Vanagon
277
279
  # @return [Boolean] return True if the source can be retrieved,
278
280
  # or False otherwise
279
281
  def fetch_url(options)
280
- warn %(Attempting to fetch from canonical URL "#{url}")
282
+ VanagonLogger.info %(Attempting to fetch from canonical URL "#{url}")
281
283
  @source = Vanagon::Component::Source.source(url, options)
282
284
  # Explicitly coerce the return value of #source.fetch,
283
285
  # because each subclass of Vanagon::Component::Source returns
@@ -319,7 +321,7 @@ class Vanagon
319
321
  @version ||= source.version
320
322
  end
321
323
  else
322
- warn "No source given for component '#{@name}'"
324
+ VanagonLogger.info "No source given for component '#{@name}'"
323
325
 
324
326
  # If there is no source, we don't want to try to change directories, so we just change to the current directory.
325
327
  @dirname = './'
@@ -407,7 +409,7 @@ class Vanagon
407
409
  # @return [String] environment suitable for inclusion in a Makefile
408
410
  # @deprecated
409
411
  def get_environment
410
- warn <<-WARNING.undent
412
+ VanagonLogger.info <<-WARNING.undent
411
413
  #get_environment is deprecated; environment variables have been moved
412
414
  into the Makefile, and should not be used within a Makefile's recipe.
413
415
  The #get_environment method will be removed by Vanagon 1.0.0.