vanagon 0.18.1 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
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.