vanagon 0.23.0 → 0.26.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9471f41441c2a8aea399d9a08961332b68e94e9a377b783e76d09857ffcec0d7
4
- data.tar.gz: ea8ccc12852db54d70c58d17d66815fadc48604eabfdf456623357fef3c3dd21
3
+ metadata.gz: a9b054ba055927fcdbc69228b433ec3c01e52841c4fd93841394d3ab371bcb0e
4
+ data.tar.gz: 787e12bc102de7ab7a16b7b0f9a0f9fbff4f60fece396fdcc3a9b752f8c933aa
5
5
  SHA512:
6
- metadata.gz: 67e94d799467fc05efb1e3815c55d71f4ffee9b91126eacae5b24793a7d6cb1478f0aae5c936a946e6d78e0896ea92f970104fbc519f0de45389f36bec228e2e
7
- data.tar.gz: 756ebf1259f45d5fd5c9a2e5050423bca7da0cf72d5ab3404551da4c9d868b2b68bfa03043ee3f6e070c1b86884076c43af3891cfa3841a5dec8b6909ee3faf5
6
+ metadata.gz: e0220c7ab2bd7f07945dc0d313976693616ac8ef99103d526da8a89b85c21f8089ed54117a6df5201ca7cb17b40fa6f8c32e8ed359a1da0e75afc831e961860c
7
+ data.tar.gz: b460870be764e84925886041b21bc017fa3016575c57a005bfd482ec7242abf668f0e03b2fe7e243f42ae5d3612f99b4fb177322eed0845033eb2a99cec0f6e7
@@ -36,7 +36,7 @@ module BasicSubmodules
36
36
  # @option options [Boolean] :recursive recurse into nested submodules
37
37
  # @return options [String] any output produced by `git` when submodules are initialized
38
38
  def update_submodules(**options)
39
- self.lib.update_submodules(options)
39
+ self.lib.update_submodules(**options)
40
40
  end
41
41
  end
42
42
 
@@ -0,0 +1,89 @@
1
+ require 'docopt'
2
+ require 'json'
3
+ require 'vanagon/logger'
4
+
5
+ class Vanagon
6
+ class CLI
7
+ class Dependencies < Vanagon::CLI
8
+ DOCUMENTATION = <<~DOCOPT.freeze
9
+ Usage:
10
+ dependencies [options] <project-name> <platforms>
11
+
12
+ Options:
13
+ -h, --help Display help
14
+ -c, --configdir DIRECTORY Configuration directory [default: #{Dir.pwd}/configs]
15
+ -w, --workdir DIRECTORY Working directory on the local host
16
+ -v, --verbose Only here for backwards compatibility. Does nothing.
17
+
18
+ Project-Name:
19
+ May be a project name of a project from the configs/projects directory or 'all' to generate dependencies for all projects.
20
+ Platforms:
21
+ May be a platform name of a platform from the configs/platforms directory or 'all' to generate dependencies for all platforms.
22
+ DOCOPT
23
+
24
+ def parse(argv)
25
+ Docopt.docopt(DOCUMENTATION, { argv: argv })
26
+ rescue Docopt::Exit => e
27
+ VanagonLogger.error e.message
28
+ exit 1
29
+ end
30
+
31
+ def run(options) # rubocop:disable Metrics/AbcSize
32
+ platforms_directory = File.join(options[:configdir], 'platforms')
33
+ projects_directory = File.join(options[:configdir], 'projects')
34
+
35
+ unless Dir.exist?(projects_directory) && Dir.exist?(platforms_directory)
36
+ VanagonLogger.error "Path to #{platforms_directory} or #{projects_directory} not found."
37
+ exit 1
38
+ end
39
+
40
+ projects = [options[:project_name]]
41
+ if projects.include?('all')
42
+ projects = Dir.children(projects_directory).map do |project|
43
+ File.basename(project, File.extname(project))
44
+ end
45
+ end
46
+
47
+ platforms = options[:platforms].split(',')
48
+ if platforms.include?('all')
49
+ platforms = Dir.children(platforms_directory).map do |platform|
50
+ File.basename(platform, File.extname(platform))
51
+ end
52
+ end
53
+
54
+ failures = []
55
+
56
+ projects.each do |project|
57
+ platforms.each do |platform|
58
+ begin
59
+ artifact = Vanagon::Driver.new(platform, project, options)
60
+ artifact.dependencies
61
+ rescue RuntimeError => e
62
+ failures.push("#{project}, #{platform}: #{e}")
63
+ end
64
+ end
65
+ end
66
+
67
+ unless failures.empty?
68
+ VanagonLogger.info "Failed to generate dependencies for the following:"
69
+ failures.each do |failure|
70
+ VanagonLogger.info failure
71
+ end
72
+ end
73
+
74
+ VanagonLogger.info "Finished generating dependencies"
75
+ end
76
+
77
+ def options_translate(docopt_options)
78
+ translations = {
79
+ '--verbose' => :verbose,
80
+ '--workdir' => :workdir,
81
+ '--configdir' => :configdir,
82
+ '<project-name>' => :project_name,
83
+ '<platforms>' => :platforms
84
+ }
85
+ return docopt_options.map { |k, v| [translations[k], v] }.to_h
86
+ end
87
+ end
88
+ end
89
+ end
data/lib/vanagon/cli.rb CHANGED
@@ -14,6 +14,7 @@ require 'vanagon/cli/list'
14
14
  require 'vanagon/cli/render'
15
15
  require 'vanagon/cli/ship'
16
16
  require 'vanagon/cli/sign'
17
+ require 'vanagon/cli/dependencies'
17
18
 
18
19
  require 'vanagon/logger'
19
20
 
@@ -37,6 +38,7 @@ class Vanagon
37
38
  render create local versions of packaging artifacts for project
38
39
  sign sign a package
39
40
  ship upload a package to a distribution server
41
+ dependencies write json file to STDOUT that shows all required gems for a given project and platform
40
42
  help print this help
41
43
  DOCOPT
42
44
 
@@ -64,6 +66,8 @@ class Vanagon
64
66
  @sub_parser = Vanagon::CLI::Sign.new
65
67
  when 'ship'
66
68
  @sub_parser = Vanagon::CLI::Ship.new
69
+ when 'dependencies'
70
+ @sub_parser = Vanagon::CLI::Dependencies.new
67
71
  when 'help'
68
72
  puts DOCUMENTATION
69
73
  exit 0
@@ -13,7 +13,7 @@ class Vanagon
13
13
  class Component
14
14
  class Source
15
15
  class Git
16
- attr_accessor :url, :ref, :workdir, :clone_options
16
+ attr_accessor :url, :log_url, :ref, :workdir, :clone_options
17
17
  attr_reader :version, :default_options, :repo
18
18
 
19
19
  class << self
@@ -50,7 +50,7 @@ class Vanagon
50
50
 
51
51
  def valid_remote?(url, timeout = 0)
52
52
  Timeout.timeout(timeout) do
53
- Vanagon::Utilities.local_command("git ls-remote #{url} > /dev/null 2>&1")
53
+ Vanagon::Utilities.local_command("git ls-remote --heads #{url} > /dev/null 2>&1")
54
54
  return false unless $?.exitstatus.zero?
55
55
  return true
56
56
  end
@@ -73,18 +73,19 @@ class Vanagon
73
73
  # @param url [String] url of git repo to use as source
74
74
  # @param ref [String] ref to checkout from git repo
75
75
  # @param workdir [String] working directory to clone into
76
- def initialize(url, workdir:, **options)
76
+ def initialize(url, workdir:, **options) # rubocop:disable Metrics/AbcSize
77
77
  opts = default_options.merge(options.reject { |k, v| v.nil? })
78
78
 
79
79
  # Ensure that #url returns a URI object
80
80
  @url = URI.parse(url.to_s)
81
+ @log_url = @url.host + @url.path unless @url.host.nil? || @url.path.nil?
81
82
  @ref = opts[:ref]
82
83
  @dirname = opts[:dirname]
83
84
  @workdir = File.realpath(workdir)
84
85
  @clone_options = opts[:clone_options] ||= {}
85
86
 
86
87
  # We can test for Repo existence without cloning
87
- raise Vanagon::InvalidRepo, "#{url} not a valid Git repo" unless valid_remote?
88
+ raise Vanagon::InvalidRepo, "url is not a valid Git repo" unless valid_remote?
88
89
  end
89
90
 
90
91
  # Fetch the source. In this case, clone the repository into the workdir
@@ -157,10 +158,10 @@ class Vanagon
157
158
  # Clone a remote repo, make noise about it, and fail entirely
158
159
  # if we're unable to retrieve the remote repo
159
160
  def clone!
160
- VanagonLogger.info "Cloning Git repo '#{url}'"
161
+ VanagonLogger.info "Cloning Git repo '#{log_url}'"
161
162
  VanagonLogger.info "Successfully cloned '#{dirname}'" if clone
162
163
  rescue ::Git::GitExecuteError
163
- raise Vanagon::InvalidRepo, "Unable to clone from '#{url}'"
164
+ raise Vanagon::InvalidRepo, "Unable to clone from '#{log_url}'"
164
165
  end
165
166
  private :clone!
166
167
 
@@ -170,7 +171,7 @@ class Vanagon
170
171
  VanagonLogger.info "Checking out '#{ref}' from Git repo '#{dirname}'"
171
172
  clone.checkout(ref)
172
173
  rescue ::Git::GitExecuteError
173
- raise Vanagon::CheckoutFailed, "unable to checkout #{ref} from '#{url}'"
174
+ raise Vanagon::CheckoutFailed, "unable to checkout #{ref} from '#{log_url}'"
174
175
  end
175
176
  private :checkout!
176
177
 
@@ -108,6 +108,9 @@ class Vanagon
108
108
  uri = URI.parse(target_url.to_s)
109
109
  target_file ||= File.basename(uri.path)
110
110
 
111
+ # Add X-RPROXY-PASS to request header if the environment variable exists
112
+ headers['X-RPROXY-PASS'] = ENV['X-RPROXY-PASS'] if ENV['X-RPROXY-PASS']
113
+
111
114
  VanagonLogger.info "Downloading file '#{target_file}' from url '#{target_url}'"
112
115
 
113
116
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
@@ -258,7 +258,7 @@ class Vanagon
258
258
  mirrors.to_a.shuffle.each do |mirror|
259
259
  begin
260
260
  VanagonLogger.info %(Attempting to fetch from mirror URL "#{mirror}")
261
- @source = Vanagon::Component::Source.source(mirror, options)
261
+ @source = Vanagon::Component::Source.source(mirror, **options)
262
262
  return true if source.fetch
263
263
  rescue SocketError
264
264
  # SocketError means that there was no DNS/name resolution
@@ -281,7 +281,7 @@ class Vanagon
281
281
  # or False otherwise
282
282
  def fetch_url(options)
283
283
  VanagonLogger.info %(Attempting to fetch from canonical URL "#{url}")
284
- @source = Vanagon::Component::Source.source(url, options)
284
+ @source = Vanagon::Component::Source.source(url, **options)
285
285
  # Explicitly coerce the return value of #source.fetch,
286
286
  # because each subclass of Vanagon::Component::Source returns
287
287
  # an inconsistent value if #fetch is successful.
@@ -171,7 +171,7 @@ class Vanagon
171
171
 
172
172
  def render # rubocop:disable Metrics/AbcSize
173
173
  # Simple sanity check for the project
174
- if @project.version.nil? or @project.version.empty?
174
+ if @project.version.nil? || @project.version.empty?
175
175
  raise Vanagon::Error, "Project requires a version set, all is lost."
176
176
  end
177
177
 
@@ -182,6 +182,17 @@ class Vanagon
182
182
  @project.make_makefile(workdir)
183
183
  end
184
184
 
185
+ def dependencies
186
+ # Simple sanity check for the project
187
+ if @project.version.nil? || @project.version.empty?
188
+ raise Vanagon::Error, "Project requires a version set, all is lost."
189
+ end
190
+
191
+ VanagonLogger.info "creating dependencies list"
192
+ @project.fetch_sources(workdir, retry_count, timeout)
193
+ @project.cli_manifest_json(@platform)
194
+ end
195
+
185
196
  # Initialize the logging instance
186
197
  def loginit(logfile)
187
198
  @@logger = Logger.new(logfile)
@@ -346,7 +346,7 @@ class Vanagon
346
346
  end
347
347
 
348
348
  def build_request_object
349
- user = ENV['USER'] || ENV['USERNAME'] || 'unknown'
349
+ user = ENV['USER'] || ENV['USERNAME'] || 'vanagon'
350
350
 
351
351
  @saved_job_id = user + "-" + DateTime.now.strftime('%Q')
352
352
  request_object = {
@@ -360,7 +360,7 @@ class Vanagon
360
360
  :user => user
361
361
  },
362
362
  },
363
- :priority => 1, # DO NOT use priority 1 in automated CI runs
363
+ :priority => 3, # DO NOT use priority 1 in automated CI runs
364
364
  }
365
365
  unless @token_vmpooler.nil?
366
366
  request_object[:vm_token] = @token_vmpooler
@@ -0,0 +1,10 @@
1
+ platform "el-9-aarch64" do |plat|
2
+ plat.servicedir "/usr/lib/systemd/system"
3
+ plat.defaultdir "/etc/sysconfig"
4
+ plat.servicetype "systemd"
5
+
6
+ packages = %w(autoconf automake createrepo gcc gcc-c++ rsync cmake make rpm-libs rpm-build libarchive)
7
+ plat.provision_with "dnf install -y --allowerasing #{packages.join(' ')}"
8
+ plat.install_build_dependencies_with "dnf install -y --allowerasing "
9
+ plat.vmpooler_template "redhat-9-arm64"
10
+ end
@@ -0,0 +1,10 @@
1
+ platform "el-9-x86_64" do |plat|
2
+ plat.servicedir "/usr/lib/systemd/system"
3
+ plat.defaultdir "/etc/sysconfig"
4
+ plat.servicetype "systemd"
5
+
6
+ packages = %w(gcc gcc-c++ autoconf automake createrepo rsync cmake make rpm-libs rpm-build rpm-sign libtool libarchive)
7
+ plat.provision_with "dnf install -y --allowerasing #{packages.join(' ')}"
8
+ plat.install_build_dependencies_with "dnf install -y --allowerasing "
9
+ plat.vmpooler_template "redhat-9-x86_64"
10
+ end
@@ -41,6 +41,8 @@ class Vanagon
41
41
  sign_commands = []
42
42
  end
43
43
 
44
+ signing_host = "jenkins@osx-signer-prod-2.delivery.puppetlabs.net"
45
+
44
46
  # Setup build directories
45
47
  ["bash -c 'mkdir -p $(tempdir)/osx/build/{dmg,pkg,scripts,resources,root,payload,plugins}'",
46
48
  "mkdir -p $(tempdir)/osx/build/root/#{project.name}-#{project.version}",
@@ -56,8 +58,26 @@ class Vanagon
56
58
 
57
59
  bom_install,
58
60
 
61
+ # The signing commands below should not cause `vanagon build` to fail. Many devs need to run `vanagon build`
62
+ # locally and do not necessarily need signed packages. The `|| :` will rescue failures by evaluating as successful.
63
+ # /Users/binaries will be a list of all binaries that need to be signed
64
+ "touch /Users/binaries || :",
65
+ # Find all of the executables (Mach-O files), and put the in /Users/binaries
66
+ "for item in `find $(tempdir)/osx/build/ -perm -0100 -type f` ; do file $$item | grep 'Mach-O' ; done | awk '{print $$1}' | sed 's/\:$$//' > /Users/binaries || :",
67
+ # A tmpdir is created on the signing_host, all of the executables will be rsyncd there to be signed
68
+ "#{Vanagon::Utilities.ssh_command} #{signing_host} mkdir -p /tmp/$(binaries_dir) || :",
69
+ "rsync -e '#{Vanagon::Utilities.ssh_command}' --no-perms --no-owner --no-group --files-from=/Users/binaries / #{signing_host}:/tmp/$(binaries_dir) || :",
70
+ "rsync -e '#{Vanagon::Utilities.ssh_command}' --no-perms --no-owner --no-group /Users/binaries #{signing_host}:/tmp/$(binaries_dir)/binaries_list || :",
71
+ # The binaries are signed, and then rsynced back
72
+ "#{Vanagon::Utilities.ssh_command} #{signing_host} /usr/local/bin/sign.sh $(binaries_dir) || :",
73
+ "rsync -e '#{Vanagon::Utilities.ssh_command}' --no-perms --no-owner --no-group -r #{signing_host}:/tmp/$(binaries_dir)/var/ /var || :",
74
+
59
75
  # Sign extra files
60
76
  sign_commands,
77
+ # Some extra files are created during the signing process that are not needed, so we delete them! Otherwise
78
+ # notarization gets confused by these extra files.
79
+ "for item in `find $(tempdir)/osx/build -type d -name Resources` ; do rm -rf $$item ; done || :",
80
+
61
81
 
62
82
  # Package the project
63
83
  "(cd $(tempdir)/osx/build/; #{@pkgbuild} --root root/#{project.name}-#{project.version} \
@@ -762,6 +762,17 @@ class Vanagon
762
762
  end
763
763
  end
764
764
 
765
+ # Writes a json file to STDOUT containing information
766
+ # about what will go into an artifact
767
+ #
768
+ # @param platform [String] platform we're writing metadata for
769
+ def cli_manifest_json(platform)
770
+ manifest = build_manifest_json
771
+ metadata = metadata_merge(manifest, @upstream_metadata)
772
+
773
+ puts JSON.pretty_generate(metadata)
774
+ end
775
+
765
776
  # Writes a yaml file at `output/<name>-<version>.<platform>.settings.yaml`
766
777
  # containing settings used to build the current project on the platform
767
778
  # provided (and a corresponding sha1sum file) if `yaml_settings` has been
@@ -9,6 +9,10 @@ workdir := $(PWD)
9
9
 
10
10
  all: file-list-before-build <%= package_name %>
11
11
 
12
+ <%- if @platform.is_macos? -%>
13
+ binaries_dir := $(shell <%= @platform.mktemp %> 2>/dev/null)
14
+ <%- end -%>
15
+
12
16
  <%= package_name %>: <%= @name %>-<%= @version %>.tar.gz
13
17
  <%= generate_package.join("\n\t") %>
14
18
 
@@ -81,7 +81,7 @@ Requires: <%= requires.requirement %><%= requires.version ? " #{requires.versio
81
81
  # did not specify a dependency on these.
82
82
  # In the future, we will supress pre/post scripts completely if there's nothing
83
83
  # specified by the project or the components.
84
- <%- if @platform.is_fedora? && @platform.os_version.to_i >= 29 -%>
84
+ <%- if @platform.is_fedora? || (@platform.is_el? && @platform.os_version.to_i >= 9) -%>
85
85
  Requires(pre): /usr/bin/mkdir
86
86
  Requires(pre): /usr/bin/touch
87
87
  Requires(post): /usr/bin/mkdir
@@ -1,5 +1,4 @@
1
- begin
2
- require 'aws-sdk'
1
+ begin require 'aws-sdk'
3
2
  rescue LoadError
4
3
  $stderr.puts "Unable to load AWS SDK; skipping optional EC2 engine spec tests"
5
4
  end
@@ -28,7 +27,10 @@ if defined? ::Aws
28
27
 
29
28
  it 'returns "ec2" name' do
30
29
  stub_request(:get, "http://169.254.169.254/latest/meta-data/iam/security-credentials/").
30
+ to_return(status: 200, body: "", headers: {})
31
+ stub_request(:put, "http://169.254.169.254/latest/api/token").
31
32
  to_return(status: 200, body: "", headers: {})
33
+
32
34
  expect(Vanagon::Engine::Ec2.new(platform_ec2).name).to eq('ec2')
33
35
  end
34
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-24 00:00:00.000000000 Z
11
+ date: 2022-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -118,6 +118,7 @@ files:
118
118
  - lib/vanagon/cli/build_host_info.rb
119
119
  - lib/vanagon/cli/build_requirements.rb
120
120
  - lib/vanagon/cli/completion.rb
121
+ - lib/vanagon/cli/dependencies.rb
121
122
  - lib/vanagon/cli/inspect.rb
122
123
  - lib/vanagon/cli/list.rb
123
124
  - lib/vanagon/cli/render.rb
@@ -164,11 +165,10 @@ files:
164
165
  - lib/vanagon/platform/defaults/el-7-x86_64.rb
165
166
  - lib/vanagon/platform/defaults/el-8-aarch64.rb
166
167
  - lib/vanagon/platform/defaults/el-8-x86_64.rb
167
- - lib/vanagon/platform/defaults/fedora-30-x86_64.rb
168
- - lib/vanagon/platform/defaults/fedora-31-x86_64.rb
168
+ - lib/vanagon/platform/defaults/el-9-aarch64.rb
169
+ - lib/vanagon/platform/defaults/el-9-x86_64.rb
169
170
  - lib/vanagon/platform/defaults/fedora-32-x86_64.rb
170
171
  - lib/vanagon/platform/defaults/fedora-34-x86_64.rb
171
- - lib/vanagon/platform/defaults/osx-10.14-x86_64.rb
172
172
  - lib/vanagon/platform/defaults/osx-10.15-x86_64.rb
173
173
  - lib/vanagon/platform/defaults/osx-11-x86_64.rb
174
174
  - lib/vanagon/platform/defaults/redhatfips-7-x86_64.rb
@@ -312,9 +312,12 @@ require_paths:
312
312
  - lib
313
313
  required_ruby_version: !ruby/object:Gem::Requirement
314
314
  requirements:
315
- - - "~>"
315
+ - - ">="
316
316
  - !ruby/object:Gem::Version
317
317
  version: '2.3'
318
+ - - "<"
319
+ - !ruby/object:Gem::Version
320
+ version: '4'
318
321
  required_rubygems_version: !ruby/object:Gem::Requirement
319
322
  requirements:
320
323
  - - ">="
@@ -326,42 +329,42 @@ signing_key:
326
329
  specification_version: 3
327
330
  summary: All of your packages will fit into this van with this one simple trick.
328
331
  test_files:
329
- - spec/lib/vanagon/component_spec.rb
332
+ - spec/lib/makefile_spec.rb
333
+ - spec/lib/vanagon/common/user_spec.rb
334
+ - spec/lib/vanagon/common/pathname_spec.rb
335
+ - spec/lib/vanagon/utilities_spec.rb
336
+ - spec/lib/vanagon/project_spec.rb
330
337
  - spec/lib/vanagon/utilities/shell_utilities_spec.rb
331
338
  - spec/lib/vanagon/utilities/extra_files_signer_spec.rb
332
- - spec/lib/vanagon/extensions/set/json_spec.rb
333
- - spec/lib/vanagon/extensions/ostruct/json_spec.rb
334
- - spec/lib/vanagon/extensions/string_spec.rb
339
+ - spec/lib/vanagon/cli_spec.rb
340
+ - spec/lib/vanagon/driver_spec.rb
335
341
  - spec/lib/vanagon/engine/base_spec.rb
342
+ - spec/lib/vanagon/engine/local_spec.rb
336
343
  - spec/lib/vanagon/engine/hardware_spec.rb
337
- - spec/lib/vanagon/engine/always_be_scheduling_spec.rb
338
344
  - spec/lib/vanagon/engine/ec2_spec.rb
345
+ - spec/lib/vanagon/engine/always_be_scheduling_spec.rb
339
346
  - spec/lib/vanagon/engine/pooler_spec.rb
340
347
  - spec/lib/vanagon/engine/docker_spec.rb
341
- - spec/lib/vanagon/engine/local_spec.rb
342
- - spec/lib/vanagon/common/user_spec.rb
343
- - spec/lib/vanagon/common/pathname_spec.rb
348
+ - spec/lib/vanagon/project/dsl_spec.rb
349
+ - spec/lib/vanagon/component_spec.rb
350
+ - spec/lib/vanagon/extensions/ostruct/json_spec.rb
351
+ - spec/lib/vanagon/extensions/string_spec.rb
352
+ - spec/lib/vanagon/extensions/set/json_spec.rb
353
+ - spec/lib/vanagon/platform/solaris_11_spec.rb
354
+ - spec/lib/vanagon/platform/rpm_spec.rb
355
+ - spec/lib/vanagon/platform/solaris_10_spec.rb
356
+ - spec/lib/vanagon/platform/dsl_spec.rb
357
+ - spec/lib/vanagon/platform/rpm/aix_spec.rb
358
+ - spec/lib/vanagon/platform/windows_spec.rb
359
+ - spec/lib/vanagon/platform/deb_spec.rb
360
+ - spec/lib/vanagon/platform/osx_spec.rb
344
361
  - spec/lib/vanagon/environment_spec.rb
345
362
  - spec/lib/vanagon/platform_spec.rb
346
- - spec/lib/vanagon/component/rules_spec.rb
347
363
  - spec/lib/vanagon/component/source_spec.rb
348
- - spec/lib/vanagon/component/source/rewrite_spec.rb
349
- - spec/lib/vanagon/component/source/http_spec.rb
350
- - spec/lib/vanagon/component/source/git_spec.rb
364
+ - spec/lib/vanagon/component/rules_spec.rb
351
365
  - spec/lib/vanagon/component/source/local_spec.rb
366
+ - spec/lib/vanagon/component/source/git_spec.rb
367
+ - spec/lib/vanagon/component/source/http_spec.rb
368
+ - spec/lib/vanagon/component/source/rewrite_spec.rb
352
369
  - spec/lib/vanagon/component/dsl_spec.rb
353
- - spec/lib/vanagon/utilities_spec.rb
354
- - spec/lib/vanagon/project/dsl_spec.rb
355
- - spec/lib/vanagon/cli_spec.rb
356
- - spec/lib/vanagon/project_spec.rb
357
- - spec/lib/vanagon/platform/rpm_spec.rb
358
- - spec/lib/vanagon/platform/windows_spec.rb
359
- - spec/lib/vanagon/platform/osx_spec.rb
360
- - spec/lib/vanagon/platform/deb_spec.rb
361
- - spec/lib/vanagon/platform/rpm/aix_spec.rb
362
- - spec/lib/vanagon/platform/dsl_spec.rb
363
- - spec/lib/vanagon/platform/solaris_11_spec.rb
364
- - spec/lib/vanagon/platform/solaris_10_spec.rb
365
- - spec/lib/vanagon/driver_spec.rb
366
- - spec/lib/makefile_spec.rb
367
370
  - spec/lib/git/rev_list_spec.rb
@@ -1,11 +0,0 @@
1
- platform "fedora-30-x86_64" do |plat|
2
- plat.servicedir "/usr/lib/systemd/system"
3
- plat.defaultdir "/etc/sysconfig"
4
- plat.servicetype "systemd"
5
- plat.dist "fc30"
6
-
7
- packages = %w(autoconf automake createrepo rsync gcc gcc-c++ make rpmdevtools rpm-libs cmake rpm-sign yum-utils)
8
- plat.provision_with "/usr/bin/dnf install -y --best --allowerasing #{packages.join(' ')}"
9
- plat.install_build_dependencies_with "/usr/bin/dnf install -y --best --allowerasing"
10
- plat.vmpooler_template "fedora-30-x86_64"
11
- end
@@ -1,11 +0,0 @@
1
- platform "fedora-31-x86_64" do |plat|
2
- plat.servicedir "/usr/lib/systemd/system"
3
- plat.defaultdir "/etc/sysconfig"
4
- plat.servicetype "systemd"
5
- plat.dist "fc31"
6
-
7
- packages = %w(autoconf automake cmake createrepo rsync gcc gcc-c++ make rpmdevtools rpm-libs rpm-sign)
8
- plat.provision_with "/usr/bin/dnf install -y --best --allowerasing #{packages.join(' ')}"
9
- plat.install_build_dependencies_with "/usr/bin/dnf install -y --best --allowerasing"
10
- plat.vmpooler_template "fedora-31-x86_64"
11
- end
@@ -1,21 +0,0 @@
1
- platform "osx-10.14-x86_64" do |plat|
2
- plat.servicetype "launchd"
3
- plat.servicedir "/Library/LaunchDaemons"
4
- plat.codename "mojave"
5
-
6
- plat.provision_with "export HOMEBREW_NO_EMOJI=true"
7
- plat.provision_with "export HOMEBREW_VERBOSE=true"
8
- plat.provision_with "sudo dscl . -create /Users/test"
9
- plat.provision_with "sudo dscl . -create /Users/test UserShell /bin/bash"
10
- plat.provision_with "sudo dscl . -create /Users/test UniqueID 1001"
11
- plat.provision_with "sudo dscl . -create /Users/test PrimaryGroupID 1000"
12
- plat.provision_with "sudo dscl . -create /Users/test NFSHomeDirectory /Users/test"
13
- plat.provision_with "sudo dscl . -passwd /Users/test password"
14
- plat.provision_with "sudo dscl . -merge /Groups/admin GroupMembership test"
15
- plat.provision_with "echo 'test ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/username"
16
- plat.provision_with "mkdir -p /etc/homebrew"
17
- plat.provision_with "cd /etc/homebrew"
18
- plat.provision_with %Q(su test -c 'echo | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"')
19
- plat.provision_with "sudo chown -R test:admin /Users/test/"
20
- plat.vmpooler_template "osx-1014-x86_64"
21
- end