vanagon 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/render +27 -0
- data/lib/vanagon/driver.rb +14 -2
- data/lib/vanagon/platform.rb +109 -12
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c9f345fa7806fdbe0b1cf43676acd3549f10ff7
|
4
|
+
data.tar.gz: d8e6a4740b1a1e914d7b788b745caea008823204
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69d1ff1c24e3c71daf49454fa9a3bcdaf5faeb4caf611c4859106828e0e4e91f18337bd41500a0a9a56693f48f7ccff49fedd585678210fc8ebe6d43768ca15a
|
7
|
+
data.tar.gz: 1dd4036ebfa52ec377234567a91c9e838e01e63a262b56d480646b89b0562296cd8e3ca9d64783565b0e1f13c940636c2e276da7b1561eb348aa4f7784c02fac
|
data/bin/render
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
load File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "vanagon.rb"))
|
3
|
+
|
4
|
+
optparse = Vanagon::OptParse.new(
|
5
|
+
"#{File.basename(__FILE__)} <project-name> <platform-name> [options]",
|
6
|
+
[:workdir, :configdir, :engine]
|
7
|
+
)
|
8
|
+
options = optparse.parse! ARGV
|
9
|
+
|
10
|
+
project = ARGV[0]
|
11
|
+
platforms = ARGV[1]
|
12
|
+
targets = ARGV[2]
|
13
|
+
|
14
|
+
if project.nil? or platforms.nil?
|
15
|
+
warn "project and platform are both required arguments."
|
16
|
+
puts optparse
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
platform_list = platforms.split(',')
|
21
|
+
target_list = []
|
22
|
+
|
23
|
+
platform_list.zip(target_list).each do |pair|
|
24
|
+
platform, target = pair
|
25
|
+
artifact = Vanagon::Driver.new(platform, project, options.merge({ :target => target }))
|
26
|
+
artifact.render
|
27
|
+
end
|
data/lib/vanagon/driver.rb
CHANGED
@@ -13,9 +13,10 @@ class Vanagon
|
|
13
13
|
attr_accessor :platform, :project, :target, :workdir, :verbose, :preserve
|
14
14
|
attr_accessor :timeout, :retry_count
|
15
15
|
|
16
|
-
def initialize(platform, project, options = { :configdir
|
16
|
+
def initialize(platform, project, options = { workdir: nil, configdir: nil, target: nil, engine: nil, components: nil, skipcheck: false, verbose: false, preserve: false, only_build: nil }) # rubocop:disable Metrics/AbcSize
|
17
17
|
@verbose = options[:verbose]
|
18
18
|
@preserve = options[:preserve]
|
19
|
+
@workdir = options[:workdir] || Dir.mktmpdir
|
19
20
|
|
20
21
|
@@configdir = options[:configdir] || File.join(Dir.pwd, "configs")
|
21
22
|
components = options[:components] || []
|
@@ -111,7 +112,7 @@ class Vanagon
|
|
111
112
|
if @project.version.nil? or @project.version.empty?
|
112
113
|
raise Vanagon::Error, "Project requires a version set, all is lost."
|
113
114
|
end
|
114
|
-
|
115
|
+
|
115
116
|
@engine.startup(@workdir)
|
116
117
|
|
117
118
|
puts "Target is #{@engine.target}"
|
@@ -135,6 +136,17 @@ class Vanagon
|
|
135
136
|
end
|
136
137
|
end
|
137
138
|
|
139
|
+
def render
|
140
|
+
# Simple sanity check for the project
|
141
|
+
if @project.version.nil? or @project.version.empty?
|
142
|
+
raise Vanagon::Error, "Project requires a version set, all is lost."
|
143
|
+
end
|
144
|
+
|
145
|
+
puts "rendering Makefile"
|
146
|
+
retry_task { @project.fetch_sources(@workdir) }
|
147
|
+
@project.make_makefile(@workdir)
|
148
|
+
end
|
149
|
+
|
138
150
|
def prepare(workdir = nil) # rubocop:disable Metrics/AbcSize
|
139
151
|
@workdir = workdir ? FileUtils.mkdir_p(workdir).first : Dir.mktmpdir
|
140
152
|
@engine.startup(@workdir)
|
data/lib/vanagon/platform.rb
CHANGED
@@ -2,16 +2,102 @@ require 'vanagon/platform/dsl'
|
|
2
2
|
|
3
3
|
class Vanagon
|
4
4
|
class Platform
|
5
|
-
|
6
|
-
|
7
|
-
attr_accessor :
|
8
|
-
attr_accessor :
|
9
|
-
attr_accessor :
|
10
|
-
attr_accessor :
|
11
|
-
attr_accessor :
|
12
|
-
attr_accessor :
|
13
|
-
|
14
|
-
|
5
|
+
# Basic generic information related to a given instance of Platform.
|
6
|
+
# e.g. The name we call it, the platform triplet (name-version-arch), etc.
|
7
|
+
attr_accessor :name
|
8
|
+
attr_accessor :platform_triple
|
9
|
+
attr_accessor :architecture
|
10
|
+
attr_accessor :os_name
|
11
|
+
attr_accessor :os_version
|
12
|
+
attr_accessor :codename # this is Debian/Ubuntu specific
|
13
|
+
|
14
|
+
# The name of the sort of package type that a given platform expects,
|
15
|
+
# e.g. msi, rpm,
|
16
|
+
attr_accessor :package_type
|
17
|
+
|
18
|
+
# The name of the sort of init system that a given platform uses
|
19
|
+
attr_accessor :servicetype
|
20
|
+
# Where does a given platform expect to find init scripts/service files?
|
21
|
+
# e.g. /etc/init.d, /usr/lib/systemd/system
|
22
|
+
attr_accessor :servicedir
|
23
|
+
# Where does a given platform's init system expect to find
|
24
|
+
# something resembling 'defaults' files. Most likely to apply
|
25
|
+
# to Linux systems that use SysV-ish, upstart, or systemd init systems.
|
26
|
+
attr_accessor :defaultdir
|
27
|
+
|
28
|
+
# Each of these holds the path or name of the command in question,
|
29
|
+
# e.g. `copy = "/usr/local/bin/gcp"`, or `copy = "cp"
|
30
|
+
attr_accessor :copy
|
31
|
+
attr_accessor :find
|
32
|
+
attr_accessor :install
|
33
|
+
attr_accessor :make
|
34
|
+
attr_accessor :patch
|
35
|
+
attr_accessor :rpmbuild # This is RedHat/EL/Fedora/SLES specific
|
36
|
+
attr_accessor :sort
|
37
|
+
attr_accessor :tar
|
38
|
+
|
39
|
+
# Hold a string containing the values that a given platform
|
40
|
+
# should use when a Makefile is run - resolves to the CFLAGS
|
41
|
+
# and LDFLAGS variables. Should also be extended to support
|
42
|
+
# CXXFLAGS and CPPFLAGS ASAP.
|
43
|
+
attr_accessor :cflags
|
44
|
+
attr_accessor :ldflags
|
45
|
+
|
46
|
+
# Stores an Array of OpenStructs, each representing a complete
|
47
|
+
# command to be run to install external the needed toolchains
|
48
|
+
# and build dependencies for a given target platform.
|
49
|
+
attr_accessor :build_dependencies
|
50
|
+
|
51
|
+
# Stores the local path where retrieved artifacts will be saved.
|
52
|
+
attr_accessor :output_dir
|
53
|
+
|
54
|
+
# Username to use when connecting to a build target
|
55
|
+
attr_accessor :target_user
|
56
|
+
|
57
|
+
# Stores an Array of Strings, which will be passed
|
58
|
+
# in as a shell script as part of the provisioning step
|
59
|
+
# for a given build target
|
60
|
+
attr_accessor :provisioning
|
61
|
+
|
62
|
+
# Determines if a platform should be treated as
|
63
|
+
# cross-compiled or natively compiled.
|
64
|
+
attr_accessor :cross_compiled
|
65
|
+
|
66
|
+
# A string, containing the script that will be executed on
|
67
|
+
# the remote build target to determine how many CPU cores
|
68
|
+
# are available on that platform. Vanagon will use that count
|
69
|
+
# to determine how many build threads should be initialized
|
70
|
+
# for compilations.
|
71
|
+
attr_accessor :num_cores
|
72
|
+
|
73
|
+
# Generic engine
|
74
|
+
attr_accessor :ssh_port
|
75
|
+
|
76
|
+
# Hardware engine specific
|
77
|
+
attr_accessor :build_hosts
|
78
|
+
|
79
|
+
# Always-Be-Scheduling engine specific
|
80
|
+
attr_accessor :abs_resource_name
|
81
|
+
|
82
|
+
# VMpooler engine specific
|
83
|
+
attr_accessor :vmpooler_template
|
84
|
+
|
85
|
+
# Docker engine specific
|
86
|
+
attr_accessor :docker_image
|
87
|
+
|
88
|
+
# AWS engine specific
|
89
|
+
attr_accessor :aws_ami
|
90
|
+
attr_accessor :aws_user_data
|
91
|
+
attr_accessor :aws_shutdown_behavior
|
92
|
+
attr_accessor :aws_key_name
|
93
|
+
attr_accessor :aws_region
|
94
|
+
attr_accessor :aws_key
|
95
|
+
attr_accessor :aws_instance_type
|
96
|
+
attr_accessor :aws_vpc_id
|
97
|
+
attr_accessor :aws_subnet_id
|
98
|
+
|
99
|
+
# Freeform Hash of leftover settings
|
100
|
+
attr_accessor :settings
|
15
101
|
|
16
102
|
# Platform names currently contain some information about the platform. Fields
|
17
103
|
# within the name are delimited by the '-' character, and this regex can be used to
|
@@ -221,11 +307,22 @@ class Vanagon
|
|
221
307
|
return !!@name.match(/^cisco-wrlinux-.*$/)
|
222
308
|
end
|
223
309
|
|
224
|
-
# Utility matcher to determine
|
310
|
+
# Utility matcher to determine if the platform is an osx variety
|
225
311
|
#
|
312
|
+
# @deprecated Please use is_macos? instead
|
226
313
|
# @return [true, false] true if it is an osx variety, false otherwise
|
227
314
|
def is_osx?
|
228
|
-
|
315
|
+
warn "is_osx? is a deprecated method, please use #is_macos? instead."
|
316
|
+
is_macos?
|
317
|
+
end
|
318
|
+
|
319
|
+
# Utility matcher to determine if the platform is a macos or osx variety
|
320
|
+
# is_osx is a deprecated method that calls is_macos
|
321
|
+
# We still match for osx currently but this will change
|
322
|
+
#
|
323
|
+
# @return [true, false] true if it is a macos or osx variety, false otherwise
|
324
|
+
def is_macos?
|
325
|
+
!!(@name =~ /^macos-.*$/ || @name =~ /^osx-.*$/)
|
229
326
|
end
|
230
327
|
|
231
328
|
# Utility matcher to determine is the platform is a solaris variety
|
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.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|
@@ -59,6 +59,7 @@ executables:
|
|
59
59
|
- build
|
60
60
|
- inspect
|
61
61
|
- ship
|
62
|
+
- render
|
62
63
|
- repo
|
63
64
|
- devkit
|
64
65
|
- build_host_info
|
@@ -71,6 +72,7 @@ files:
|
|
71
72
|
- bin/build_host_info
|
72
73
|
- bin/devkit
|
73
74
|
- bin/inspect
|
75
|
+
- bin/render
|
74
76
|
- bin/repo
|
75
77
|
- bin/ship
|
76
78
|
- lib/git/basic_submodules.rb
|
@@ -233,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
235
|
version: '0'
|
234
236
|
requirements: []
|
235
237
|
rubyforge_project:
|
236
|
-
rubygems_version: 2.5
|
238
|
+
rubygems_version: 2.2.5
|
237
239
|
signing_key:
|
238
240
|
specification_version: 3
|
239
241
|
summary: All of your packages will fit into this van with this one simple trick.
|