vanagon 0.3.18

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.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +13 -0
  3. data/README.md +175 -0
  4. data/bin/build +33 -0
  5. data/bin/devkit +22 -0
  6. data/bin/repo +26 -0
  7. data/bin/ship +15 -0
  8. data/lib/vanagon.rb +8 -0
  9. data/lib/vanagon/common.rb +2 -0
  10. data/lib/vanagon/common/pathname.rb +87 -0
  11. data/lib/vanagon/common/user.rb +25 -0
  12. data/lib/vanagon/component.rb +157 -0
  13. data/lib/vanagon/component/dsl.rb +307 -0
  14. data/lib/vanagon/component/source.rb +66 -0
  15. data/lib/vanagon/component/source/git.rb +60 -0
  16. data/lib/vanagon/component/source/http.rb +158 -0
  17. data/lib/vanagon/driver.rb +112 -0
  18. data/lib/vanagon/engine/base.rb +82 -0
  19. data/lib/vanagon/engine/docker.rb +40 -0
  20. data/lib/vanagon/engine/local.rb +40 -0
  21. data/lib/vanagon/engine/pooler.rb +85 -0
  22. data/lib/vanagon/errors.rb +28 -0
  23. data/lib/vanagon/extensions/string.rb +11 -0
  24. data/lib/vanagon/optparse.rb +62 -0
  25. data/lib/vanagon/platform.rb +245 -0
  26. data/lib/vanagon/platform/deb.rb +71 -0
  27. data/lib/vanagon/platform/dsl.rb +293 -0
  28. data/lib/vanagon/platform/osx.rb +100 -0
  29. data/lib/vanagon/platform/rpm.rb +76 -0
  30. data/lib/vanagon/platform/rpm/wrl.rb +39 -0
  31. data/lib/vanagon/platform/solaris_10.rb +182 -0
  32. data/lib/vanagon/platform/solaris_11.rb +138 -0
  33. data/lib/vanagon/platform/swix.rb +35 -0
  34. data/lib/vanagon/project.rb +251 -0
  35. data/lib/vanagon/project/dsl.rb +218 -0
  36. data/lib/vanagon/utilities.rb +299 -0
  37. data/spec/fixures/component/invalid-test-fixture.json +3 -0
  38. data/spec/fixures/component/mcollective.service +1 -0
  39. data/spec/fixures/component/test-fixture.json +4 -0
  40. data/spec/lib/vanagon/common/pathname_spec.rb +103 -0
  41. data/spec/lib/vanagon/common/user_spec.rb +36 -0
  42. data/spec/lib/vanagon/component/dsl_spec.rb +443 -0
  43. data/spec/lib/vanagon/component/source/git_spec.rb +19 -0
  44. data/spec/lib/vanagon/component/source/http_spec.rb +43 -0
  45. data/spec/lib/vanagon/component/source_spec.rb +99 -0
  46. data/spec/lib/vanagon/component_spec.rb +22 -0
  47. data/spec/lib/vanagon/engine/base_spec.rb +40 -0
  48. data/spec/lib/vanagon/engine/docker_spec.rb +40 -0
  49. data/spec/lib/vanagon/engine/pooler_spec.rb +54 -0
  50. data/spec/lib/vanagon/platform/deb_spec.rb +60 -0
  51. data/spec/lib/vanagon/platform/dsl_spec.rb +128 -0
  52. data/spec/lib/vanagon/platform/rpm_spec.rb +41 -0
  53. data/spec/lib/vanagon/platform/solaris_11_spec.rb +44 -0
  54. data/spec/lib/vanagon/platform_spec.rb +53 -0
  55. data/spec/lib/vanagon/project/dsl_spec.rb +203 -0
  56. data/spec/lib/vanagon/project_spec.rb +44 -0
  57. data/spec/lib/vanagon/utilities_spec.rb +140 -0
  58. data/templates/Makefile.erb +116 -0
  59. data/templates/deb/changelog.erb +5 -0
  60. data/templates/deb/conffiles.erb +3 -0
  61. data/templates/deb/control.erb +21 -0
  62. data/templates/deb/dirs.erb +3 -0
  63. data/templates/deb/docs.erb +1 -0
  64. data/templates/deb/install.erb +3 -0
  65. data/templates/deb/postinst.erb +46 -0
  66. data/templates/deb/postrm.erb +15 -0
  67. data/templates/deb/prerm.erb +17 -0
  68. data/templates/deb/rules.erb +25 -0
  69. data/templates/osx/postinstall.erb +24 -0
  70. data/templates/osx/preinstall.erb +19 -0
  71. data/templates/osx/project-installer.xml.erb +19 -0
  72. data/templates/rpm/project.spec.erb +217 -0
  73. data/templates/solaris/10/depend.erb +3 -0
  74. data/templates/solaris/10/pkginfo.erb +13 -0
  75. data/templates/solaris/10/postinstall.erb +37 -0
  76. data/templates/solaris/10/preinstall.erb +7 -0
  77. data/templates/solaris/10/preremove.erb +6 -0
  78. data/templates/solaris/10/proto.erb +5 -0
  79. data/templates/solaris/11/p5m.erb +73 -0
  80. metadata +172 -0
@@ -0,0 +1,3 @@
1
+ <%- get_requires.each do |requirement| -%>
2
+ P <%= requirement %>
3
+ <%- end -%>
@@ -0,0 +1,13 @@
1
+ PKG="<%= @name %>"
2
+ NAME="<%= @name %> - <%= @homepage %>"
3
+ VERSION=<%= @version %>-<%= @release %>
4
+ ARCH=<%= @noarch ? 'all' : @platform.architecture %>
5
+ CLASSES=none
6
+ CATEGORY=application
7
+ VENDOR=<%= @vendor %>
8
+ PSTAMP=<%= Time.now.strftime('%Y-%m-%d.%H%M%S') %>
9
+ EMAIL=<%= @vendor.match(/<([^>]*)>/)[1] %>
10
+ ISTATES=S s 1 2 3
11
+ RSTATES=S s 1 2 3
12
+ BASEDIR=/
13
+
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/bash
2
+
3
+ <%- get_services.each do |service| -%>
4
+ # Importing service <%= service.name %>
5
+ /usr/sbin/svccfg import <%= service.service_file %> || true
6
+ <%- end -%>
7
+
8
+ # Move any new configfiles into place
9
+ <%- get_configfiles.each do |config|
10
+ dest_file = config.path.gsub(/\.pristine$/, '') -%>
11
+
12
+ if [ -f "<%= dest_file %>" ]; then
13
+ echo "Detected file at '<%= dest_file %>'; updated file at '<%= config.path %>'."
14
+ else
15
+ cp -pr '<%= config.path %>' '<%= dest_file %>'
16
+ fi
17
+
18
+ <%- end -%>
19
+
20
+ # Set up any specific permissions needed...
21
+ <%- (get_directories + get_configfiles + get_files).select { |pathname| pathname.has_overrides? }.uniq.each do |file_or_directory| -%>
22
+ <%= "chmod '#{file_or_directory.mode}' '#{file_or_directory.path}'" if file_or_directory.mode %>
23
+ <%- if file_or_directory.owner -%>
24
+ if getent passwd '<%= file_or_directory.owner %>' &> /dev/null; then
25
+ chown '<%= file_or_directory.owner %>' '<%= file_or_directory.path %>'
26
+ else
27
+ echo "Error updating '<%= file_or_directory.path %>': user '<%= file_or_directory.owner %>' does not exist."
28
+ fi
29
+ <%- end -%>
30
+ <%- if file_or_directory.group -%>
31
+ if getent group '<%= file_or_directory.group %>' &> /dev/null; then
32
+ chgrp '<%= file_or_directory.group %>' '<%= file_or_directory.path %>'
33
+ else
34
+ echo "Error updating '<%= file_or_directory.path %>': group '<%= file_or_directory.group %>' does not exist."
35
+ fi
36
+ <%- end -%>
37
+ <%- end -%>
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/bash
2
+ #
3
+ <%- if @user -%>
4
+ # Add our user and group
5
+ <%= @platform.add_group(@user) %>
6
+ <%= @platform.add_user(@user) %>
7
+ <%- end -%>
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/bash
2
+ #
3
+ <%- get_services.each do |service| -%>
4
+ /usr/sbin/svcadm disable <%= service.name %> || true
5
+ /usr/sbin/svccfg delete <%= service.name %> || true
6
+ <%- end -%>
@@ -0,0 +1,5 @@
1
+ i pkginfo=pkginfo
2
+ i preinstall=preinstall
3
+ i postinstall=postinstall
4
+ i preremove=preremove
5
+ i depend=depend
@@ -0,0 +1,73 @@
1
+ set name=pkg.fmri value="<%= @name %>@<%= @platform.ips_version(@version, @release) %>"
2
+ set name=pkg.summary value="<%= @description.lines.first.chomp %>"
3
+ set name=pkg.human-version value="<%= @version %>"
4
+ set name=pkg.description value="<%= @description %>"
5
+ set name=info.classification value="org.opensolaris.category.2008:System/Administration and Configuration"
6
+ set name=org.opensolaris.consolidation value="<%= @name %>"
7
+ set name=description value="<%= @description %>"
8
+ set name=variant.opensolaris.zone value=global value=nonglobal
9
+ <%- unless @noarch -%>
10
+ set name=variant.arch value="<%= @platform.architecture %>"
11
+ <%- end -%>
12
+
13
+ <%
14
+ def strip_and_escape(str)
15
+ Regexp.escape(str.sub(/^\//, ''))
16
+ end
17
+ %>
18
+
19
+ # Add any needed dependencies
20
+ <%- get_requires.each do |requirement| -%>
21
+ depend fmri=pkg:/<%= requirement %> type=require
22
+ <%- end -%>
23
+
24
+ <%- get_root_directories.each do |dir| -%>
25
+ <transform dir path=<%= strip_and_escape(dir.split('/')[0..-2].join('/')) %>$ -> drop>
26
+ <%- end -%>
27
+
28
+ <%- if has_services? -%>
29
+ # Make sure smf manifests cause manifest-import to happen
30
+ <transform file path=(var|lib)/svc/manifest/.*\.xml$ -> default restart_fmri svc:/system/manifest-import:default>
31
+ <transform dir path=(var|lib)/svc/manifest$ -> drop>
32
+ set name=org.opensolaris.smf.fmri <%= get_services.map {|service| "value=svc:/#{service.name}"}.join(" ") %>
33
+ <%- end -%>
34
+
35
+ # Move the bill-of-materials into a docdir for the package to avoid conflicts
36
+ <transform file path=bill-of-materials$ -> set path usr/share/doc/<%= @name %>/bill-of-materials>
37
+
38
+ <%- get_configfiles.each do |config| -%>
39
+ # Preserve the old conf file on upgrade
40
+ <transform file path=<%= strip_and_escape(config.path) %>$ -> add preserve renamenew>
41
+ <%- end -%>
42
+
43
+ # Set any required owner, group or mode transformations
44
+ <%- (get_configfiles + get_files).select { |pathname| pathname.has_overrides? }.uniq.each do |file| -%>
45
+ <%- if file.group -%>
46
+ <transform file path=<%= strip_and_escape(file.path) %>$ -> set group <%= file.group %>>
47
+ <%- end -%>
48
+ <%- if file.owner -%>
49
+ <transform file path=<%= strip_and_escape(file.path) %>$ -> set owner <%= file.owner %>>
50
+ <%- end -%>
51
+ <%- if file.mode -%>
52
+ <transform file path=<%= strip_and_escape(file.path) %>$ -> set mode <%= file.mode %>>
53
+ <%- end -%>
54
+ <%- end -%>
55
+
56
+ # Set any required owner, group or mode transformations
57
+ <%- get_directories.select { |pathname| pathname.has_overrides? }.uniq.each do |dir| -%>
58
+ <%- if dir.group -%>
59
+ <transform dir path=<%= strip_and_escape(dir.path) %>$ -> set group <%= dir.group %>>
60
+ <%- end -%>
61
+ <%- if dir.owner -%>
62
+ <transform dir path=<%= strip_and_escape(dir.path) %>$ -> set owner <%= dir.owner %>>
63
+ <%- end -%>
64
+ <%- if dir.mode -%>
65
+ <transform dir path=<%= strip_and_escape(dir.path) %>$ -> set mode <%= dir.mode %>>
66
+ <%- end -%>
67
+ <%- end -%>
68
+
69
+ <%- if @user -%>
70
+ # Create a user/group if desired
71
+ <%= @platform.add_group(@user) %>
72
+ <%= @platform.add_user(@user) %>
73
+ <%- end -%>
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vanagon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.18
5
+ platform: ruby
6
+ authors:
7
+ - Puppet Labs
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: yard
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.8'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.8'
41
+ description: Vanagon is a tool to build a single package out of a project, which can
42
+ itself contain one or more components.
43
+ email: info@puppetlabs.com
44
+ executables:
45
+ - build
46
+ - ship
47
+ - repo
48
+ - devkit
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - LICENSE
53
+ - README.md
54
+ - bin/build
55
+ - bin/devkit
56
+ - bin/repo
57
+ - bin/ship
58
+ - lib/vanagon.rb
59
+ - lib/vanagon/common.rb
60
+ - lib/vanagon/common/pathname.rb
61
+ - lib/vanagon/common/user.rb
62
+ - lib/vanagon/component.rb
63
+ - lib/vanagon/component/dsl.rb
64
+ - lib/vanagon/component/source.rb
65
+ - lib/vanagon/component/source/git.rb
66
+ - lib/vanagon/component/source/http.rb
67
+ - lib/vanagon/driver.rb
68
+ - lib/vanagon/engine/base.rb
69
+ - lib/vanagon/engine/docker.rb
70
+ - lib/vanagon/engine/local.rb
71
+ - lib/vanagon/engine/pooler.rb
72
+ - lib/vanagon/errors.rb
73
+ - lib/vanagon/extensions/string.rb
74
+ - lib/vanagon/optparse.rb
75
+ - lib/vanagon/platform.rb
76
+ - lib/vanagon/platform/deb.rb
77
+ - lib/vanagon/platform/dsl.rb
78
+ - lib/vanagon/platform/osx.rb
79
+ - lib/vanagon/platform/rpm.rb
80
+ - lib/vanagon/platform/rpm/wrl.rb
81
+ - lib/vanagon/platform/solaris_10.rb
82
+ - lib/vanagon/platform/solaris_11.rb
83
+ - lib/vanagon/platform/swix.rb
84
+ - lib/vanagon/project.rb
85
+ - lib/vanagon/project/dsl.rb
86
+ - lib/vanagon/utilities.rb
87
+ - spec/fixures/component/invalid-test-fixture.json
88
+ - spec/fixures/component/mcollective.service
89
+ - spec/fixures/component/test-fixture.json
90
+ - spec/lib/vanagon/common/pathname_spec.rb
91
+ - spec/lib/vanagon/common/user_spec.rb
92
+ - spec/lib/vanagon/component/dsl_spec.rb
93
+ - spec/lib/vanagon/component/source/git_spec.rb
94
+ - spec/lib/vanagon/component/source/http_spec.rb
95
+ - spec/lib/vanagon/component/source_spec.rb
96
+ - spec/lib/vanagon/component_spec.rb
97
+ - spec/lib/vanagon/engine/base_spec.rb
98
+ - spec/lib/vanagon/engine/docker_spec.rb
99
+ - spec/lib/vanagon/engine/pooler_spec.rb
100
+ - spec/lib/vanagon/platform/deb_spec.rb
101
+ - spec/lib/vanagon/platform/dsl_spec.rb
102
+ - spec/lib/vanagon/platform/rpm_spec.rb
103
+ - spec/lib/vanagon/platform/solaris_11_spec.rb
104
+ - spec/lib/vanagon/platform_spec.rb
105
+ - spec/lib/vanagon/project/dsl_spec.rb
106
+ - spec/lib/vanagon/project_spec.rb
107
+ - spec/lib/vanagon/utilities_spec.rb
108
+ - templates/Makefile.erb
109
+ - templates/deb/changelog.erb
110
+ - templates/deb/conffiles.erb
111
+ - templates/deb/control.erb
112
+ - templates/deb/dirs.erb
113
+ - templates/deb/docs.erb
114
+ - templates/deb/install.erb
115
+ - templates/deb/postinst.erb
116
+ - templates/deb/postrm.erb
117
+ - templates/deb/prerm.erb
118
+ - templates/deb/rules.erb
119
+ - templates/osx/postinstall.erb
120
+ - templates/osx/preinstall.erb
121
+ - templates/osx/project-installer.xml.erb
122
+ - templates/rpm/project.spec.erb
123
+ - templates/solaris/10/depend.erb
124
+ - templates/solaris/10/pkginfo.erb
125
+ - templates/solaris/10/postinstall.erb
126
+ - templates/solaris/10/preinstall.erb
127
+ - templates/solaris/10/preremove.erb
128
+ - templates/solaris/10/proto.erb
129
+ - templates/solaris/11/p5m.erb
130
+ homepage: http://github.com/puppetlabs/vanagon
131
+ licenses:
132
+ - Apache-2.0
133
+ metadata: {}
134
+ post_install_message:
135
+ rdoc_options: []
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ requirements: []
149
+ rubyforge_project:
150
+ rubygems_version: 2.4.5.1
151
+ signing_key:
152
+ specification_version: 4
153
+ summary: All of your packages will fit into this van with this one simple trick.
154
+ test_files:
155
+ - spec/lib/vanagon/common/pathname_spec.rb
156
+ - spec/lib/vanagon/common/user_spec.rb
157
+ - spec/lib/vanagon/component/dsl_spec.rb
158
+ - spec/lib/vanagon/component/source/git_spec.rb
159
+ - spec/lib/vanagon/component/source/http_spec.rb
160
+ - spec/lib/vanagon/component/source_spec.rb
161
+ - spec/lib/vanagon/component_spec.rb
162
+ - spec/lib/vanagon/engine/base_spec.rb
163
+ - spec/lib/vanagon/engine/docker_spec.rb
164
+ - spec/lib/vanagon/engine/pooler_spec.rb
165
+ - spec/lib/vanagon/platform/deb_spec.rb
166
+ - spec/lib/vanagon/platform/dsl_spec.rb
167
+ - spec/lib/vanagon/platform/rpm_spec.rb
168
+ - spec/lib/vanagon/platform/solaris_11_spec.rb
169
+ - spec/lib/vanagon/platform_spec.rb
170
+ - spec/lib/vanagon/project/dsl_spec.rb
171
+ - spec/lib/vanagon/project_spec.rb
172
+ - spec/lib/vanagon/utilities_spec.rb