fpm-aeppert 1.6.2
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.
- checksums.yaml +7 -0
- data/CHANGELIST +661 -0
- data/CONTRIBUTORS +26 -0
- data/LICENSE +21 -0
- data/bin/fpm +8 -0
- data/lib/fpm.rb +20 -0
- data/lib/fpm/command.rb +648 -0
- data/lib/fpm/errors.rb +4 -0
- data/lib/fpm/namespace.rb +4 -0
- data/lib/fpm/package.rb +539 -0
- data/lib/fpm/package/apk.rb +510 -0
- data/lib/fpm/package/cpan.rb +405 -0
- data/lib/fpm/package/deb.rb +935 -0
- data/lib/fpm/package/dir.rb +221 -0
- data/lib/fpm/package/empty.rb +13 -0
- data/lib/fpm/package/freebsd.rb +147 -0
- data/lib/fpm/package/gem.rb +243 -0
- data/lib/fpm/package/npm.rb +120 -0
- data/lib/fpm/package/osxpkg.rb +165 -0
- data/lib/fpm/package/p5p.rb +124 -0
- data/lib/fpm/package/pacman.rb +403 -0
- data/lib/fpm/package/pear.rb +117 -0
- data/lib/fpm/package/pkgin.rb +35 -0
- data/lib/fpm/package/pleaserun.rb +63 -0
- data/lib/fpm/package/puppet.rb +120 -0
- data/lib/fpm/package/pyfpm/__init__.py +1 -0
- data/lib/fpm/package/pyfpm/get_metadata.py +104 -0
- data/lib/fpm/package/python.rb +318 -0
- data/lib/fpm/package/rpm.rb +593 -0
- data/lib/fpm/package/sh.rb +69 -0
- data/lib/fpm/package/solaris.rb +95 -0
- data/lib/fpm/package/tar.rb +86 -0
- data/lib/fpm/package/virtualenv.rb +164 -0
- data/lib/fpm/package/zip.rb +63 -0
- data/lib/fpm/rake_task.rb +60 -0
- data/lib/fpm/util.rb +358 -0
- data/lib/fpm/util/tar_writer.rb +80 -0
- data/lib/fpm/version.rb +3 -0
- data/templates/deb.erb +52 -0
- data/templates/deb/changelog.erb +5 -0
- data/templates/deb/ldconfig.sh.erb +13 -0
- data/templates/deb/postinst_upgrade.sh.erb +62 -0
- data/templates/deb/postrm_upgrade.sh.erb +46 -0
- data/templates/deb/preinst_upgrade.sh.erb +41 -0
- data/templates/deb/prerm_upgrade.sh.erb +39 -0
- data/templates/osxpkg.erb +11 -0
- data/templates/p5p_metadata.erb +12 -0
- data/templates/pacman.erb +47 -0
- data/templates/pacman/INSTALL.erb +41 -0
- data/templates/pleaserun/generate-cleanup.sh +17 -0
- data/templates/pleaserun/install-path.sh +17 -0
- data/templates/pleaserun/install.sh +117 -0
- data/templates/pleaserun/scripts/after-install.sh +4 -0
- data/templates/pleaserun/scripts/before-remove.sh +12 -0
- data/templates/puppet/package.pp.erb +34 -0
- data/templates/puppet/package/remove.pp.erb +13 -0
- data/templates/rpm.erb +260 -0
- data/templates/rpm/filesystem_list +14514 -0
- data/templates/sh.erb +369 -0
- data/templates/solaris.erb +15 -0
- metadata +322 -0
data/templates/sh.erb
ADDED
@@ -0,0 +1,369 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# bail out if any part of this fails
|
4
|
+
set -e
|
5
|
+
|
6
|
+
# This is the self-extracting installer script for an FPM shell installer package.
|
7
|
+
# It contains the logic to unpack a tar archive appended to the end of this script
|
8
|
+
# and, optionally, to run post install logic.
|
9
|
+
# Run the package file with -h to see a usage message or look at the print_usage method.
|
10
|
+
#
|
11
|
+
# The post install scripts are called with INSTALL_ROOT, INSTALL_DIR and VERBOSE exported
|
12
|
+
# into the environment for their use.
|
13
|
+
#
|
14
|
+
# INSTALL_ROOT = the path passed in with -i or a relative directory of the name of the package
|
15
|
+
# file with no extension
|
16
|
+
# INSTALL_DIR = the same as INSTALL_ROOT unless -c (capistrano release directory) argumetn
|
17
|
+
# is used. Then it is $INSTALL_ROOT/releases/<datestamp>
|
18
|
+
# CURRENT_DIR = if -c argument is used, this is set to the $INSTALL_ROOT/current which is
|
19
|
+
# symlinked to INSTALL_DIR
|
20
|
+
# VERBOSE = is set if the package was called with -v for verbose output
|
21
|
+
function main() {
|
22
|
+
set_install_dir
|
23
|
+
|
24
|
+
if ! slug_already_current ; then
|
25
|
+
|
26
|
+
create_pid
|
27
|
+
wait_for_others
|
28
|
+
kill_others
|
29
|
+
set_owner
|
30
|
+
pre_install
|
31
|
+
unpack_payload
|
32
|
+
|
33
|
+
if [ "$UNPACK_ONLY" == "1" ] ; then
|
34
|
+
echo "Unpacking complete, not moving symlinks or restarting because unpack only was specified."
|
35
|
+
else
|
36
|
+
create_symlinks
|
37
|
+
|
38
|
+
set +e # don't exit on errors to allow us to clean up
|
39
|
+
if ! run_post_install ; then
|
40
|
+
revert_symlinks
|
41
|
+
log "Installation failed."
|
42
|
+
exit 1
|
43
|
+
else
|
44
|
+
clean_out_old_releases
|
45
|
+
log "Installation complete."
|
46
|
+
fi
|
47
|
+
fi
|
48
|
+
|
49
|
+
else
|
50
|
+
echo "This slug is already installed in 'current'. Specify -f to force reinstall. Exiting."
|
51
|
+
fi
|
52
|
+
}
|
53
|
+
|
54
|
+
# check if this slug is already running and exit unless `force` specified
|
55
|
+
# Note: this only works with RELEASE_ID is used
|
56
|
+
function slug_already_current(){
|
57
|
+
local this_slug=$(basename $0 .slug)
|
58
|
+
local current=$(basename "$(readlink ${INSTALL_ROOT}/current)")
|
59
|
+
log "'current' symlink points to slug: ${current}"
|
60
|
+
|
61
|
+
if [ "$this_slug" == "$current" ] ; then
|
62
|
+
if [ "$FORCE" == "1" ] ; then
|
63
|
+
log "Force was specified. Proceeding with install after renaming live directory to allow running service to shutdown correctly."
|
64
|
+
local real_dir=$(readlink ${INSTALL_ROOT}/current)
|
65
|
+
if [ -e ${real_dir}.old ] ; then
|
66
|
+
# remove that .old directory, if needed
|
67
|
+
log "removing existing .old version of release"
|
68
|
+
rm -rf ${real_dir}.old
|
69
|
+
fi
|
70
|
+
mv ${real_dir} ${real_dir}.old
|
71
|
+
mkdir -p ${real_dir}
|
72
|
+
else
|
73
|
+
return 0;
|
74
|
+
fi
|
75
|
+
fi
|
76
|
+
return 1;
|
77
|
+
}
|
78
|
+
|
79
|
+
# deletes the PID file for this installation
|
80
|
+
function delete_pid(){
|
81
|
+
rm -f ${INSTALL_ROOT}/$$.pid 2> /dev/null
|
82
|
+
}
|
83
|
+
|
84
|
+
# creates a PID file for this installation
|
85
|
+
function create_pid(){
|
86
|
+
trap "delete_pid" EXIT
|
87
|
+
echo $$> ${INSTALL_ROOT}/$$.pid
|
88
|
+
}
|
89
|
+
|
90
|
+
|
91
|
+
# checks for other PID files and sleeps for a grace period if found
|
92
|
+
function wait_for_others(){
|
93
|
+
local count=`ls ${INSTALL_ROOT}/*.pid | wc -l`
|
94
|
+
|
95
|
+
if [ $count -gt 1 ] ; then
|
96
|
+
sleep 10
|
97
|
+
fi
|
98
|
+
}
|
99
|
+
|
100
|
+
# kills other running installations
|
101
|
+
function kill_others(){
|
102
|
+
for PID_FILE in $(ls ${INSTALL_ROOT}/*.pid) ; do
|
103
|
+
local p=`cat ${PID_FILE}`
|
104
|
+
if ! [ $p == $$ ] ; then
|
105
|
+
kill -9 $p
|
106
|
+
rm -f $PID_FILE 2> /dev/null
|
107
|
+
fi
|
108
|
+
done
|
109
|
+
}
|
110
|
+
|
111
|
+
# echos metadata file. A function so that we can have it change after we set INSTALL_ROOT
|
112
|
+
function fpm_metadata_file(){
|
113
|
+
echo "${INSTALL_ROOT}/.install-metadata"
|
114
|
+
}
|
115
|
+
|
116
|
+
# if this package was installed at this location already we will find a metadata file with the details
|
117
|
+
# about the installation that we left here. Load from that if available but allow command line args to trump
|
118
|
+
function load_environment(){
|
119
|
+
local METADATA=$(fpm_metadata_file)
|
120
|
+
if [ -r "${METADATA}" ] ; then
|
121
|
+
log "Found existing metadata file '${METADATA}'. Loading previous install details. Env vars in current environment will take precedence over saved values."
|
122
|
+
local TMP="/tmp/$(basename $0).$$.tmp"
|
123
|
+
# save existing environment, load saved environment from previous run from install-metadata and then
|
124
|
+
# overlay current environment so that anything set currencly will take precedence
|
125
|
+
# but missing values will be loaded from previous runs.
|
126
|
+
save_environment "$TMP"
|
127
|
+
source "${METADATA}"
|
128
|
+
source $TMP
|
129
|
+
rm "$TMP"
|
130
|
+
fi
|
131
|
+
}
|
132
|
+
|
133
|
+
# write out metadata for future installs
|
134
|
+
function save_environment(){
|
135
|
+
local METADATA=$1
|
136
|
+
echo -n "" > ${METADATA} # empty file
|
137
|
+
|
138
|
+
# just piping env to a file doesn't quote the variables. This does
|
139
|
+
# filter out multiline junk, _, and functions. _ is a readonly variable.
|
140
|
+
env | grep -v "^_=" | grep -v "^[^=(]*()=" | egrep "^[^ ]+=" | while read ENVVAR ; do
|
141
|
+
local NAME=${ENVVAR%%=*}
|
142
|
+
# sed is to preserve variable values with dollars (for escaped variables or $() style command replacement),
|
143
|
+
# and command replacement backticks
|
144
|
+
# Escaped parens captures backward reference \1 which gets replaced with backslash and \1 to esape them in the saved
|
145
|
+
# variable value
|
146
|
+
local VALUE=$(eval echo '$'$NAME | sed 's/\([$`]\)/\\\1/g')
|
147
|
+
echo "export $NAME=\"$VALUE\"" >> ${METADATA}
|
148
|
+
done
|
149
|
+
|
150
|
+
if [ -n "${OWNER}" ] ; then
|
151
|
+
chown ${OWNER} ${METADATA}
|
152
|
+
fi
|
153
|
+
}
|
154
|
+
|
155
|
+
function set_install_dir(){
|
156
|
+
# if INSTALL_ROOT isn't set by parsed args, use basename of package file with no extension
|
157
|
+
DEFAULT_DIR=$(echo $(basename $0) | sed -e 's/\.[^\.]*$//')
|
158
|
+
INSTALL_DIR=${INSTALL_ROOT:-$DEFAULT_DIR}
|
159
|
+
|
160
|
+
DATESTAMP=$(date +%Y%m%d%H%M%S)
|
161
|
+
if [ -z "$USE_FLAT_RELEASE_DIRECTORY" ] ; then
|
162
|
+
<%= "RELEASE_ID=#{release_id}" if respond_to?(:release_id) %>
|
163
|
+
INSTALL_DIR="${RELEASES_DIR}/${RELEASE_ID:-$DATESTAMP}"
|
164
|
+
fi
|
165
|
+
|
166
|
+
mkdir -p "$INSTALL_DIR" || die "Unable to create install directory $INSTALL_DIR"
|
167
|
+
|
168
|
+
export INSTALL_DIR
|
169
|
+
|
170
|
+
log "Installing package to '$INSTALL_DIR'"
|
171
|
+
}
|
172
|
+
|
173
|
+
function set_owner(){
|
174
|
+
export OWNER=${OWNER:-$USER}
|
175
|
+
log "Installing as user $OWNER"
|
176
|
+
}
|
177
|
+
|
178
|
+
function pre_install() {
|
179
|
+
# for rationale on the `:`, see #871
|
180
|
+
:
|
181
|
+
<% if script?(:before_install) -%>
|
182
|
+
<%= script(:before_install) %>
|
183
|
+
<% end %>
|
184
|
+
}
|
185
|
+
|
186
|
+
function unpack_payload(){
|
187
|
+
if [ "$FORCE" == "1" ] || [ ! "$(ls -A $INSTALL_DIR)" ] ; then
|
188
|
+
log "Unpacking payload . . ."
|
189
|
+
local archive_line=$(grep -a -n -m1 '__ARCHIVE__$' $0 | sed 's/:.*//')
|
190
|
+
tail -n +$((archive_line + 1)) $0 | tar -C $INSTALL_DIR -xf - > /dev/null || die "Failed to unpack payload from the end of '$0' into '$INSTALL_DIR'"
|
191
|
+
else
|
192
|
+
# Files are already here, just move symlinks
|
193
|
+
log "Directory already exists and has contents ($INSTALL_DIR). Not unpacking payload."
|
194
|
+
fi
|
195
|
+
}
|
196
|
+
|
197
|
+
function run_post_install(){
|
198
|
+
local AFTER_INSTALL=$INSTALL_DIR/.fpm/after_install
|
199
|
+
if [ -r $AFTER_INSTALL ] ; then
|
200
|
+
set_post_install_vars
|
201
|
+
chmod +x $AFTER_INSTALL
|
202
|
+
log "Running post install script"
|
203
|
+
output=$($AFTER_INSTALL 2>&1)
|
204
|
+
errorlevel=$?
|
205
|
+
log $output
|
206
|
+
return $errorlevel
|
207
|
+
fi
|
208
|
+
return 0
|
209
|
+
}
|
210
|
+
|
211
|
+
function set_post_install_vars(){
|
212
|
+
# for rationale on the `:`, see #871
|
213
|
+
:
|
214
|
+
<% if respond_to?(:package_metadata)%>
|
215
|
+
<% package_metadata_hash = JSON.parse(package_metadata)%>
|
216
|
+
<% package_metadata_hash.each do |k,v| %>
|
217
|
+
<%= "export #{k.upcase}='#{v}'; "%>
|
218
|
+
<% end %>
|
219
|
+
<% end %>
|
220
|
+
}
|
221
|
+
|
222
|
+
function create_symlinks(){
|
223
|
+
[ -n "$USE_FLAT_RELEASE_DIRECTORY" ] && return
|
224
|
+
|
225
|
+
export CURRENT_DIR="$INSTALL_ROOT/current"
|
226
|
+
if [ -e "$CURRENT_DIR" ] || [ -h "$CURRENT_DIR" ] ; then
|
227
|
+
log "Removing current symlink"
|
228
|
+
OLD_CURRENT_TARGET=$(readlink $CURRENT_DIR)
|
229
|
+
rm "$CURRENT_DIR"
|
230
|
+
fi
|
231
|
+
ln -s "$INSTALL_DIR" "$CURRENT_DIR"
|
232
|
+
|
233
|
+
log "Symlinked '$INSTALL_DIR' to '$CURRENT_DIR'"
|
234
|
+
}
|
235
|
+
|
236
|
+
# in case post install fails we may have to back out switching the symlink to current
|
237
|
+
# We can't switch the symlink after because post install may assume that it is in the
|
238
|
+
# exact state of being installed (services looking to current for their latest code)
|
239
|
+
function revert_symlinks(){
|
240
|
+
if [ -n "$OLD_CURRENT_TARGET" ] ; then
|
241
|
+
log "Putting current symlink back to '$OLD_CURRENT_TARGET'"
|
242
|
+
if [ -e "$CURRENT_DIR" ] ; then
|
243
|
+
rm "$CURRENT_DIR"
|
244
|
+
fi
|
245
|
+
ln -s "$OLD_CURRENT_TARGET" "$CURRENT_DIR"
|
246
|
+
fi
|
247
|
+
}
|
248
|
+
|
249
|
+
function clean_out_old_releases(){
|
250
|
+
[ -n "$USE_FLAT_RELEASE_DIRECTORY" ] && return
|
251
|
+
|
252
|
+
if [ -n "$OLD_CURRENT_TARGET" ] ; then
|
253
|
+
# exclude old 'current' from deletions
|
254
|
+
while [ $(ls -tr "${RELEASES_DIR}" | grep -v ^$(basename "${OLD_CURRENT_TARGET}")$ | wc -l) -gt 2 ] ; do
|
255
|
+
OLDEST_RELEASE=$(ls -tr "${RELEASES_DIR}" | grep -v ^$(basename "${OLD_CURRENT_TARGET}")$ | head -1)
|
256
|
+
log "Deleting old release '${OLDEST_RELEASE}'"
|
257
|
+
rm -rf "${RELEASES_DIR}/${OLDEST_RELEASE}"
|
258
|
+
done
|
259
|
+
else
|
260
|
+
while [ $(ls -tr "${RELEASES_DIR}" | wc -l) -gt 2 ] ; do
|
261
|
+
OLDEST_RELEASE=$(ls -tr "${RELEASES_DIR}" | head -1)
|
262
|
+
log "Deleting old release '${OLDEST_RELEASE}'"
|
263
|
+
rm -rf "${RELEASES_DIR}/${OLDEST_RELEASE}"
|
264
|
+
done
|
265
|
+
fi
|
266
|
+
}
|
267
|
+
|
268
|
+
function print_package_metadata(){
|
269
|
+
local metadata_line=$(grep -a -n -m1 '__METADATA__$' $0 | sed 's/:.*//')
|
270
|
+
local archive_line=$(grep -a -n -m1 '__ARCHIVE__$' $0 | sed 's/:.*//')
|
271
|
+
sed -n "$((metadata_line + 1)),$((archive_line - 1)) p" $0
|
272
|
+
}
|
273
|
+
|
274
|
+
function print_usage(){
|
275
|
+
echo "Usage: `basename $0` [options]"
|
276
|
+
echo "Install this package"
|
277
|
+
echo " -i <DIRECTORY> : install_root - an optional directory to install to."
|
278
|
+
echo " Default is package file name without file extension"
|
279
|
+
echo " -o <USER> : owner - the name of the user that will own the files installed"
|
280
|
+
echo " by the package. Defaults to current user"
|
281
|
+
echo " -r: disable capistrano style release directories - Default behavior is to create a releases directory inside"
|
282
|
+
echo " install_root and unpack contents into a date stamped (or build time id named) directory under the release"
|
283
|
+
echo " directory. Then create a 'current' symlink under install_root to the unpacked"
|
284
|
+
echo " directory once installation is complete replacing the symlink if it already "
|
285
|
+
echo " exists. If this flag is set just install into install_root directly"
|
286
|
+
echo " -u: Unpack the package, but do not install and symlink the payload"
|
287
|
+
echo " -f: force - Always overwrite existing installations"
|
288
|
+
echo " -y: yes - Don't prompt to clobber existing installations"
|
289
|
+
echo " -v: verbose - More output on installation"
|
290
|
+
echo " -h: help - Display this message"
|
291
|
+
}
|
292
|
+
|
293
|
+
function die () {
|
294
|
+
local message=$*
|
295
|
+
echo "Error: $message : $!"
|
296
|
+
exit 1
|
297
|
+
}
|
298
|
+
|
299
|
+
function log(){
|
300
|
+
local message=$*
|
301
|
+
if [ -n "$VERBOSE" ] ; then
|
302
|
+
echo "$*"
|
303
|
+
fi
|
304
|
+
}
|
305
|
+
|
306
|
+
function parse_args() {
|
307
|
+
args=`getopt mi:o:rfuyvh $*`
|
308
|
+
|
309
|
+
if [ $? != 0 ] ; then
|
310
|
+
print_usage
|
311
|
+
exit 2
|
312
|
+
fi
|
313
|
+
set -- $args
|
314
|
+
for i
|
315
|
+
do
|
316
|
+
case "$i"
|
317
|
+
in
|
318
|
+
-m)
|
319
|
+
print_package_metadata
|
320
|
+
exit 0
|
321
|
+
shift;;
|
322
|
+
-r)
|
323
|
+
USE_FLAT_RELEASE_DIRECTORY=1
|
324
|
+
shift;;
|
325
|
+
-i)
|
326
|
+
shift;
|
327
|
+
export INSTALL_ROOT="$1"
|
328
|
+
export RELEASES_DIR="${INSTALL_ROOT}/releases"
|
329
|
+
shift;;
|
330
|
+
-o)
|
331
|
+
shift;
|
332
|
+
export OWNER="$1"
|
333
|
+
shift;;
|
334
|
+
-v)
|
335
|
+
export VERBOSE=1
|
336
|
+
shift;;
|
337
|
+
-u)
|
338
|
+
UNPACK_ONLY=1
|
339
|
+
shift;;
|
340
|
+
-f)
|
341
|
+
FORCE=1
|
342
|
+
shift;;
|
343
|
+
-y)
|
344
|
+
CONFIRM="y"
|
345
|
+
shift;;
|
346
|
+
-h)
|
347
|
+
print_usage
|
348
|
+
exit 0
|
349
|
+
shift;;
|
350
|
+
--)
|
351
|
+
shift; break;;
|
352
|
+
esac
|
353
|
+
done
|
354
|
+
}
|
355
|
+
|
356
|
+
# parse args first to get install root
|
357
|
+
parse_args $*
|
358
|
+
# load environment from previous installations so we get defaults from that
|
359
|
+
load_environment
|
360
|
+
# reparse args so they can override any settings from previous installations if provided on the command line
|
361
|
+
parse_args $*
|
362
|
+
|
363
|
+
main
|
364
|
+
save_environment $(fpm_metadata_file)
|
365
|
+
exit 0
|
366
|
+
|
367
|
+
__METADATA__
|
368
|
+
<%= package_metadata if respond_to?(:package_metadata) %>
|
369
|
+
__ARCHIVE__
|
@@ -0,0 +1,15 @@
|
|
1
|
+
CLASSES=none
|
2
|
+
TZ=PST
|
3
|
+
PATH=/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin
|
4
|
+
BASEDIR=/
|
5
|
+
PKG=<%= name %>
|
6
|
+
NAME=<%= name %>
|
7
|
+
ARCH=<%= architecture %>
|
8
|
+
VERSION=<%= version %><%= iteration && "-" + iteration.to_s %>
|
9
|
+
CATEGORY=application
|
10
|
+
<%# pkginfo(4) says DESC is max 256 characters -%>
|
11
|
+
DESC=<%= description.split("\n").first[0..255] or "no description given" %>
|
12
|
+
VENDOR=<%= maintainer %>
|
13
|
+
<%# Take maintainer of "Foo <bar@baz.com>" and use "bar@baz.com" -%>
|
14
|
+
EMAIL=<%= (maintainer[/<.+>/] or maintainer).gsub(/[<>]/, "") %>
|
15
|
+
|
metadata
ADDED
@@ -0,0 +1,322 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fpm-aeppert
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.6.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Aaron Eppert
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.7.7
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.7.7
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: cabin
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 0.6.0
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.6.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: backports
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.6.2
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 2.6.2
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: arr-pm
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.0.10
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ~>
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 0.0.10
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: clamp
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ~>
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 1.0.0
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 1.0.0
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: childprocess
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: ffi
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: rake
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '10'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ~>
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '10'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: archive-tar-minitar
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: ruby-xz
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
type: :runtime
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: pleaserun
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ~>
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 0.0.24
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ~>
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 0.0.24
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: rspec
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ~>
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: 3.0.0
|
180
|
+
type: :development
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ~>
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: 3.0.0
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: insist
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ~>
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: 1.0.0
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ~>
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 1.0.0
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: pry
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - '>='
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
type: :development
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - '>='
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: stud
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - '>='
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - '>='
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
description: Convert directories, rpms, python eggs, rubygems, and more to rpms, debs,
|
230
|
+
solaris packages and more. Win at package management without wasting pointless hours
|
231
|
+
debugging bad rpm specs!
|
232
|
+
email: aeppert@gmail.com
|
233
|
+
executables:
|
234
|
+
- fpm
|
235
|
+
extensions: []
|
236
|
+
extra_rdoc_files: []
|
237
|
+
files:
|
238
|
+
- lib/fpm/command.rb
|
239
|
+
- lib/fpm/errors.rb
|
240
|
+
- lib/fpm/namespace.rb
|
241
|
+
- lib/fpm/package/apk.rb
|
242
|
+
- lib/fpm/package/cpan.rb
|
243
|
+
- lib/fpm/package/deb.rb
|
244
|
+
- lib/fpm/package/dir.rb
|
245
|
+
- lib/fpm/package/empty.rb
|
246
|
+
- lib/fpm/package/freebsd.rb
|
247
|
+
- lib/fpm/package/gem.rb
|
248
|
+
- lib/fpm/package/npm.rb
|
249
|
+
- lib/fpm/package/osxpkg.rb
|
250
|
+
- lib/fpm/package/p5p.rb
|
251
|
+
- lib/fpm/package/pacman.rb
|
252
|
+
- lib/fpm/package/pear.rb
|
253
|
+
- lib/fpm/package/pkgin.rb
|
254
|
+
- lib/fpm/package/pleaserun.rb
|
255
|
+
- lib/fpm/package/puppet.rb
|
256
|
+
- lib/fpm/package/pyfpm/__init__.py
|
257
|
+
- lib/fpm/package/pyfpm/get_metadata.py
|
258
|
+
- lib/fpm/package/python.rb
|
259
|
+
- lib/fpm/package/rpm.rb
|
260
|
+
- lib/fpm/package/sh.rb
|
261
|
+
- lib/fpm/package/solaris.rb
|
262
|
+
- lib/fpm/package/tar.rb
|
263
|
+
- lib/fpm/package/virtualenv.rb
|
264
|
+
- lib/fpm/package/zip.rb
|
265
|
+
- lib/fpm/package.rb
|
266
|
+
- lib/fpm/rake_task.rb
|
267
|
+
- lib/fpm/util/tar_writer.rb
|
268
|
+
- lib/fpm/util.rb
|
269
|
+
- lib/fpm/version.rb
|
270
|
+
- lib/fpm.rb
|
271
|
+
- bin/fpm
|
272
|
+
- templates/deb/changelog.erb
|
273
|
+
- templates/deb/ldconfig.sh.erb
|
274
|
+
- templates/deb/postinst_upgrade.sh.erb
|
275
|
+
- templates/deb/postrm_upgrade.sh.erb
|
276
|
+
- templates/deb/preinst_upgrade.sh.erb
|
277
|
+
- templates/deb/prerm_upgrade.sh.erb
|
278
|
+
- templates/deb.erb
|
279
|
+
- templates/osxpkg.erb
|
280
|
+
- templates/p5p_metadata.erb
|
281
|
+
- templates/pacman/INSTALL.erb
|
282
|
+
- templates/pacman.erb
|
283
|
+
- templates/pleaserun/generate-cleanup.sh
|
284
|
+
- templates/pleaserun/install-path.sh
|
285
|
+
- templates/pleaserun/install.sh
|
286
|
+
- templates/pleaserun/scripts/after-install.sh
|
287
|
+
- templates/pleaserun/scripts/before-remove.sh
|
288
|
+
- templates/puppet/package/remove.pp.erb
|
289
|
+
- templates/puppet/package.pp.erb
|
290
|
+
- templates/rpm/filesystem_list
|
291
|
+
- templates/rpm.erb
|
292
|
+
- templates/sh.erb
|
293
|
+
- templates/solaris.erb
|
294
|
+
- LICENSE
|
295
|
+
- CONTRIBUTORS
|
296
|
+
- CHANGELIST
|
297
|
+
homepage: https://github.com/aeppert/fpm
|
298
|
+
licenses:
|
299
|
+
- MIT-like
|
300
|
+
metadata: {}
|
301
|
+
post_install_message:
|
302
|
+
rdoc_options: []
|
303
|
+
require_paths:
|
304
|
+
- lib
|
305
|
+
- lib
|
306
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
307
|
+
requirements:
|
308
|
+
- - '>='
|
309
|
+
- !ruby/object:Gem::Version
|
310
|
+
version: '0'
|
311
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
312
|
+
requirements:
|
313
|
+
- - '>='
|
314
|
+
- !ruby/object:Gem::Version
|
315
|
+
version: '0'
|
316
|
+
requirements: []
|
317
|
+
rubyforge_project:
|
318
|
+
rubygems_version: 2.0.14.1
|
319
|
+
signing_key:
|
320
|
+
specification_version: 4
|
321
|
+
summary: fpm - package building and mangling
|
322
|
+
test_files: []
|