vanagon 0.3.18

Sign up to get free protection for your applications and to get access to all the features.
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