vanagon 0.14.2 → 0.14.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23f0195398b4d15d4289b46a80de1173c8cb62d3
4
- data.tar.gz: 1b4ed247fb06c882cbb25bcd2136c2111e1d975e
3
+ metadata.gz: dfdf9e485d076f8615fb5dec7ee3659bdb30cadf
4
+ data.tar.gz: 11c28aee93eaa0c737ceb44fc6152bef2d5fe421
5
5
  SHA512:
6
- metadata.gz: c40f47dd2bd836eed0a234e499d5f2a0463111b0dc8f7d3d9496666d3639b926717cfcac105fc9fee76a7478e0caa40ecef3de27c6d70fe25857ca2918afecfe
7
- data.tar.gz: 7704989004ce1ff9f26149340535215b2be532ac1b7c57045b5532a21a8563fa0170addf59369c734ec73dc14f65b5406207f6e4bb67b0a07d9022a6addcf254
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 `examples/` directory.
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](https://github.com/puppetlabs/vanagon/blob/master/docs/CONTRIBUTING.md) to see how to get your changes merged
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](https://github.com/puppetlabs/vanagon/blob/master/LICENSE) file.
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 <<-DOC
19
- Unable to ship packages to artifactory. Please make sure you are pointing to a
20
- recent version of packaging in your Gemfile. Please also make sure you include
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
@@ -10,3 +10,7 @@ $:.unshift(LIBDIR) unless
10
10
 
11
11
  require 'vanagon/optparse'
12
12
  require 'vanagon/driver'
13
+
14
+ # The main entry point is {Vanagon::Driver}.
15
+ class Vanagon
16
+ end
@@ -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 {Object#==}) the corresponding attribute in other_pathname.
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
- # @return [Fixnum] Compute a hash-code for self, derived from its attributes;
83
- # two Pathnames with the same content will have the same hash code (and will compare using {#eql?}).
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 (https://github.com/puppetlabs/always-be-scheduling)
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
@@ -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
@@ -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
- # https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
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
- # Project Specific files take precedence, so since these are copied prior
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
- # Nexus expects packages to be named #{name}-#{version}.nupkg. However, chocolatey
147
- # will generate them to be #{name}.#{version}.nupkg. So, we have to rename the
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
- # the given project from a tarball
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
- # 1. Heat the directory tree to produce the file list
169
- # 2. Compile (candle) all the wxs files into wixobj files
170
- # 3. Run light to produce the final MSI
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
- # 1.2.3
265
- # 1.5.3.1
270
+ #
271
+ # * 1.2.3
272
+ # * 1.5.3.1
266
273
  #
267
274
  # Examples of prerelease versions:
268
- # 1.2.3.1234-g124dm9302
269
- # 3.2.5.23-gd329nd
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
- # any binary files referenced in services. note that
309
- # this function does not generate the structure of
310
- # the installation directory, only the structure above it.
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, list of all services in a project
313
- # @param project, actual project we are creating the directory structure for
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
- # structure of directories
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)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.14.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs