fpm-itchio 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELIST +629 -0
  3. data/CONTRIBUTORS +26 -0
  4. data/LICENSE +21 -0
  5. data/bin/fpm +8 -0
  6. data/lib/fpm.rb +18 -0
  7. data/lib/fpm/command.rb +642 -0
  8. data/lib/fpm/errors.rb +4 -0
  9. data/lib/fpm/namespace.rb +4 -0
  10. data/lib/fpm/package.rb +524 -0
  11. data/lib/fpm/package/cpan.rb +378 -0
  12. data/lib/fpm/package/deb.rb +887 -0
  13. data/lib/fpm/package/dir.rb +207 -0
  14. data/lib/fpm/package/empty.rb +13 -0
  15. data/lib/fpm/package/gem.rb +224 -0
  16. data/lib/fpm/package/npm.rb +120 -0
  17. data/lib/fpm/package/osxpkg.rb +164 -0
  18. data/lib/fpm/package/p5p.rb +124 -0
  19. data/lib/fpm/package/pacman.rb +397 -0
  20. data/lib/fpm/package/pear.rb +117 -0
  21. data/lib/fpm/package/pkgin.rb +35 -0
  22. data/lib/fpm/package/puppet.rb +120 -0
  23. data/lib/fpm/package/pyfpm/__init__.py +1 -0
  24. data/lib/fpm/package/pyfpm/get_metadata.py +104 -0
  25. data/lib/fpm/package/python.rb +317 -0
  26. data/lib/fpm/package/rpm.rb +583 -0
  27. data/lib/fpm/package/sh.rb +69 -0
  28. data/lib/fpm/package/solaris.rb +95 -0
  29. data/lib/fpm/package/tar.rb +74 -0
  30. data/lib/fpm/package/virtualenv.rb +145 -0
  31. data/lib/fpm/package/zip.rb +63 -0
  32. data/lib/fpm/rake_task.rb +59 -0
  33. data/lib/fpm/util.rb +253 -0
  34. data/lib/fpm/version.rb +3 -0
  35. data/templates/deb.erb +52 -0
  36. data/templates/deb/changelog.erb +5 -0
  37. data/templates/deb/ldconfig.sh.erb +13 -0
  38. data/templates/deb/postinst_upgrade.sh.erb +62 -0
  39. data/templates/deb/postrm_upgrade.sh.erb +46 -0
  40. data/templates/deb/preinst_upgrade.sh.erb +41 -0
  41. data/templates/deb/prerm_upgrade.sh.erb +39 -0
  42. data/templates/osxpkg.erb +11 -0
  43. data/templates/p5p_metadata.erb +12 -0
  44. data/templates/pacman.erb +47 -0
  45. data/templates/pacman/INSTALL.erb +41 -0
  46. data/templates/puppet/package.pp.erb +34 -0
  47. data/templates/puppet/package/remove.pp.erb +13 -0
  48. data/templates/rpm.erb +261 -0
  49. data/templates/rpm/filesystem_list +14514 -0
  50. data/templates/sh.erb +367 -0
  51. data/templates/solaris.erb +15 -0
  52. metadata +265 -0
@@ -0,0 +1,46 @@
1
+ #!/bin/sh
2
+ after_remove() {
3
+ <%# Making sure that at least one command is in the function -%>
4
+ <%# avoids a lot of potential errors, including the case that -%>
5
+ <%# the script is non-empty, but just whitespace and/or comments -%>
6
+ :
7
+ <% if script?(:after_remove) -%>
8
+ <%= script(:after_remove) %>
9
+ <% end -%>
10
+ }
11
+
12
+ dummy() {
13
+ :
14
+ }
15
+
16
+
17
+ if [ "${1}" = "remove" -o "${1}" = "abort-install" ]
18
+ then
19
+ # "after remove" goes here
20
+ # "abort-install" happens when the pre-installation script failed.
21
+ # In that case, this script, which should be idemptoent, is run
22
+ # to ensure a clean roll-back of the installation.
23
+ after_remove
24
+ elif [ "${1}" = "purge" -a -z "${2}" ]
25
+ then
26
+ # like "on remove", but executes after dpkg deletes config files
27
+ # 'apt-get purge' runs 'on remove' section, then this section.
28
+ # Maybe we ignore this; it seems really fine-grained.
29
+ # There is no equivalent in RPM or ARCH. A debian-specific argument
30
+ # might perhaps be used here, but most people
31
+ # probably don't need it.
32
+ dummy
33
+ elif [ "${1}" = "upgrade" ]
34
+ then
35
+ # This represents the case where the old package's postrm is called after
36
+ # the 'preinst' script is called.
37
+ # We should ignore this and just use 'preinst upgrade' and
38
+ # 'postinst configure'. The newly installed package should do the
39
+ # upgrade, not the uninstalled one, since it can't anticipate what new
40
+ # things it will have to do to upgrade for the new version.
41
+ dummy
42
+ elif echo "${1}" | grep -E -q '(fail|abort)'
43
+ then
44
+ echo "Failed to install before the post-removal script was run." >&2
45
+ exit 1
46
+ fi
@@ -0,0 +1,41 @@
1
+ #!/bin/sh
2
+ before_upgrade() {
3
+ <%# Making sure that at least one command is in the function -%>
4
+ <%# avoids a lot of potential errors, including the case that -%>
5
+ <%# the script is non-empty, but just whitespace and/or comments -%>
6
+ :
7
+ <% if script?(:before_upgrade) -%>
8
+ <%= script(:before_upgrade) %>
9
+ <% end -%>
10
+ }
11
+
12
+ before_install() {
13
+ <%# Making sure that at least one command is in the function -%>
14
+ <%# avoids a lot of potential errors, including the case that -%>
15
+ <%# the script is non-empty, but just whitespace and/or comments -%>
16
+ :
17
+ <% if script?(:before_install) -%>
18
+ <%= script(:before_install) %>
19
+ <% end -%>
20
+ }
21
+
22
+ if [ "${1}" = "install" -a -z "${2}" ]
23
+ then
24
+ before_install
25
+ elif [ "${1}" = "upgrade" -a -n "${2}" ]
26
+ then
27
+ upgradeFromVersion="${2}"
28
+ before_upgrade "${upgradeFromVersion}"
29
+ elif [ "${1}" = "install" -a -n "${2}" ]
30
+ then
31
+ upgradeFromVersion="${2}"
32
+ # Executed when a package is removed but its config files aren't,
33
+ # and a new version is installed.
34
+ # Looks a _lot_ like an upgrade case, I say we just execute the
35
+ # same "before upgrade" script as in the previous case
36
+ before_upgrade "${upgradeFromVersion}"
37
+ elif echo "${1}" | grep -E -q '(fail|abort)'
38
+ then
39
+ echo "Failed to install before the pre-installation script was run." >&2
40
+ exit 1
41
+ fi
@@ -0,0 +1,39 @@
1
+ #!/bin/sh
2
+ before_remove() {
3
+ <%# Making sure that at least one command is in the function -%>
4
+ <%# avoids a lot of potential errors, including the case that -%>
5
+ <%# the script is non-empty, but just whitespace and/or comments -%>
6
+ :
7
+ <% if script?(:before_remove) -%>
8
+ <%= script(:before_remove) %>
9
+ <% end -%>
10
+
11
+ <%# Removing the systemd service-%>
12
+ <% if attributes[:deb_systemd] -%>
13
+ systemctl stop <%= attributes[:deb_systemd] %> >/dev/null || true
14
+ systemctl disable <%= attributes[:deb_systemd] %> >/dev/null || true
15
+ systemctl --system daemon-reload >/dev/null || true
16
+ <% end -%>
17
+ }
18
+
19
+ dummy() {
20
+ :
21
+ }
22
+
23
+ if [ "${1}" = "remove" -a -z "${2}" ]
24
+ then
25
+ # "before remove" goes here
26
+ before_remove
27
+ elif [ "${1}" = "upgrade" ]
28
+ then
29
+ # Executed before the old version is removed
30
+ # upon upgrade.
31
+ # We should generally not do anything here. The newly installed package
32
+ # should do the upgrade, not the uninstalled one, since it can't anticipate
33
+ # what new things it will have to do to upgrade for the new version.
34
+ dummy
35
+ elif echo "${1}" | grep -E -q "(fail|abort)"
36
+ then
37
+ echo "Failed to install before the pre-removal script was run." >&2
38
+ exit 1
39
+ fi
@@ -0,0 +1,11 @@
1
+ <pkg-info
2
+ <% if !attributes[:osxpkg_postinstall_action].nil? -%>postinstall-action="<%= attributes[:osxpkg_postinstall_action] %>"<% end -%>
3
+ >
4
+ <% if !attributes[:osxpkg_dont_obsolete].nil? -%>
5
+ <dont-obsolete>
6
+ <% attributes[:osxpkg_dont_obsolete].each do |filepath| -%>
7
+ <file path="<%= filepath %>"/>
8
+ <% end -%>
9
+ </dont-obsolete>
10
+ <% end -%>
11
+ </pkg-info>
@@ -0,0 +1,12 @@
1
+ set name=pkg.fmri value="<%=@name%>@<%=@version%>"
2
+ set name=pkg.summary value="<%=@description%>"
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:<%=@category%>"
6
+ set name=variant.opensolaris.zone <%= attributes[:p5p_zonetype] %>
7
+ set name=variant.arch value=<%=@architecture%>
8
+ <transform file dir -> set owner <%= attributes[:p5p_user] %>>
9
+ <transform file dir -> set group <%= attributes[:p5p_group] %>>
10
+ <transform dir path=opt$->drop>
11
+ <transform dir path=etc$->drop>
12
+ <transform dir path=usr(?:|/bin)$->drop>
@@ -0,0 +1,47 @@
1
+ # Generated by fpm
2
+ # Hello packaging friend!
3
+ #
4
+ # If you find yourself using this 'fpm --edit' feature frequently, it is
5
+ # a sign that fpm is missing a feature! I welcome your feature requests!
6
+ # Please visit the following URL and ask for a feature that helps you never
7
+ # need to edit this file again! :)
8
+ # https://github.com/jordansissel/fpm/issues
9
+ # ------------------------------------------------------------------------
10
+ #
11
+ pkgname = <%= name %>
12
+ <% if !epoch.nil? -%>
13
+ pkgver = <%= epoch %>:<%= version %>-<%= iteration %>
14
+ <% else -%>
15
+ pkgver = <%= version %>-<%= iteration %>
16
+ <% end -%>
17
+ pkgdesc = <%= description %>
18
+ <% if !url.nil? and !url.empty? -%>
19
+ url = <%= url %>
20
+ <% else -%>
21
+ url = http://nourlgiven.example.com/
22
+ <% end -%>
23
+ builddate = <%= builddate %>
24
+ packager = <%= maintainer %>
25
+ size = <%= size %>
26
+ arch = <%= architecture %>
27
+ license = <%= license %>
28
+ <% replaces.each do |repl| -%>
29
+ replaces = <%= repl %>
30
+ <% end -%>
31
+ group = <%= category %>
32
+ <% conflicts.each do |confl| -%>
33
+ conflict = <%= confl %>
34
+ <% end -%>
35
+ <% provides.each do |prov| -%>
36
+ provides = <%= prov %>
37
+ <% end -%>
38
+ <% config_files.each do |conf| -%>
39
+ <% conf.gsub(/^\/+/, "") -%>
40
+ backup = <%= conf %>
41
+ <% end -%>
42
+ <% dependencies.each do |req| -%>
43
+ depend = <%= req %>
44
+ <% end -%>
45
+ <% attributes.fetch(:pacman_opt_depends, []).each do |opt| -%>
46
+ optdepend = <%= opt %>
47
+ <% end -%>
@@ -0,0 +1,41 @@
1
+ <%# In each function, a `:` is the first command. -%>
2
+ <%# This makes sure that at least one command is in the function -%>
3
+ <%# This avoids a lot of potential errors, including the case that -%>
4
+ <%# the script is non-empty, but just whitespace and/or comments -%>
5
+ <%# see issue #875 for more details -%>
6
+ <% if script?(:before_install) -%>
7
+ pre_install() {
8
+ :
9
+ <%= script(:before_install) %>
10
+ }
11
+ <% end -%>
12
+ <% if script?(:after_install) -%>
13
+ post_install() {
14
+ :
15
+ <%= script(:after_install) %>
16
+ }
17
+ <% end -%>
18
+ <% if script?(:before_upgrade) -%>
19
+ pre_upgrade() {
20
+ :
21
+ <%= script(:before_upgrade) %>
22
+ }
23
+ <% end -%>
24
+ <% if script?(:after_upgrade) -%>
25
+ post_upgrade() {
26
+ :
27
+ <%= script(:after_upgrade) %>
28
+ }
29
+ <% end -%>
30
+ <% if script?(:before_remove) -%>
31
+ pre_remove() {
32
+ :
33
+ <%= script(:before_remove) %>
34
+ }
35
+ <% end -%>
36
+ <% if script?(:after_remove) -%>
37
+ post_remove() {
38
+ :
39
+ <%= script(:after_remove) %>
40
+ }
41
+ <% end -%>
@@ -0,0 +1,34 @@
1
+ # TODO(sissel): implement 'anti' class for this package.
2
+ class <%= name %>::package {
3
+ $version = "<%= version %>"
4
+ $iteration = "<%= iteration %>"
5
+
6
+ file {
7
+ <% paths.each do |path|
8
+ stat = File.lstat(path)
9
+ params = {}
10
+ if stat.directory?
11
+ params[:ensure] = "directory"
12
+ elsif stat.symlink?
13
+ params[:ensure] = "link"
14
+ params[:target] = File.readlink(path)
15
+ stat = File.stat(path)
16
+ else
17
+ params[:ensure] = "file"
18
+ params[:source] = "puppet:///modules/#{name}/#{path}"
19
+ end
20
+
21
+ if params[:ensure] != "link"
22
+ params[:owner] = uid2user(stat.uid)
23
+ params[:group] = gid2group(stat.gid)
24
+ params[:mode] = sprintf("%04o", stat.mode & 0777)
25
+ end
26
+
27
+ settings = puppetsort(params).collect { |k,v| "#{k} => \"#{v}\"" }.join(",\n ")
28
+ -%>
29
+ # <%= stat.inspect %>
30
+ "<%= fixpath(path) %>":
31
+ <%= settings %>;
32
+ <% end # paths.each -%>
33
+ }
34
+ }
@@ -0,0 +1,13 @@
1
+ class <%= name %>::package::remove {
2
+ $version = "<%= version %>"
3
+ $iteration = "<%= iteration %>"
4
+
5
+ fail("DO NOT USE THIS. IT IS NOT WELL DEFINED YET.")
6
+
7
+ file {
8
+ <% paths.each do |path| -%>
9
+ "<%= fixpath(path) %>":
10
+ ensure => absent;
11
+ <% end # paths.each -%>
12
+ }
13
+ }
@@ -0,0 +1,261 @@
1
+ # Hello packaging friend!
2
+ #
3
+ # If you find yourself using this 'fpm --edit' feature frequently, it is
4
+ # a sign that fpm is missing a feature! I welcome your feature requests!
5
+ # Please visit the following URL and ask for a feature that helps you never
6
+ # need to edit this file again! :)
7
+ # https://github.com/jordansissel/fpm/issues
8
+ # ------------------------------------------------------------------------
9
+
10
+ # Disable the stupid stuff rpm distros include in the build process by default:
11
+ <% %w(prep build install clean).each do |step| -%>
12
+ <%# These definitions have to be non-empty... I guess... -%>
13
+ # Disable any <%= step %> shell actions. replace them with simply 'true'
14
+ %define __spec_<%= step %>_post true
15
+ %define __spec_<%= step %>_pre true
16
+ <% end -%>
17
+ # Disable checking for unpackaged files ?
18
+ #%undefine __check_files
19
+
20
+ # Use <%= attributes[:rpm_digest] %> file digest method.
21
+ # The first macro is the one used in RPM v4.9.1.1
22
+ %define _binary_filedigest_algorithm <%= digest_algorithm %>
23
+ # This is the macro I find on OSX when Homebrew provides rpmbuild (rpm v5.4.14)
24
+ %define _build_binary_file_digest_algo <%= digest_algorithm %>
25
+
26
+ # Use <%= attributes[:rpm_compression] %> payload compression
27
+ %define _binary_payload <%= payload_compression %>
28
+
29
+ <% (attributes[:rpm_filter_from_requires] or []).each do |reqfilter| -%>
30
+ %filter_from_requires <%= reqfilter %>
31
+ <% end -%>
32
+ <% (attributes[:rpm_filter_from_provides] or []).each do |provfilter| -%>
33
+ %filter_from_provides <%= provfilter %>
34
+ <% end -%>
35
+ <% if !(attributes[:rpm_filter_from_requires] or []).empty? or !(attributes[:rpm_filter_from_provides] or []).empty?-%>
36
+ %filter_setup
37
+ <% end -%>
38
+
39
+ Name: <%= name %>
40
+ Version: <%= version %>
41
+ <% if epoch -%>
42
+ Epoch: <%= epoch %>
43
+ <% end -%>
44
+ Release: <%= iteration or 1 %><%= "%{?dist}" if attributes[:rpm_dist] %>
45
+ <%# use the first line of the description as the summary -%>
46
+ Summary: <%= summary %>
47
+ <% if !attributes[:rpm_autoreqprov?] -%>
48
+ AutoReqProv: no
49
+ <% else -%>
50
+ AutoReqProv: yes
51
+ <% end -%>
52
+ <% if attributes[:rpm_autoreq?] -%>
53
+ AutoReq: yes
54
+ <% end -%>
55
+ <% if attributes[:rpm_autoprov?] -%>
56
+ AutoProv: yes
57
+ <% end -%>
58
+ # Seems specifying BuildRoot is required on older rpmbuild (like on CentOS 5)
59
+ # fpm passes '--define buildroot ...' on the commandline, so just reuse that.
60
+ BuildRoot: %buildroot
61
+ # Add prefix, must not end with /
62
+ <% if !prefix.nil? and !prefix.empty? %>
63
+ Prefix: <%= prefix.gsub(/([^\/]+)(\/$)/, '') %>
64
+ <% end -%>
65
+
66
+ Group: <%= category %>
67
+ <%# Sometimes the 'license' field has multiple lines... Hack around it.
68
+ # While technically yes this means we are 'modifying' the license,
69
+ # since the job of FPM is to get shit done and that this is only
70
+ # modifying whitespace, it should be reasonably OK. -%>
71
+ License: <%= license.gsub("\n", " ") %>
72
+ <% if !vendor.nil? and !vendor.empty? -%>
73
+ Vendor: <%= vendor %>
74
+ <% end -%>
75
+ <% if !url.nil? and !url.empty? -%>
76
+ URL: <%= url %>
77
+ <%else -%>
78
+ URL: http://nourlgiven.example.com/
79
+ <% end -%>
80
+ Packager: <%= maintainer %>
81
+
82
+ <% if !attributes[:no_depends?] -%>
83
+ <% dependencies.each do |req| -%>
84
+ Requires: <%= req %>
85
+ <% end -%>
86
+ <% (attributes[:rpm_tags] or []).each do |tag| -%>
87
+ <%= tag %>
88
+ <% end -%>
89
+ <% end -%>
90
+ <% provides.each do |prov| -%>
91
+ Provides: <%= prov %>
92
+ <% end -%>
93
+ <% conflicts.each do |conflict| -%>
94
+ Conflicts: <%= conflict %>
95
+ <% end -%>
96
+ <% replaces.each do |repl| -%>
97
+ <%# The closes equivalent in RPM to "replaces" is "Obsoletes" -%>
98
+ Obsoletes: <%= repl %>
99
+ <% end -%>
100
+ <%# rpm rejects descriptions with blank lines (even between content), so hack
101
+ around it by replacing blank lines with ' .' -%>
102
+ %description
103
+ <%= description.gsub(/^\s*$/, " .") %>
104
+
105
+ %prep
106
+ # noop
107
+
108
+ %build
109
+ # noop
110
+
111
+ %install
112
+ # noop
113
+
114
+ %clean
115
+ # noop
116
+
117
+ <%# This next section puts any %pre, %post, %preun, %postun, %verifyscript, %pretrans or %posttrans scripts %>
118
+ <%
119
+ scriptmap = {
120
+ :rpm_verifyscript => "verifyscript",
121
+ :rpm_posttrans => "posttrans",
122
+ :rpm_pretrans => "pretrans"
123
+ }
124
+ -%>
125
+ <% if script?(:before_upgrade) or script?(:after_upgrade) -%>
126
+ <% if script?(:before_upgrade) or script?(:before_install) -%>
127
+ %pre
128
+ upgrade() {
129
+ <%# Making sure that at least one command is in the function -%>
130
+ <%# avoids a lot of potential errors, including the case that -%>
131
+ <%# the script is non-empty, but just whitespace and/or comments -%>
132
+ :
133
+ <% if script?(:before_upgrade) -%>
134
+ <%= script(:before_upgrade) %>
135
+ <% end -%>
136
+ }
137
+ install() {
138
+ <%# Making sure that at least one command is in the function -%>
139
+ <%# avoids a lot of potential errors, including the case that -%>
140
+ <%# the script is non-empty, but just whitespace and/or comments -%>
141
+ :
142
+ <% if script?(:before_install) -%>
143
+ <%= script(:before_install) %>
144
+ <% end -%>
145
+ }
146
+ if [ "${1}" -eq 1 ]
147
+ then
148
+ # "before install" goes here
149
+ install
150
+ elif [ "${1}" -gt 1 ]
151
+ then
152
+ # "before upgrade" goes here
153
+ upgrade
154
+ fi
155
+ <% end -%>
156
+ <% if script?(:after_upgrade) or script?(:after_install) -%>
157
+ %post
158
+ upgrade() {
159
+ <%# Making sure that at least one command is in the function -%>
160
+ <%# avoids a lot of potential errors, including the case that -%>
161
+ <%# the script is non-empty, but just whitespace and/or comments -%>
162
+ :
163
+ <% if script?(:after_upgrade) -%>
164
+ <%= script(:after_upgrade) %>
165
+ <% end -%>
166
+ }
167
+ install() {
168
+ <%# Making sure that at least one command is in the function -%>
169
+ <%# avoids a lot of potential errors, including the case that -%>
170
+ <%# the script is non-empty, but just whitespace and/or comments -%>
171
+ :
172
+ <% if script?(:after_install) -%>
173
+ <%= script(:after_install) %>
174
+ <% end -%>
175
+ }
176
+ if [ "${1}" -eq 1 ]
177
+ then
178
+ # "after install" goes here
179
+ install
180
+ elif [ "${1}" -gt 1 ]
181
+ then
182
+ # "after upgrade" goes here
183
+ upgrade
184
+ fi
185
+ <% end -%>
186
+ <% if script?(:before_remove) -%>
187
+ %preun
188
+ if [ "${1}" -eq 0 ]
189
+ then
190
+ <%# Making sure that at least one command is in the function -%>
191
+ <%# avoids a lot of potential errors, including the case that -%>
192
+ <%# the script is non-empty, but just whitespace and/or comments -%>
193
+ :
194
+ <%= script(:before_remove) %>
195
+ fi
196
+ <% end -%>
197
+ <% if script?(:after_remove) -%>
198
+ %postun
199
+ if [ "${1}" -eq 0 ]
200
+ then
201
+ <%# Making sure that at least one command is in the function -%>
202
+ <%# avoids a lot of potential errors, including the case that -%>
203
+ <%# the script is non-empty, but just whitespace and/or comments -%>
204
+ :
205
+ <%= script(:after_remove) %>
206
+ fi
207
+ <% end -%>
208
+ <% else
209
+ other_scriptmap = {
210
+ :before_install => "pre",
211
+ :after_install => "post",
212
+ :before_remove => "preun",
213
+ :after_remove => "postun"
214
+ }
215
+ scriptmap.merge!(other_scriptmap)
216
+ end
217
+ -%>
218
+ <% scriptmap.each do |name, rpmname| -%>
219
+ <% if script?(name) -%>
220
+ %<%= rpmname %>
221
+ <%= script(name) %>
222
+ <% end -%>
223
+ <% end -%>
224
+
225
+ <%# This section adds any triggers, as ordered in the command line -%>
226
+ <%
227
+ triggermap = {
228
+ :before_install => "prein",
229
+ :after_install => "in",
230
+ :before_uninstall => "un",
231
+ :after_target_uninstall => "postun"
232
+ }
233
+ triggermap.each do |name, rpmtype|
234
+ (attributes["rpm_trigger_#{name}".to_sym] or []).each do |trigger_name, trigger_script, trigger_scriptprog| -%>
235
+ %trigger<%= rpmtype -%> <%= trigger_scriptprog -%> -- <%= trigger_name %>
236
+ <%= trigger_script %>
237
+ <% end -%>
238
+ <% end -%>
239
+
240
+ %files
241
+ %defattr(<%= attributes[:rpm_defattrfile] %>,<%= attributes[:rpm_user] || "root" %>,<%= attributes[:rpm_group] || "root" %>,<%= attributes[:rpm_defattrdir] %>)
242
+ <%# Output config files and then regular files. -%>
243
+ <% config_files.each do |path| -%>
244
+ %config(noreplace) <%= rpm_file_entry(path) %>
245
+ <% end -%>
246
+ <%# list directories %>
247
+ <% directories.each do |path| -%>
248
+ %dir <%= rpm_file_entry(path) %>
249
+ <% end -%>
250
+ <%# list only files, not directories? -%>
251
+ # Reject config files already listed or parent directories, then prefix files
252
+ # with "/", then make sure paths with spaces are quoted. I hate rpm so much.
253
+ <% files.each do |path| -%>
254
+ <% path = "/#{path}" -%>
255
+ <% next if config_files.include?(path)-%>
256
+ <% next if directories.include?(path)-%>
257
+ <%= rpm_file_entry(path) %>
258
+ <% end -%>
259
+
260
+ %changelog
261
+ <%= attributes[:rpm_changelog] %>