fpm 1.2.0 → 1.3.0

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.
@@ -0,0 +1,32 @@
1
+ before_upgrade() {
2
+ <% if script?(:before_upgrade) -%>
3
+ <%= script(:before_upgrade) %>
4
+ <% end -%>
5
+ }
6
+
7
+ before_install() {
8
+ <% if script?(:before_install) -%>
9
+ <%= script(:before_install) %>
10
+ <% end -%>
11
+ }
12
+
13
+ if [ "${1}" = "install" -a -z "${2}" ]
14
+ then
15
+ before_install
16
+ elif [ "${1}" = "upgrade" -a -n "${2}" ]
17
+ then
18
+ upgradeFromVersion="${2}"
19
+ before_upgrade "${2}"
20
+ elif [ "${1}" = "install" -a -n "${2}" ]
21
+ then
22
+ upgradeFromVersion="${2}"
23
+ # Executed when a package is removed but its config files aren't,
24
+ # and a new version is installed.
25
+ # Looks a _lot_ like an upgrade case, I say we just execute the
26
+ # same "before upgrade" script as in the previous case
27
+ before_upgrade "${2}"
28
+ elif echo "${1}" | grep -E -q '(fail|abort)'
29
+ then
30
+ echo "Failed to install before the pre-installation script was run." >&2
31
+ exit 1
32
+ fi
@@ -0,0 +1,27 @@
1
+ before_remove() {
2
+ <% if script?(:before_remove) -%>
3
+ <%= script(:before_remove) %>
4
+ <% end -%>
5
+ }
6
+
7
+ dummy() {
8
+ }
9
+
10
+ if [ "${1}" = "remove" -a -z "${2}" ]
11
+ then
12
+ # "before remove" goes here
13
+ before_remove
14
+ elif [ "${1}" = "upgrade" ]
15
+ then
16
+ upgradeVersionTo="${2}"
17
+ # Executed before the old version is removed
18
+ # upon upgrade.
19
+ # We should generally not do anything here. The newly installed package
20
+ # should do the upgrade, not the uninstalled one, since it can't anticipate
21
+ # what new things it will have to do to upgrade for the new version.
22
+ dummy "${2}"
23
+ elif echo "${1}" | grep -E -q "(fail|abort)"
24
+ then
25
+ echo "Failed to install before the pre-removal script was run." >&2
26
+ exit 1
27
+ fi
@@ -109,22 +109,99 @@ Obsoletes: <%= repl %>
109
109
  # noop
110
110
 
111
111
  <%# This next section puts any %pre, %post, %preun, %postun, %verifyscript, %pretrans or %posttrans scripts %>
112
- <%
112
+ <%
113
113
  scriptmap = {
114
- :before_install => "pre",
115
- :after_install => "post",
116
- :before_remove => "preun",
117
- :after_remove => "postun",
118
114
  :rpm_verifyscript => "verifyscript",
119
115
  :rpm_posttrans => "posttrans",
120
116
  :rpm_pretrans => "pretrans"
121
117
  }
122
- scriptmap.each do |name, rpmname|
123
118
  -%>
119
+ <% if script?(:before_upgrade) or script?(:after_upgrade) -%>
120
+ <% if script?(:before_upgrade) or script?(:before_install) -%>
121
+ %pre
122
+ upgrade() {
123
+ <% if script?(:before_upgrade) -%>
124
+ <%= script(:before_upgrade) %>
125
+ <% end -%>
126
+ }
127
+ install() {
128
+ <% if script?(:before_install) -%>
129
+ <%= script(:before_install) %>
130
+ <% end -%>
131
+ }
132
+ if [ "${1}" -eq 1 ]
133
+ then
134
+ install
135
+ # "before install" goes here
136
+ elif [ "${1}" -gt 1 ]
137
+ then
138
+ upgrade
139
+ fi
140
+ <% end -%>
141
+ <% if script?(:after_upgrade) or script?(:after_install) -%>
142
+ %pre
143
+ upgrade() {
144
+ <% if script?(:after_upgrade) -%>
145
+ <%= script(:after_upgrade) %>
146
+ <% end -%>
147
+ }
148
+ install() {
149
+ <% if script?(:after_install) -%>
150
+ <%= script(:after_install) %>
151
+ <% end -%>
152
+ }
153
+ if [ "${1}" -eq 1 ]
154
+ then
155
+ install
156
+ # "before install" goes here
157
+ elif [ "${1}" -gt 1 ]
158
+ then
159
+ upgrade
160
+ fi
161
+ <% end -%>
162
+ <% if script?(:before_remove) -%>
163
+ %preun
164
+ if [ "${1}" -eq 0 ]
165
+ then
166
+ <%= script(:before_remove) %>
167
+ fi
168
+ <% end -%>
169
+ <% if script?(:after_remove) -%>
170
+ %postun
171
+ if [ "${1}" -eq 0 ]
172
+ then
173
+ <%= script(:after_remove) %>
174
+ fi
175
+ <% end -%>
176
+ <% else
177
+ other_scriptmap = {
178
+ :before_install => "pre",
179
+ :after_install => "post",
180
+ :before_remove => "preun",
181
+ :after_remove => "postun"
182
+ }
183
+ scriptmap.merge!(other_scriptmap)
184
+ end
185
+ -%>
186
+ <% scriptmap.each do |name, rpmname| -%>
124
187
  <% if script?(name) -%>
125
- %<%= rpmname %>
126
- <%= script(name) %>
188
+ %<%= rpmname %>
189
+ <%= script(name) %>
190
+ <% end -%>
191
+ <% end -%>
127
192
 
193
+ <%# This section adds any triggers, as ordered in the command line -%>
194
+ <%
195
+ triggermap = {
196
+ :before_install => "prein",
197
+ :after_install => "in",
198
+ :before_uninstall => "un",
199
+ :after_target_uninstall => "postun"
200
+ }
201
+ triggermap.each do |name, rpmtype|
202
+ (attributes["rpm_trigger_#{name}".to_sym] or []).each do |trigger_name, trigger_script, trigger_scriptprog| -%>
203
+ %trigger<%= rpmtype -%> <%= trigger_scriptprog -%> -- <%= trigger_name %>
204
+ <%= trigger_script %>
128
205
  <% end -%>
129
206
  <% end -%>
130
207
 
@@ -21,31 +21,57 @@ set -e
21
21
  function main() {
22
22
  set_install_dir
23
23
 
24
- create_pid
24
+ if ! slug_already_current ; then
25
+
26
+ create_pid
27
+ wait_for_others
28
+ kill_others
29
+ set_owner
30
+ unpack_payload
31
+
32
+ if [ "$UNPACK_ONLY" == "1" ] ; then
33
+ echo "Unpacking complete, not moving symlinks or restarting because unpack only was specified."
34
+ else
35
+ create_symlinks
36
+
37
+ set +e # don't exit on errors to allow us to clean up
38
+ if ! run_post_install ; then
39
+ revert_symlinks
40
+ log "Installation failed."
41
+ exit 1
42
+ else
43
+ clean_out_old_releases
44
+ log "Installation complete."
45
+ fi
46
+ fi
25
47
 
26
- wait_for_others
27
-
28
- kill_others
29
-
30
- set_owner
31
-
32
- unpack_payload
33
-
34
- if [ "$UNPACK_ONLY" == "1" ] ; then
35
- echo "Unpacking complete, not moving symlinks or restarting because unpack only was specified."
36
48
  else
37
- create_symlinks
49
+ echo "This slug is already installed in 'current'. Specify -f to force reinstall. Exiting."
50
+ fi
51
+ }
38
52
 
39
- set +e # don't exit on errors to allow us to clean up
40
- if ! run_post_install ; then
41
- revert_symlinks
42
- log "Installation failed."
43
- exit 1
53
+ # check if this slug is already running and exit unless `force` specified
54
+ # Note: this only works with RELEASE_ID is used
55
+ function slug_already_current(){
56
+ local this_slug=$(basename $0 .slug)
57
+ local current=$(basename "$(readlink ${INSTALL_ROOT}/current)")
58
+ log "'current' symlink points to slug: ${current}"
59
+
60
+ if [ "$this_slug" == "$current" ] ; then
61
+ if [ "$FORCE" == "1" ] ; then
62
+ log "Force was specified. Proceeding with install after renaming live directory to allow running service to shutdown correctly."
63
+ local real_dir=$(readlink ${INSTALL_ROOT}/current)
64
+ if [ -f ${real_dir}.old ] ; then
65
+ # remove that .old directory, if needed
66
+ rm -rf ${real_dir}.old
67
+ fi
68
+ mv ${real_dir} ${real_dir}.old
69
+ mkdir -p ${real_dir}
44
70
  else
45
- clean_out_old_releases
46
- log "Installation complete."
71
+ return 0;
47
72
  fi
48
73
  fi
74
+ return 1;
49
75
  }
50
76
 
51
77
  # deletes the PID file for this installation
@@ -108,8 +134,8 @@ function save_environment(){
108
134
  echo -n "" > ${METADATA} # empty file
109
135
 
110
136
  # just piping env to a file doesn't quote the variables. This does
111
- # filter out multiline junk and _. _ is a readonly variable
112
- env | egrep "^[^ ]+=.*" | grep -v "^_=" | while read ENVVAR ; do
137
+ # filter out multiline junk, _, and functions. _ is a readonly variable.
138
+ env | grep -v "^_=" | grep -v "^[^=(]*()=" | egrep "^[^ ]+=" | while read ENVVAR ; do
113
139
  local NAME=${ENVVAR%%=*}
114
140
  # sed is to preserve variable values with dollars (for escaped variables or $() style command replacement),
115
141
  # and command replacement backticks
metadata CHANGED
@@ -1,241 +1,198 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: fpm
3
- version: !ruby/object:Gem::Version
4
- version: 1.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Jordan Sissel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-25 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2014-10-25 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
14
15
  name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.7.7
20
- type: :runtime
21
16
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
24
19
  - - ">="
25
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
26
21
  version: 1.7.7
27
- - !ruby/object:Gem::Dependency
28
- name: cabin
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 0.6.0
34
22
  type: :runtime
23
+ version_requirements: *id001
24
+ - !ruby/object:Gem::Dependency
25
+ name: cabin
35
26
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
27
+ requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirements:
38
29
  - - ">="
39
- - !ruby/object:Gem::Version
30
+ - !ruby/object:Gem::Version
40
31
  version: 0.6.0
41
- - !ruby/object:Gem::Dependency
42
- name: backports
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 2.6.2
48
32
  type: :runtime
33
+ version_requirements: *id002
34
+ - !ruby/object:Gem::Dependency
35
+ name: backports
49
36
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
37
+ requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirements:
52
39
  - - ">="
53
- - !ruby/object:Gem::Version
40
+ - !ruby/object:Gem::Version
54
41
  version: 2.6.2
55
- - !ruby/object:Gem::Dependency
56
- name: arr-pm
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.0.9
62
42
  type: :runtime
43
+ version_requirements: *id003
44
+ - !ruby/object:Gem::Dependency
45
+ name: arr-pm
63
46
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
47
+ requirement: &id004 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
68
51
  version: 0.0.9
69
- - !ruby/object:Gem::Dependency
70
- name: clamp
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.6'
76
52
  type: :runtime
53
+ version_requirements: *id004
54
+ - !ruby/object:Gem::Dependency
55
+ name: clamp
77
56
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.6'
83
- - !ruby/object:Gem::Dependency
84
- name: childprocess
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
57
+ requirement: &id005 !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: "0.6"
90
62
  type: :runtime
63
+ version_requirements: *id005
64
+ - !ruby/object:Gem::Dependency
65
+ name: childprocess
91
66
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: ffi
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
67
+ requirement: &id006 !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - &id007
70
+ - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
104
73
  type: :runtime
74
+ version_requirements: *id006
75
+ - !ruby/object:Gem::Dependency
76
+ name: ffi
105
77
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
78
+ requirement: &id008 !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - *id007
81
+ type: :runtime
82
+ version_requirements: *id008
83
+ - !ruby/object:Gem::Dependency
112
84
  name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 3.0.0
118
- type: :development
119
85
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
86
+ requirement: &id009 !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
124
90
  version: 3.0.0
125
- - !ruby/object:Gem::Dependency
126
- name: insist
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.0.5
132
91
  type: :development
92
+ version_requirements: *id009
93
+ - !ruby/object:Gem::Dependency
94
+ name: insist
133
95
  prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
96
+ requirement: &id010 !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
138
100
  version: 0.0.5
139
- - !ruby/object:Gem::Dependency
140
- name: pry
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
101
  type: :development
102
+ version_requirements: *id010
103
+ - !ruby/object:Gem::Dependency
104
+ name: pry
147
105
  prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: stud
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
106
+ requirement: &id011 !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - *id007
160
109
  type: :development
110
+ version_requirements: *id011
111
+ - !ruby/object:Gem::Dependency
112
+ name: stud
161
113
  prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- description: Convert directories, rpms, python eggs, rubygems, and more to rpms, debs,
168
- solaris packages and more. Win at package management without wasting pointless hours
169
- debugging bad rpm specs!
114
+ requirement: &id012 !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - *id007
117
+ type: :development
118
+ version_requirements: *id012
119
+ description: Convert directories, rpms, python eggs, rubygems, and more to rpms, debs, solaris packages and more. Win at package management without wasting pointless hours debugging bad rpm specs!
170
120
  email: jls@semicomplete.com
171
- executables:
121
+ executables:
172
122
  - fpm
173
123
  extensions: []
124
+
174
125
  extra_rdoc_files: []
175
- files:
176
- - CHANGELIST
177
- - CONTRIBUTORS
178
- - LICENSE
179
- - bin/fpm
126
+
127
+ files:
180
128
  - lib/fpm.rb
129
+ - lib/fpm/version.rb
181
130
  - lib/fpm/command.rb
182
- - lib/fpm/errors.rb
183
- - lib/fpm/namespace.rb
184
- - lib/fpm/package.rb
185
- - lib/fpm/package/cpan.rb
186
- - lib/fpm/package/deb.rb
131
+ - lib/fpm/package/pkgin.rb
132
+ - lib/fpm/package/zip.rb
187
133
  - lib/fpm/package/dir.rb
188
- - lib/fpm/package/empty.rb
189
- - lib/fpm/package/gem.rb
190
134
  - lib/fpm/package/npm.rb
191
- - lib/fpm/package/osxpkg.rb
135
+ - lib/fpm/package/sh.rb
136
+ - lib/fpm/package/cpan.rb
137
+ - lib/fpm/package/rpm.rb
192
138
  - lib/fpm/package/pear.rb
193
- - lib/fpm/package/pkgin.rb
194
- - lib/fpm/package/puppet.rb
139
+ - lib/fpm/package/pyfpm/get_metadata.pyc
195
140
  - lib/fpm/package/pyfpm/__init__.py
196
- - lib/fpm/package/pyfpm/__init__.pyc
197
141
  - lib/fpm/package/pyfpm/get_metadata.py
198
- - lib/fpm/package/pyfpm/get_metadata.pyc
199
- - lib/fpm/package/python.rb
200
- - lib/fpm/package/rpm.rb
201
- - lib/fpm/package/sh.rb
142
+ - lib/fpm/package/pyfpm/__init__.pyc
143
+ - lib/fpm/package/gem.rb
144
+ - lib/fpm/package/deb.rb
145
+ - lib/fpm/package/osxpkg.rb
202
146
  - lib/fpm/package/solaris.rb
203
147
  - lib/fpm/package/tar.rb
204
- - lib/fpm/package/zip.rb
148
+ - lib/fpm/package/puppet.rb
149
+ - lib/fpm/package/empty.rb
150
+ - lib/fpm/package/python.rb
205
151
  - lib/fpm/util.rb
206
- - lib/fpm/version.rb
207
- - templates/deb.erb
208
- - templates/deb/ldconfig.sh.erb
209
- - templates/osxpkg.erb
210
- - templates/puppet/package.pp.erb
211
- - templates/puppet/package/remove.pp.erb
212
- - templates/rpm.erb
152
+ - lib/fpm/errors.rb
153
+ - lib/fpm/namespace.rb
154
+ - lib/fpm/package.rb
155
+ - bin/fpm
213
156
  - templates/rpm/filesystem_list
214
157
  - templates/sh.erb
158
+ - templates/puppet/package/remove.pp.erb
159
+ - templates/puppet/package.pp.erb
160
+ - templates/osxpkg.erb
161
+ - templates/rpm.erb
215
162
  - templates/solaris.erb
163
+ - templates/deb/changelog.erb
164
+ - templates/deb/postrm_upgrade.sh.erb
165
+ - templates/deb/preinst_upgrade.sh.erb
166
+ - templates/deb/prerm_upgrade.sh.erb
167
+ - templates/deb/ldconfig.sh.erb
168
+ - templates/deb/postinst_upgrade.sh.erb
169
+ - templates/deb.erb
170
+ - LICENSE
171
+ - CONTRIBUTORS
172
+ - CHANGELIST
216
173
  homepage: https://github.com/jordansissel/fpm
217
- licenses:
174
+ licenses:
218
175
  - MIT-like
219
176
  metadata: {}
177
+
220
178
  post_install_message:
221
179
  rdoc_options: []
222
- require_paths:
180
+
181
+ require_paths:
223
182
  - lib
224
183
  - lib
225
- required_ruby_version: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- required_rubygems_version: !ruby/object:Gem::Requirement
231
- requirements:
232
- - - ">="
233
- - !ruby/object:Gem::Version
234
- version: '0'
184
+ required_ruby_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - *id007
187
+ required_rubygems_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - *id007
235
190
  requirements: []
191
+
236
192
  rubyforge_project:
237
- rubygems_version: 2.2.2
193
+ rubygems_version: 2.0.14
238
194
  signing_key:
239
195
  specification_version: 4
240
196
  summary: fpm - package building and mangling
241
197
  test_files: []
198
+