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 +4 -4
- data/lib/git/basic_submodules.rb +1 -1
- data/lib/vanagon/cli/dependencies.rb +89 -0
- data/lib/vanagon/cli.rb +4 -0
- data/lib/vanagon/component/source/git.rb +8 -7
- data/lib/vanagon/component/source/http.rb +3 -0
- data/lib/vanagon/component.rb +2 -2
- data/lib/vanagon/driver.rb +12 -1
- data/lib/vanagon/engine/always_be_scheduling.rb +2 -2
- data/lib/vanagon/platform/defaults/el-9-aarch64.rb +10 -0
- data/lib/vanagon/platform/defaults/el-9-x86_64.rb +10 -0
- data/lib/vanagon/platform/osx.rb +20 -0
- data/lib/vanagon/project.rb +11 -0
- data/resources/Makefile.erb +4 -0
- data/resources/rpm/project.spec.erb +1 -1
- data/spec/lib/vanagon/engine/ec2_spec.rb +4 -2
- metadata +35 -32
- data/lib/vanagon/platform/defaults/fedora-30-x86_64.rb +0 -11
- data/lib/vanagon/platform/defaults/fedora-31-x86_64.rb +0 -11
- data/lib/vanagon/platform/defaults/osx-10.14-x86_64.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9b054ba055927fcdbc69228b433ec3c01e52841c4fd93841394d3ab371bcb0e
|
4
|
+
data.tar.gz: 787e12bc102de7ab7a16b7b0f9a0f9fbff4f60fece396fdcc3a9b752f8c933aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0220c7ab2bd7f07945dc0d313976693616ac8ef99103d526da8a89b85c21f8089ed54117a6df5201ca7cb17b40fa6f8c32e8ed359a1da0e75afc831e961860c
|
7
|
+
data.tar.gz: b460870be764e84925886041b21bc017fa3016575c57a005bfd482ec7242abf668f0e03b2fe7e243f42ae5d3612f99b4fb177322eed0845033eb2a99cec0f6e7
|
data/lib/git/basic_submodules.rb
CHANGED
@@ -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, "
|
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 '#{
|
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 '#{
|
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 '#{
|
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|
|
data/lib/vanagon/component.rb
CHANGED
@@ -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.
|
data/lib/vanagon/driver.rb
CHANGED
@@ -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?
|
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'] || '
|
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 =>
|
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
|
data/lib/vanagon/platform/osx.rb
CHANGED
@@ -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} \
|
data/lib/vanagon/project.rb
CHANGED
@@ -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
|
data/resources/Makefile.erb
CHANGED
@@ -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 >=
|
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.
|
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:
|
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/
|
168
|
-
- lib/vanagon/platform/defaults/
|
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/
|
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/
|
333
|
-
- spec/lib/vanagon/
|
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/
|
342
|
-
- spec/lib/vanagon/
|
343
|
-
- spec/lib/vanagon/
|
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/
|
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
|