vanagon 0.14.2 → 0.14.3
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/README.md +18 -17
- data/bin/ship +13 -9
- data/lib/vanagon.rb +4 -0
- data/lib/vanagon/common/pathname.rb +11 -8
- data/lib/vanagon/engine/always_be_scheduling.rb +22 -6
- data/lib/vanagon/environment.rb +1 -0
- data/lib/vanagon/extensions/hashable.rb +3 -2
- data/lib/vanagon/platform.rb +5 -5
- data/lib/vanagon/platform/rpm/aix.rb +2 -2
- data/lib/vanagon/platform/rpm/sles.rb +2 -2
- data/lib/vanagon/platform/rpm/wrl.rb +5 -5
- data/lib/vanagon/platform/windows.rb +29 -19
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfdf9e485d076f8615fb5dec7ee3659bdb30cadf
|
4
|
+
data.tar.gz: 11c28aee93eaa0c737ceb44fc6152bef2d5fe421
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d88904c2f719cbd894784ef42792b78dbcf7c407eea7320f80e208780de4e60858aad4835109a94018a956b3596732226c48131488efd6b10dc95ae54ca816bf
|
7
|
+
data.tar.gz: a934492d38471190d3c984d2ff35a6d87bbf459ade415d44e39a68a2c48639845e7c7831bb360f4c99bb09e06b9478642dc18f07ef619186a1e44c50d84ecf54
|
data/README.md
CHANGED
@@ -9,13 +9,13 @@
|
|
9
9
|
- [Local Host:](#local-host)
|
10
10
|
- [Remote Build Target:](#remote-build-target)
|
11
11
|
- [Configuration and Usage](#configuration-and-usage)
|
12
|
+
- [Overview](#overview)
|
12
13
|
- [`build` usage](#build-usage)
|
13
14
|
- [`inspect` usage](#inspect-usage)
|
14
15
|
- [Engines](#engines)
|
15
16
|
- [Amazon Ec2](#amazon-ec2)
|
16
17
|
- [Contributing](#contributing)
|
17
18
|
- [License](#license)
|
18
|
-
- [Overview](#overview)
|
19
19
|
- [Maintainers](#maintainers)
|
20
20
|
|
21
21
|
<!-- /MarkdownTOC -->
|
@@ -26,7 +26,8 @@
|
|
26
26
|
Vanagon is a tool to build a single package out of a project, which can itself
|
27
27
|
contain one or more components. This tooling is being used to develop the
|
28
28
|
puppet-agent package, which contains components such as openssl, ruby, and
|
29
|
-
augeas among others. For a simple example, please see the project in the
|
29
|
+
augeas among others. For a simple example, please see the project in the
|
30
|
+
[`examples/`](examples) directory.
|
30
31
|
|
31
32
|
Vanagon builds up a Makefile and packaging files (specfile for RPM,
|
32
33
|
control/rules/etc for DEB) and copies them to a remote host, where make can be
|
@@ -71,6 +72,18 @@ Vanagon won't be much use without a project to build. Beyond that, you must
|
|
71
72
|
define any platforms you want to build for. Vanagon ships with some simple
|
72
73
|
binaries to use, but the one you probably care about is named 'build'.
|
73
74
|
|
75
|
+
### Overview
|
76
|
+
|
77
|
+
Vanagon is broken down into three core ideas: the project, the component and
|
78
|
+
the platform. The project contains one or more components and is built for a
|
79
|
+
platform. As a quick example, if I had a ruby app and wanted to package it, the
|
80
|
+
project would probably contain a component for ruby and a component for my app.
|
81
|
+
If I wanted to build it for debian wheezy, I would define a platform called
|
82
|
+
wheezy and build my project against it.
|
83
|
+
|
84
|
+
For more detailed examples of the DSLs available, please see the
|
85
|
+
[examples](examples) directory and the YARD documentation for Vanagon.
|
86
|
+
|
74
87
|
### `build` usage
|
75
88
|
The build command has positional arguments and position independent flags.
|
76
89
|
|
@@ -281,24 +294,12 @@ end
|
|
281
294
|
Contributing
|
282
295
|
---
|
283
296
|
We'd love to get contributions from you! Once you are up and running, take a look at the
|
284
|
-
[Contribution Documents](
|
297
|
+
[Contribution Documents](docs/CONTRIBUTING.md) to see how to get your changes merged
|
285
298
|
in.
|
286
299
|
|
287
300
|
License
|
288
301
|
---
|
289
|
-
See [LICENSE](
|
290
|
-
|
291
|
-
Overview
|
292
|
-
---
|
293
|
-
Vanagon is broken down into three core ideas: the project, the component and
|
294
|
-
the platform. The project contains one or more components and is built for a
|
295
|
-
platform. As a quick example, if I had a ruby app and wanted to package it, the
|
296
|
-
project would probably contain a component for ruby and a component for my app.
|
297
|
-
If I wanted to build it for debian wheezy, I would define a platform called
|
298
|
-
wheezy and build my project against it.
|
299
|
-
|
300
|
-
For more detailed examples of the DSLs available, please see the
|
301
|
-
[examples](https://github.com/puppetlabs/vanagon/tree/master/examples) directory and the YARD documentation for Vanagon.
|
302
|
+
See [LICENSE](LICENSE) file.
|
302
303
|
|
303
304
|
## Maintainers
|
304
|
-
See MAINTAINERS file.
|
305
|
+
See [MAINTAINERS](MAINTAINERS) file.
|
data/bin/ship
CHANGED
@@ -6,6 +6,16 @@ ENV["PROJECT_ROOT"] = Dir.pwd
|
|
6
6
|
# This is not intended to function outside of Puppet Labs' infrastructure.
|
7
7
|
# End of warning.
|
8
8
|
|
9
|
+
artifactory_warning = <<-DOC
|
10
|
+
Unable to ship packages to artifactory. Please make sure you are pointing to a
|
11
|
+
recent version of packaging in your Gemfile. Please also make sure you include
|
12
|
+
the artifactory gem in your Gemfile.
|
13
|
+
|
14
|
+
i.e.,
|
15
|
+
gem 'packaging', :github => 'puppetlabs/packaging', branch: '1.0.x'
|
16
|
+
gem 'artifactory'
|
17
|
+
DOC
|
18
|
+
|
9
19
|
if Dir["output/**/*"].select { |entry| File.file?(entry) }.empty?
|
10
20
|
fail "No packages to ship in the output directory. Maybe you want to build some first?"
|
11
21
|
else
|
@@ -15,14 +25,8 @@ else
|
|
15
25
|
begin
|
16
26
|
Pkg::Util::RakeUtils.invoke_task('pl:jenkins:ship_to_artifactory', 'output')
|
17
27
|
rescue LoadError
|
18
|
-
warn
|
19
|
-
|
20
|
-
|
21
|
-
the artifactory gem in your Gemfile.
|
22
|
-
|
23
|
-
i.e.,
|
24
|
-
gem 'packaging', :github => 'puppetlabs/packaging', branch: '1.0.x'
|
25
|
-
gem 'artifactory'
|
26
|
-
DOC
|
28
|
+
warn artifactory_warning
|
29
|
+
rescue
|
30
|
+
warn artifactory_warning
|
27
31
|
end
|
28
32
|
end
|
data/lib/vanagon.rb
CHANGED
@@ -21,7 +21,7 @@ class Vanagon
|
|
21
21
|
# representing the group name of the owner of self.
|
22
22
|
attr_accessor :path, :mode, :owner, :group
|
23
23
|
|
24
|
-
# Each Pathname requires a filesystem path, and has many optional
|
24
|
+
# Each {Pathname} requires a filesystem path, and has many optional
|
25
25
|
# properties that may be set at initialization time.
|
26
26
|
# @param [String, Integer] mode the UNIX Octal permission string to use when this file is archived
|
27
27
|
# @param [String, Integer] owner the username or UID to use when this file is archived
|
@@ -38,17 +38,17 @@ class Vanagon
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# An alias to {Vanagon::Common::Pathname}'s constructor method,
|
41
|
-
# which returns a new Vanagon::Common::Pathname, explicitly marked as a file
|
41
|
+
# which returns a new {Vanagon::Common::Pathname}, explicitly marked as a file
|
42
42
|
# @see Vanagon::Common::Pathname#initialize
|
43
43
|
#
|
44
|
-
# @example Create a new Vanagon::Common::Pathname, marked as a file.
|
44
|
+
# @example Create a new {Vanagon::Common::Pathname}, marked as a file.
|
45
45
|
# Vanagon::Common::Pathname.file('/etc/puppet/puppet/puppet.conf')
|
46
46
|
def self.file(path, **args)
|
47
47
|
new(path, **args.merge!({ config: false }))
|
48
48
|
end
|
49
49
|
|
50
50
|
# An alias to {Vanagon::Common::Pathname}'s constructor method,
|
51
|
-
# which returns a new Vanagon::Common::Pathname, explicitly marked as a configuration file
|
51
|
+
# which returns a new {Vanagon::Common::Pathname}, explicitly marked as a configuration file
|
52
52
|
# @see Vanagon::Common::Pathname#initialize
|
53
53
|
#
|
54
54
|
# @example Create a new configuration file, marked as a configuration file.
|
@@ -69,9 +69,9 @@ class Vanagon
|
|
69
69
|
!!(@mode || @owner || @group)
|
70
70
|
end
|
71
71
|
|
72
|
-
# Equality -- Two instances of Vanagon::Common::Pathname are equal if they
|
72
|
+
# Equality -- Two instances of {Vanagon::Common::Pathname} are equal if they
|
73
73
|
# contain the same number attributes and if each attribute is equal to
|
74
|
-
# (according to
|
74
|
+
# (according to `Object#==`) the corresponding attribute in other_pathname.
|
75
75
|
#
|
76
76
|
# @return [Boolean] true if all attributes have equal values, or otherwise false.
|
77
77
|
def ==(other)
|
@@ -79,8 +79,11 @@ class Vanagon
|
|
79
79
|
end
|
80
80
|
alias :eql? :==
|
81
81
|
|
82
|
-
#
|
83
|
-
#
|
82
|
+
# Compute a hash-code for self, derived from its attributes. Two
|
83
|
+
# {Pathname} objects with the same content will have the same hash code
|
84
|
+
# (and will compare as equal using {#eql?})
|
85
|
+
#
|
86
|
+
# @return [Fixnum]
|
84
87
|
def hash
|
85
88
|
instance_variables.map { |v| instance_variable_get(v) }.hash
|
86
89
|
end
|
@@ -3,8 +3,8 @@ require 'json'
|
|
3
3
|
|
4
4
|
class Vanagon
|
5
5
|
class Engine
|
6
|
-
# This engine allows build resources to be managed by the "Always be
|
7
|
-
# Scheduling" (ABS) scheduler
|
6
|
+
# This engine allows build resources to be managed by the ["Always be
|
7
|
+
# Scheduling" (ABS) scheduler](https://github.com/puppetlabs/always-be-scheduling)
|
8
8
|
#
|
9
9
|
# ABS expects to ask `build_host_info` for the needed resources for a build,
|
10
10
|
# and to have that return a platform name. ABS will then acquire the
|
@@ -18,53 +18,69 @@ class Vanagon
|
|
18
18
|
# `build_host_info ... --engine always_be_scheduling` is specified on the
|
19
19
|
# command-line.
|
20
20
|
#
|
21
|
-
# Configuration
|
21
|
+
# Configuration
|
22
|
+
# -------------
|
22
23
|
#
|
23
24
|
# Project platform configurations can specify the platform name to be returned
|
24
25
|
# via the `abs_resource_name` attribute. If this is not set but `vmpooler_template`
|
25
26
|
# is set, then the `vmpooler_template` value will be used. Otherwise, the
|
26
27
|
# platform name will be returned unchanged.
|
27
28
|
#
|
28
|
-
# Example 1
|
29
|
+
# Example 1
|
30
|
+
# ---------
|
29
31
|
#
|
32
|
+
# ```
|
30
33
|
# platform 'ubuntu-10.04-amd64' do |plat|
|
31
34
|
# plat.vmpooler_template 'ubuntu-1004-amd64'
|
32
35
|
# end
|
36
|
+
# ```
|
33
37
|
#
|
38
|
+
# ```
|
34
39
|
# $ build_host_info puppet-agent ubuntu-10.04-amd64
|
35
40
|
# {"name":"ubuntu-10.04-amd64","engine":"pooler"}
|
36
41
|
#
|
37
42
|
# $ build_host_info puppet-agent ubuntu-10.04-amd64 --engine always_be_scheduling
|
38
43
|
# {"name":"ubuntu-10.04-amd64","engine":"always_be_scheduling"}
|
44
|
+
# ```
|
39
45
|
#
|
40
46
|
#
|
41
|
-
# Example 2
|
47
|
+
# Example 2
|
48
|
+
# ---------
|
42
49
|
#
|
50
|
+
# ```
|
43
51
|
# platform 'aix-5.3-ppc' do |plat|
|
44
52
|
# plat.build_host ['aix53-builder-1.example.com']
|
45
53
|
# plat.abs_resource_name 'aix-53-ppc'
|
46
54
|
# end
|
55
|
+
# ```
|
47
56
|
#
|
57
|
+
# ```
|
48
58
|
# $ build_host_info puppet-agent aix-5.3-ppc
|
49
59
|
# {"name":"aix53-builder-1.example.com","engine":"hardware"}
|
50
60
|
#
|
51
61
|
# $ build_host_info puppet-agent aix-5.3-ppc --engine always_be_scheduling
|
52
62
|
# {"name":"aix-53-ppc","engine":"always_be_scheduling"}
|
63
|
+
# ```
|
53
64
|
#
|
54
65
|
#
|
55
|
-
# Example 3
|
66
|
+
# Example 3
|
67
|
+
# ---------
|
56
68
|
#
|
69
|
+
# ```
|
57
70
|
# platform 'aix-5.3-ppc' do |plat|
|
58
71
|
# plat.build_host ['aix53-builder-1.example.com']
|
59
72
|
# plat.vmpooler_template
|
60
73
|
# plat.abs_resource_name 'aix-53-ppc'
|
61
74
|
# end
|
75
|
+
# ```
|
62
76
|
#
|
77
|
+
# ```
|
63
78
|
# $ build_host_info puppet-agent aix-5.3-ppc
|
64
79
|
# {"name":"aix53-builder-1.example.com","engine":"hardware"}
|
65
80
|
#
|
66
81
|
# $ build_host_info puppet-agent aix-5.3-ppc --engine always_be_scheduling
|
67
82
|
# {"name":"aix-53-ppc","engine":"always_be_scheduling"}
|
83
|
+
# ```
|
68
84
|
class AlwaysBeScheduling < Base
|
69
85
|
def initialize(platform, target, **opts)
|
70
86
|
super
|
data/lib/vanagon/environment.rb
CHANGED
@@ -50,6 +50,7 @@ class Vanagon
|
|
50
50
|
# Associates the value given by value with the key given by key. Keys will
|
51
51
|
# be cast to Strings, and should conform to the Open Group's guidelines for
|
52
52
|
# portable shell variable names:
|
53
|
+
#
|
53
54
|
# Environment variable names used by the utilities in the Shell and
|
54
55
|
# Utilities volume of IEEE Std 1003.1-2001 consist solely of uppercase
|
55
56
|
# letters, digits, and the '_' (underscore) from the characters defined
|
@@ -18,9 +18,10 @@ module HashableAttributes
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
# Vanagon classes generally don't implement JSON or Hash functionality
|
22
|
-
# so those need to be monkey-patched for useful inspection.
|
23
21
|
class Vanagon
|
22
|
+
# Vanagon classes generally don't implement JSON or Hash functionality
|
23
|
+
# so those need to be monkey-patched for useful inspection.
|
24
|
+
|
24
25
|
class Platform
|
25
26
|
include HashableAttributes
|
26
27
|
end
|
data/lib/vanagon/platform.rb
CHANGED
@@ -28,7 +28,7 @@ class Vanagon
|
|
28
28
|
attr_accessor :defaultdir
|
29
29
|
|
30
30
|
# Each of these holds the path or name of the command in question,
|
31
|
-
# e.g. `copy = "/usr/local/bin/gcp"`, or `copy = "cp"
|
31
|
+
# e.g. `copy = "/usr/local/bin/gcp"`, or `copy = "cp"`
|
32
32
|
attr_accessor :copy
|
33
33
|
attr_accessor :find
|
34
34
|
attr_accessor :install
|
@@ -42,14 +42,14 @@ class Vanagon
|
|
42
42
|
# Hold a string containing the values that a given platform
|
43
43
|
# should use when a Makefile is run - resolves to the CFLAGS
|
44
44
|
# and LDFLAGS variables. This should be changed to take advantage
|
45
|
-
# of the Environment, so that we can better leverage Make's
|
46
|
-
# Implicit Variables
|
47
|
-
#
|
45
|
+
# of the {Vanagon::Environment}, so that we can better leverage Make's
|
46
|
+
# {https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html Implicit Variables}.
|
47
|
+
#
|
48
48
|
# It should also be extended to support CXXFLAGS and CPPFLAGS ASAP.
|
49
49
|
attr_accessor :cflags
|
50
50
|
attr_accessor :ldflags
|
51
51
|
|
52
|
-
# The overall Environment that a given platform
|
52
|
+
# The overall {Vanagon::Environment} that a given platform
|
53
53
|
# should pass to each component
|
54
54
|
attr_accessor :environment
|
55
55
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
# AIX is special. This subclassing gives us the chance to define some sane
|
2
|
-
# defaults for aix without cluttering the main rpm class in if statements.
|
3
1
|
class Vanagon
|
4
2
|
class Platform
|
5
3
|
class RPM
|
4
|
+
# AIX is special. This subclassing gives us the chance to define some sane
|
5
|
+
# defaults for aix without cluttering the main rpm class in if statements.
|
6
6
|
class AIX < Vanagon::Platform::RPM
|
7
7
|
def rpm_defines
|
8
8
|
%(--define '_topdir $(tempdir)/rpmbuild' )
|
@@ -1,8 +1,8 @@
|
|
1
|
-
# SLES is special, mainly in the differences between yum and zypper,
|
2
|
-
# so here we subclass SLES off of rpm.
|
3
1
|
class Vanagon
|
4
2
|
class Platform
|
5
3
|
class RPM
|
4
|
+
# SLES is special, mainly in the differences between yum and zypper,
|
5
|
+
# so here we subclass SLES off of rpm.
|
6
6
|
class SLES < Vanagon::Platform::RPM
|
7
7
|
# Helper to setup a zypper repository on a target system
|
8
8
|
#
|
@@ -1,11 +1,11 @@
|
|
1
|
-
# This platform definition was created to account for oddities with
|
2
|
-
# the RPM available on WindRiver Linux based systems. WRL uses RPMv5
|
3
|
-
# and some of the WRL-based OS platforms we support (e.g, HuaweiOS)
|
4
|
-
# do not have package repo systems or support for installing remote
|
5
|
-
# RPMs via urls
|
6
1
|
class Vanagon
|
7
2
|
class Platform
|
8
3
|
class RPM
|
4
|
+
# This platform definition was created to account for oddities with
|
5
|
+
# the RPM available on WindRiver Linux based systems. WRL uses RPMv5
|
6
|
+
# and some of the WRL-based OS platforms we support (e.g, HuaweiOS)
|
7
|
+
# do not have package repo systems or support for installing remote
|
8
|
+
# RPMs via urls
|
9
9
|
class WRL < Vanagon::Platform::RPM
|
10
10
|
# Some WRL RPM platforms (e.g, HuaweiOS) don't allow you to
|
11
11
|
# install remote packages via url, so we'll do a dance to
|
@@ -71,6 +71,7 @@ class Vanagon
|
|
71
71
|
|
72
72
|
# Method to recursively copy from a source project resource directory
|
73
73
|
# to a destination (wix) work directory.
|
74
|
+
#
|
74
75
|
# strongly suspect the original cp_r command would have done all of this.
|
75
76
|
#
|
76
77
|
# @param proj_resources [String] Project Resource File directory
|
@@ -81,7 +82,8 @@ class Vanagon
|
|
81
82
|
end
|
82
83
|
|
83
84
|
# Method to merge in the files from the Vanagon (generic) directories.
|
84
|
-
#
|
85
|
+
#
|
86
|
+
# Project specific files take precedence, so since these are copied prior
|
85
87
|
# to this function, then this merge operation will ignore existing files
|
86
88
|
#
|
87
89
|
# @param vanagon_root [String] Vanagon wix resources directory
|
@@ -143,13 +145,14 @@ class Vanagon
|
|
143
145
|
end
|
144
146
|
|
145
147
|
# The specific bits used to generate a windows nuget package for a given project
|
146
|
-
#
|
147
|
-
#
|
148
|
+
#
|
149
|
+
# Nexus expects packages to be named `#{name}-#{version}.nupkg`. However, chocolatey
|
150
|
+
# will generate them to be `#{name}.#{version}.nupkg`. So, we have to rename the
|
148
151
|
# package after we build it.
|
149
152
|
#
|
150
153
|
# @param project [Vanagon::Project] project to build a nuget package of
|
151
154
|
# @return [Array] list of commands required to build a nuget package for
|
152
|
-
#
|
155
|
+
# the given project from a tarball
|
153
156
|
def generate_nuget_package(project) # rubocop:disable Metrics/AbcSize
|
154
157
|
target_dir = project.repo ? output_dir(project.repo) : output_dir
|
155
158
|
["mkdir -p output/#{target_dir}",
|
@@ -163,11 +166,13 @@ class Vanagon
|
|
163
166
|
end
|
164
167
|
|
165
168
|
# The specific bits used to generate a windows msi package for a given project
|
169
|
+
#
|
166
170
|
# Have changed this to reflect the overall commands we need to generate the package.
|
167
171
|
# Question - should we break this down into some simpler Make tasks ?
|
168
|
-
#
|
169
|
-
#
|
170
|
-
#
|
172
|
+
#
|
173
|
+
# 1. Heat the directory tree to produce the file list
|
174
|
+
# 2. Compile (candle) all the wxs files into wixobj files
|
175
|
+
# 3. Run light to produce the final MSI
|
171
176
|
#
|
172
177
|
# @param project [Vanagon::Project] project to build a msi package of
|
173
178
|
# @return [Array] list of commands required to build an msi package for the given project from a tarball
|
@@ -228,6 +233,7 @@ class Vanagon
|
|
228
233
|
end
|
229
234
|
|
230
235
|
# Method to derive the package name for the project.
|
236
|
+
#
|
231
237
|
# Neither chocolatey nor nexus know how to deal with architecture, so
|
232
238
|
# we are just pretending it's part of the package name.
|
233
239
|
#
|
@@ -261,12 +267,14 @@ class Vanagon
|
|
261
267
|
# determine what version type to deliver.
|
262
268
|
#
|
263
269
|
# Examples of final versions:
|
264
|
-
#
|
265
|
-
#
|
270
|
+
#
|
271
|
+
# * 1.2.3
|
272
|
+
# * 1.5.3.1
|
266
273
|
#
|
267
274
|
# Examples of prerelease versions:
|
268
|
-
#
|
269
|
-
#
|
275
|
+
#
|
276
|
+
# * 1.2.3.1234-g124dm9302
|
277
|
+
# * 3.2.5.23-gd329nd
|
270
278
|
#
|
271
279
|
# @param project [Vanagon::Project] project to version
|
272
280
|
# @return [String] the version of the nuget package for this project
|
@@ -281,6 +289,7 @@ class Vanagon
|
|
281
289
|
end
|
282
290
|
|
283
291
|
# Add a repository (or install Chocolatey)
|
292
|
+
#
|
284
293
|
# Note - this only prepares the list of commands to be executed once the Platform
|
285
294
|
# has been setup
|
286
295
|
#
|
@@ -304,13 +313,14 @@ class Vanagon
|
|
304
313
|
commands
|
305
314
|
end
|
306
315
|
|
307
|
-
# Generate the underlying directory structure of
|
308
|
-
#
|
309
|
-
#
|
310
|
-
#
|
316
|
+
# Generate the underlying directory structure of any binary files
|
317
|
+
# referenced in services.
|
318
|
+
#
|
319
|
+
# Note that this function does not generate the structure of the
|
320
|
+
# installation directory, only the structure above it.
|
311
321
|
#
|
312
|
-
# @param services
|
313
|
-
# @param project
|
322
|
+
# @param services list of all services in a project
|
323
|
+
# @param project actual project we are creating the directory structure for
|
314
324
|
def generate_service_bin_dirs(services, project)
|
315
325
|
# All service files will need a directory reference
|
316
326
|
items = services.map do |svc|
|
@@ -389,7 +399,7 @@ class Vanagon
|
|
389
399
|
# Recursively generate wix element structure
|
390
400
|
#
|
391
401
|
# @param root, the (empty) root of an n-ary tree containing the
|
392
|
-
#
|
402
|
+
# structure of directories
|
393
403
|
def generate_wix_from_graph(root)
|
394
404
|
string = ''
|
395
405
|
unless root[:children].empty?
|
@@ -409,7 +419,7 @@ class Vanagon
|
|
409
419
|
end
|
410
420
|
|
411
421
|
# Grab only the first three values from the version input
|
412
|
-
# and strip off any non-digit characters
|
422
|
+
# and strip off any non-digit characters.
|
413
423
|
#
|
414
424
|
# @param [string] version, the original version number
|
415
425
|
def wix_product_version(version)
|