fpm 1.2.0 → 1.3.0

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