fpm 1.11.0 → 1.12.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.
- checksums.yaml +4 -4
- data/CHANGELOG.rst +17 -0
- data/lib/fpm/package.rb +2 -2
- data/lib/fpm/package/apk.rb +1 -1
- data/lib/fpm/package/deb.rb +29 -13
- data/lib/fpm/package/dir.rb +3 -3
- data/lib/fpm/package/empty.rb +1 -1
- data/lib/fpm/package/freebsd.rb +1 -1
- data/lib/fpm/package/gem.rb +39 -12
- data/lib/fpm/package/pacman.rb +22 -10
- data/lib/fpm/package/python.rb +29 -2
- data/lib/fpm/package/rpm.rb +24 -6
- data/lib/fpm/package/sh.rb +1 -1
- data/lib/fpm/package/tar.rb +1 -1
- data/lib/fpm/package/zip.rb +1 -1
- data/lib/fpm/util/tar_writer.rb +1 -1
- data/lib/fpm/version.rb +1 -1
- data/templates/deb/postinst_upgrade.sh.erb +29 -8
- data/templates/deb/postrm_upgrade.sh.erb +5 -0
- data/templates/deb/preinst_upgrade.sh.erb +5 -0
- data/templates/deb/prerm_upgrade.sh.erb +12 -4
- data/templates/rpm.erb +5 -5
- data/templates/sh.erb +6 -1
- metadata +34 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28f939bd20768768cb05026a39c8a270596368c654ec5606a43a0e75afa845ad
|
4
|
+
data.tar.gz: 0d7eea7108832e79994ba3ee9511c3715b384906f7ef3a2ab5e907cfc764609a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 555edd6cd5d4b0098e075011e48db96e52c454b8557735a51202307dcaeb4920a5efe93bb6d99cedf9d3ff95ff445c37059e1fc308e0602482977587d532e4b1
|
7
|
+
data.tar.gz: 2803ea8cb3af495d5fd20e75bee0eba11dc262ac59b86e63b75ef3cef7417440e88e1fec9172f7a1ea5cf0705e2ce36bc65e7b9c1c5469eb0e78b292ac822716
|
data/CHANGELOG.rst
CHANGED
@@ -1,6 +1,23 @@
|
|
1
1
|
Release Notes and Change Log
|
2
2
|
============================
|
3
3
|
|
4
|
+
1.12.0 (January 19, 2021)
|
5
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^
|
6
|
+
|
7
|
+
* Pin ffi dependency to ruby ffi 1.12.x to try keeping fpm compatible with older/abandoned rubies like 2.0 and 2.1. (`#1709`_; Matt Patterson)
|
8
|
+
* deb: New flag to add 'set -e' to all scripts. `--deb-maintainerscripts-force-errorchecks` which defaults to off. (`#1697`_; Andreas Ulm)
|
9
|
+
* deb: Fix bug when converting rubygems to debs where certain constraints like `~>1` would generate a deb dependency that couldn't be satisfied. (`#1699`_; Vlastimil Holer)
|
10
|
+
* deb: Fix error 'uninitialized constant FPM::Package::Deb::Zlib' (`#1739`_, `#1740`_; Federico Lancerin)
|
11
|
+
* python: Prepend to PYTHONPATH instead of replacing it. This should help on platforms that rely heavily on PYTHONPATH, such as NixOSX (`#1711`_, `#1710`_; anarg)
|
12
|
+
* python: Add `--python-trusted-host` flag which passes `--trusted-host` flag to `pip` (`#1737`_; Vladimir Ponarevsky)
|
13
|
+
* Documentation improvements (`#1724`_, `#1738`_, `#1667`_, `#1636`_)
|
14
|
+
* Dockerfile updated to Alpine 3.12 (`#1745`_; Cameron Nemo)
|
15
|
+
* Remove the 'backports' deprecation warning (`#1727`_; Jose Galvez)
|
16
|
+
* sh: Performance improvement when printing package metadata (`#1729`_; James Logsdon, Ed Healy)
|
17
|
+
* rpm: Add support for `xzmt` compression (multithreaded xz compressor) to help when creating very large packages (several gigabytes). (`#1447`_, `#1419`_; amnobc)
|
18
|
+
* rpm: Add `--rpm-macro-expansion` flag to enable macro expansion in scripts during rpmbuild. See https://rpm.org/user_doc/scriptlet_expansion.html for more details. (`#1642`_; juliantrzeciak)
|
19
|
+
* deb: use correct control.tar filename (`#1668`_; Mike Perham)
|
20
|
+
|
4
21
|
1.11.0 (January 30, 2019)
|
5
22
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
6
23
|
|
data/lib/fpm/package.rb
CHANGED
@@ -4,7 +4,7 @@ require "pathname" # stdlib
|
|
4
4
|
require "find"
|
5
5
|
require "tmpdir" # stdlib
|
6
6
|
require "ostruct"
|
7
|
-
require "backports/
|
7
|
+
require "backports/latest"
|
8
8
|
require "socket" # stdlib, for Socket.gethostname
|
9
9
|
require "shellwords" # stdlib, for Shellwords.escape
|
10
10
|
require "erb" # stdlib, for template processing
|
@@ -316,7 +316,7 @@ class FPM::Package
|
|
316
316
|
# the path before returning.
|
317
317
|
#
|
318
318
|
# Wrapping Find.find in an Enumerator is required for sane operation in ruby 1.8.7,
|
319
|
-
# but requires the 'backports' gem (which is used in other places in fpm)
|
319
|
+
# but requires the 'backports/latest' gem (which is used in other places in fpm)
|
320
320
|
return Enumerator.new { |y| Find.find(staging_path) { |path| y << path } } \
|
321
321
|
.select { |path| path != staging_path } \
|
322
322
|
.select { |path| is_leaf.call(path) } \
|
data/lib/fpm/package/apk.rb
CHANGED
data/lib/fpm/package/deb.rb
CHANGED
@@ -3,9 +3,10 @@ require "fpm/namespace"
|
|
3
3
|
require "fpm/package"
|
4
4
|
require "fpm/errors"
|
5
5
|
require "fpm/util"
|
6
|
-
require "backports"
|
6
|
+
require "backports/latest"
|
7
7
|
require "fileutils"
|
8
8
|
require "digest"
|
9
|
+
require "zlib"
|
9
10
|
|
10
11
|
# Support for debian packages (.deb files)
|
11
12
|
#
|
@@ -181,6 +182,10 @@ class FPM::Package::Deb < FPM::Package
|
|
181
182
|
next File.expand_path(file)
|
182
183
|
end
|
183
184
|
|
185
|
+
option "--systemd-enable", :flag , "Enable service on install or upgrade", :default => false
|
186
|
+
|
187
|
+
option "--systemd-auto-start", :flag , "Start service after install or upgrade", :default => false
|
188
|
+
|
184
189
|
option "--systemd-restart-after-upgrade", :flag , "Restart service after upgrade", :default => true
|
185
190
|
|
186
191
|
option "--after-purge", "FILE",
|
@@ -189,6 +194,11 @@ class FPM::Package::Deb < FPM::Package
|
|
189
194
|
File.expand_path(val) # Get the full path to the script
|
190
195
|
end # --after-purge
|
191
196
|
|
197
|
+
option "--maintainerscripts-force-errorchecks", :flag ,
|
198
|
+
"Activate errexit shell option according to lintian. " \
|
199
|
+
"https://lintian.debian.org/tags/maintainer-script-ignores-errors.html",
|
200
|
+
:default => false
|
201
|
+
|
192
202
|
def initialize(*args)
|
193
203
|
super(*args)
|
194
204
|
attributes[:deb_priority] = "extra"
|
@@ -453,6 +463,7 @@ class FPM::Package::Deb < FPM::Package
|
|
453
463
|
raise "#{name}: tar is insufficient to support source_date_epoch."
|
454
464
|
end
|
455
465
|
|
466
|
+
attributes[:deb_systemd] = []
|
456
467
|
attributes.fetch(:deb_systemd_list, []).each do |systemd|
|
457
468
|
name = File.basename(systemd, ".service")
|
458
469
|
dest_systemd = staging_path("lib/systemd/system/#{name}.service")
|
@@ -460,19 +471,19 @@ class FPM::Package::Deb < FPM::Package
|
|
460
471
|
FileUtils.cp(systemd, dest_systemd)
|
461
472
|
File.chmod(0644, dest_systemd)
|
462
473
|
|
463
|
-
#
|
464
|
-
attributes[:deb_systemd]
|
474
|
+
# add systemd service name to attribute
|
475
|
+
attributes[:deb_systemd] << name
|
465
476
|
end
|
466
477
|
|
467
|
-
if script?(:before_upgrade) or script?(:after_upgrade) or attributes[:deb_systemd]
|
478
|
+
if script?(:before_upgrade) or script?(:after_upgrade) or attributes[:deb_systemd].any?
|
468
479
|
puts "Adding action files"
|
469
480
|
if script?(:before_install) or script?(:before_upgrade)
|
470
481
|
scripts[:before_install] = template("deb/preinst_upgrade.sh.erb").result(binding)
|
471
482
|
end
|
472
|
-
if script?(:before_remove) or attributes[:deb_systemd]
|
483
|
+
if script?(:before_remove) or not attributes[:deb_systemd].empty?
|
473
484
|
scripts[:before_remove] = template("deb/prerm_upgrade.sh.erb").result(binding)
|
474
485
|
end
|
475
|
-
if script?(:after_install) or script?(:after_upgrade) or attributes[:deb_systemd]
|
486
|
+
if script?(:after_install) or script?(:after_upgrade) or attributes[:deb_systemd].any?
|
476
487
|
scripts[:after_install] = template("deb/postinst_upgrade.sh.erb").result(binding)
|
477
488
|
end
|
478
489
|
if script?(:after_remove)
|
@@ -710,8 +721,13 @@ class FPM::Package::Deb < FPM::Package
|
|
710
721
|
name, version = dep.gsub(/[()~>]/, "").split(/ +/)[0..1]
|
711
722
|
nextversion = version.split(".").collect { |v| v.to_i }
|
712
723
|
l = nextversion.length
|
713
|
-
|
714
|
-
|
724
|
+
if l > 1
|
725
|
+
nextversion[l-2] += 1
|
726
|
+
nextversion[l-1] = 0
|
727
|
+
else
|
728
|
+
# Single component versions ~> 1
|
729
|
+
nextversion[l-1] += 1
|
730
|
+
end
|
715
731
|
nextversion = nextversion.join(".")
|
716
732
|
return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"]
|
717
733
|
elsif (m = dep.match(/(\S+)\s+\(!= (.+)\)/))
|
@@ -780,16 +796,16 @@ class FPM::Package::Deb < FPM::Package
|
|
780
796
|
# Tar up the staging_path into control.tar.{compression type}
|
781
797
|
case self.attributes[:deb_compression]
|
782
798
|
when "gz", nil
|
783
|
-
controltar =
|
799
|
+
controltar = "control.tar.gz"
|
784
800
|
compression = "-z"
|
785
801
|
when "bzip2"
|
786
|
-
controltar =
|
802
|
+
controltar = "control.tar.bz2"
|
787
803
|
compression = "-j"
|
788
804
|
when "xz"
|
789
|
-
controltar =
|
805
|
+
controltar = "control.tar.xz"
|
790
806
|
compression = "-J"
|
791
807
|
when "none"
|
792
|
-
controltar =
|
808
|
+
controltar = "control.tar"
|
793
809
|
compression = ""
|
794
810
|
else
|
795
811
|
raise FPM::InvalidPackageConfiguration,
|
@@ -797,7 +813,7 @@ class FPM::Package::Deb < FPM::Package
|
|
797
813
|
end
|
798
814
|
|
799
815
|
# Make the control.tar.gz
|
800
|
-
build_path(
|
816
|
+
build_path(controltar).tap do |controltar|
|
801
817
|
logger.info("Creating", :path => controltar, :from => control_path)
|
802
818
|
|
803
819
|
args = [ tar_cmd, "-C", control_path, compression, "-cf", controltar,
|
data/lib/fpm/package/dir.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "fpm/package"
|
2
2
|
require "fpm/util"
|
3
|
-
require "backports"
|
3
|
+
require "backports/latest"
|
4
4
|
require "fileutils"
|
5
5
|
require "find"
|
6
6
|
require "socket"
|
@@ -83,8 +83,8 @@ class FPM::Package::Dir < FPM::Package
|
|
83
83
|
# can include license data from themselves (rpms, gems, etc),
|
84
84
|
# but to make sure a simple dir -> rpm works without having
|
85
85
|
# to specify a license.
|
86
|
-
self.license
|
87
|
-
self.vendor
|
86
|
+
self.license ||= "unknown"
|
87
|
+
self.vendor ||= [ENV["USER"], Socket.gethostname].join("@")
|
88
88
|
ensure
|
89
89
|
# Clean up any logger context we added.
|
90
90
|
logger.remove("method")
|
data/lib/fpm/package/empty.rb
CHANGED
data/lib/fpm/package/freebsd.rb
CHANGED
data/lib/fpm/package/gem.rb
CHANGED
@@ -4,6 +4,7 @@ require "rubygems"
|
|
4
4
|
require "fileutils"
|
5
5
|
require "fpm/util"
|
6
6
|
require "yaml"
|
7
|
+
require "git"
|
7
8
|
|
8
9
|
# A rubygems package.
|
9
10
|
#
|
@@ -53,6 +54,15 @@ class FPM::Package::Gem < FPM::Package
|
|
53
54
|
"The directory where fpm installs the gem temporarily before conversion. " \
|
54
55
|
"Normally a random subdirectory of workdir."
|
55
56
|
|
57
|
+
option "--git-repo", "GIT_REPO",
|
58
|
+
"Use this git repo address as the source of the gem instead of " \
|
59
|
+
"rubygems.org.", :default => nil
|
60
|
+
|
61
|
+
option "--git-branch", "GIT_BRANCH",
|
62
|
+
"When using a git repo as the source of the gem instead of " \
|
63
|
+
"rubygems.org, use this git branch.",
|
64
|
+
:default => nil
|
65
|
+
|
56
66
|
# Override parent method
|
57
67
|
def staging_path(path=nil)
|
58
68
|
@gem_staging_path ||= attributes[:gem_stagingdir] || Stud::Temporary.directory("package-#{type}-staging")
|
@@ -91,21 +101,33 @@ class FPM::Package::Gem < FPM::Package
|
|
91
101
|
|
92
102
|
logger.info("Trying to download", :gem => gem_name, :version => gem_version)
|
93
103
|
|
94
|
-
gem_fetch = [ "#{attributes[:gem_gem]}", "fetch", gem_name]
|
95
|
-
|
96
|
-
gem_fetch += ["--prerelease"] if attributes[:gem_prerelease?]
|
97
|
-
gem_fetch += ["--version", gem_version] if gem_version
|
98
|
-
|
99
104
|
download_dir = build_path(gem_name)
|
100
105
|
FileUtils.mkdir(download_dir) unless File.directory?(download_dir)
|
101
106
|
|
102
|
-
|
103
|
-
logger.debug("
|
104
|
-
|
107
|
+
if attributes[:gem_git_repo]
|
108
|
+
logger.debug("Git cloning in directory #{download_dir}")
|
109
|
+
g = Git.clone(attributes[:gem_git_repo],gem_name,:path => download_dir)
|
110
|
+
if attributes[:gem_git_branch]
|
111
|
+
g.branch(attributes[:gem_git_branch]).checkout
|
112
|
+
g.pull('origin',attributes[:gem_git_branch])
|
113
|
+
end
|
114
|
+
gem_build = [ "#{attributes[:gem_gem]}", "build", "#{g.dir.to_s}/#{gem_name}.gemspec"]
|
115
|
+
::Dir.chdir(g.dir.to_s) do |dir|
|
116
|
+
logger.debug("Building in directory #{dir}")
|
117
|
+
safesystem(*gem_build)
|
118
|
+
end
|
119
|
+
gem_files = ::Dir.glob(File.join(g.dir.to_s, "*.gem"))
|
120
|
+
else
|
121
|
+
gem_fetch = [ "#{attributes[:gem_gem]}", "fetch", gem_name]
|
122
|
+
gem_fetch += ["--prerelease"] if attributes[:gem_prerelease?]
|
123
|
+
gem_fetch += ["--version", gem_version] if gem_version
|
124
|
+
::Dir.chdir(download_dir) do |dir|
|
125
|
+
logger.debug("Downloading in directory #{dir}")
|
126
|
+
safesystem(*gem_fetch)
|
127
|
+
end
|
128
|
+
gem_files = ::Dir.glob(File.join(download_dir, "*.gem"))
|
105
129
|
end
|
106
130
|
|
107
|
-
gem_files = ::Dir.glob(File.join(download_dir, "*.gem"))
|
108
|
-
|
109
131
|
if gem_files.length != 1
|
110
132
|
raise "Unexpected number of gem files in #{download_dir}, #{gem_files.length} should be 1"
|
111
133
|
end
|
@@ -198,8 +220,13 @@ class FPM::Package::Gem < FPM::Package
|
|
198
220
|
|
199
221
|
::FileUtils.mkdir_p(installdir)
|
200
222
|
# TODO(sissel): Allow setting gem tool path
|
201
|
-
args = [attributes[:gem_gem], "install", "--quiet", "--no-
|
202
|
-
|
223
|
+
args = [attributes[:gem_gem], "install", "--quiet", "--no-user-install", "--install-dir", installdir]
|
224
|
+
if ::Gem::VERSION =~ /^[012]\./
|
225
|
+
args += [ "--no-ri", "--no-rdoc" ]
|
226
|
+
else
|
227
|
+
# Rubygems 3.0.0 changed --no-ri to --no-document
|
228
|
+
args += [ "--no-document" ]
|
229
|
+
end
|
203
230
|
|
204
231
|
if !attributes[:gem_embed_dependencies?]
|
205
232
|
args += ["--ignore-dependencies"]
|
data/lib/fpm/package/pacman.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require "fpm/package"
|
3
3
|
require "fpm/util"
|
4
|
-
require "backports"
|
4
|
+
require "backports/latest"
|
5
5
|
require "fileutils"
|
6
6
|
require "find"
|
7
7
|
|
@@ -18,10 +18,10 @@ class FPM::Package::Pacman < FPM::Package
|
|
18
18
|
option "--group", "GROUP", "The group owner of files in this package", :default => 'root'
|
19
19
|
|
20
20
|
# The list of supported compression types. Default is xz (LZMA2)
|
21
|
-
COMPRESSION_TYPES = [ "gz", "bzip2", "xz", "none" ]
|
21
|
+
COMPRESSION_TYPES = [ "gz", "bzip2", "xz", "zstd", "none" ]
|
22
22
|
|
23
23
|
option "--compression", "COMPRESSION", "The compression type to use, must " \
|
24
|
-
"be one of #{COMPRESSION_TYPES.join(", ")}.", :default => "
|
24
|
+
"be one of #{COMPRESSION_TYPES.join(", ")}.", :default => "zstd" do |value|
|
25
25
|
if !COMPRESSION_TYPES.include?(value)
|
26
26
|
raise ArgumentError, "Pacman compression value of '#{value}' is invalid. " \
|
27
27
|
"Must be one of #{COMPRESSION_TYPES.join(", ")}"
|
@@ -209,31 +209,39 @@ class FPM::Package::Pacman < FPM::Package
|
|
209
209
|
|
210
210
|
def compression_option
|
211
211
|
case self.attributes[:pacman_compression]
|
212
|
-
when nil, "
|
213
|
-
return "--
|
212
|
+
when nil, "zstd"
|
213
|
+
return "--zstd"
|
214
214
|
when "none"
|
215
215
|
return ""
|
216
216
|
when "gz"
|
217
217
|
return "-z"
|
218
|
+
when "xz"
|
219
|
+
return "--xz"
|
218
220
|
when "bzip2"
|
219
221
|
return "-j"
|
222
|
+
when "zstd"
|
223
|
+
return "--zstd"
|
220
224
|
else
|
221
|
-
return "--
|
225
|
+
return "--zstd"
|
222
226
|
end
|
223
227
|
end
|
224
228
|
|
225
229
|
def compression_ending
|
226
230
|
case self.attributes[:pacman_compression]
|
227
|
-
when nil, "
|
228
|
-
return ".
|
231
|
+
when nil, "zstd"
|
232
|
+
return ".zst"
|
229
233
|
when "none"
|
230
234
|
return ""
|
231
235
|
when "gz"
|
232
236
|
return ".gz"
|
237
|
+
when "zx"
|
238
|
+
return ".xz"
|
233
239
|
when "bzip2"
|
234
240
|
return ".bz2"
|
241
|
+
when "zstd"
|
242
|
+
return ".zst"
|
235
243
|
else
|
236
|
-
return ".
|
244
|
+
return ".zst"
|
237
245
|
end
|
238
246
|
end
|
239
247
|
|
@@ -245,7 +253,11 @@ class FPM::Package::Pacman < FPM::Package
|
|
245
253
|
Find.find(staging_path) do |path|
|
246
254
|
src = path.gsub(/^#{staging_path}/, '')
|
247
255
|
dst = build_path(src)
|
248
|
-
|
256
|
+
begin
|
257
|
+
copy_entry(path, dst, preserve=true, remove_destination=true)
|
258
|
+
rescue
|
259
|
+
copy_entry(path, dst, preserve=false, remove_destination=true)
|
260
|
+
end
|
249
261
|
copy_metadata(path, dst)
|
250
262
|
end
|
251
263
|
|
data/lib/fpm/package/python.rb
CHANGED
@@ -29,6 +29,9 @@ class FPM::Package::Python < FPM::Package
|
|
29
29
|
option "--pypi", "PYPI_URL",
|
30
30
|
"PyPi Server uri for retrieving packages.",
|
31
31
|
:default => "https://pypi.python.org/simple"
|
32
|
+
option "--trusted-host", "PYPI_TRUSTED",
|
33
|
+
"Mark this host or host:port pair as trusted for pip",
|
34
|
+
:default => nil
|
32
35
|
option "--package-prefix", "NAMEPREFIX",
|
33
36
|
"(DEPRECATED, use --package-name-prefix) Name to prefix the package " \
|
34
37
|
"name with." do |value|
|
@@ -136,7 +139,31 @@ class FPM::Package::Python < FPM::Package
|
|
136
139
|
else
|
137
140
|
logger.debug("using pip", :pip => attributes[:python_pip])
|
138
141
|
# TODO: Support older versions of pip
|
139
|
-
|
142
|
+
|
143
|
+
setup_cmd = [
|
144
|
+
attributes[:python_pip],
|
145
|
+
"download",
|
146
|
+
"--no-clean",
|
147
|
+
"--no-deps",
|
148
|
+
"--no-binary",
|
149
|
+
":all:",
|
150
|
+
"-i", attributes[:python_pypi],
|
151
|
+
]
|
152
|
+
|
153
|
+
if attributes[:python_trusted_host]
|
154
|
+
setup_cmd += [
|
155
|
+
"--trusted-host",
|
156
|
+
attributes[:python_trusted_host],
|
157
|
+
]
|
158
|
+
end
|
159
|
+
|
160
|
+
setup_cmd += [
|
161
|
+
"--build",
|
162
|
+
target,
|
163
|
+
want_pkg,
|
164
|
+
]
|
165
|
+
|
166
|
+
safesystem(*setup_cmd)
|
140
167
|
end
|
141
168
|
|
142
169
|
# easy_install will put stuff in @tmpdir/packagename/, so find that:
|
@@ -183,7 +210,7 @@ class FPM::Package::Python < FPM::Package
|
|
183
210
|
|
184
211
|
output = ::Dir.chdir(setup_dir) do
|
185
212
|
tmp = build_path("metadata.json")
|
186
|
-
setup_cmd = "env PYTHONPATH=#{pylib} #{attributes[:python_bin]} " \
|
213
|
+
setup_cmd = "env PYTHONPATH=#{pylib}:$PYTHONPATH #{attributes[:python_bin]} " \
|
187
214
|
"setup.py --command-packages=pyfpm get_metadata --output=#{tmp}"
|
188
215
|
|
189
216
|
if attributes[:python_obey_requirements_txt?]
|
data/lib/fpm/package/rpm.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "fpm/package"
|
2
|
-
require "backports"
|
2
|
+
require "backports/latest"
|
3
3
|
require "fileutils"
|
4
4
|
require "find"
|
5
5
|
require "arr-pm/file" # gem 'arr-pm'
|
@@ -24,10 +24,10 @@ class FPM::Package::RPM < FPM::Package
|
|
24
24
|
|
25
25
|
COMPRESSION_MAP = {
|
26
26
|
"none" => "w0.gzdio",
|
27
|
-
"xz" => "
|
28
|
-
"xzmt" => "
|
29
|
-
"gzip" => "
|
30
|
-
"bzip2" => "
|
27
|
+
"xz" => ".xzdio",
|
28
|
+
"xzmt" => "T.xzdio",
|
29
|
+
"gzip" => ".gzdio",
|
30
|
+
"bzip2" => ".bzdio"
|
31
31
|
} unless defined?(COMPRESSION_MAP)
|
32
32
|
|
33
33
|
option "--use-file-permissions", :flag,
|
@@ -68,6 +68,15 @@ class FPM::Package::RPM < FPM::Package
|
|
68
68
|
value.downcase
|
69
69
|
end
|
70
70
|
|
71
|
+
option "--compression-level", "[0-9]", "Select a compression level. 0 is store-only. 9 is max compression.",
|
72
|
+
:default => "9" do |value|
|
73
|
+
valint = value.to_i
|
74
|
+
unless value =~ /^\d$/ && valint >= 0 && valint <= 9
|
75
|
+
raise "Invalid compression level '#{value}'. Valid values are integers between 0 and 9 inclusive."
|
76
|
+
end
|
77
|
+
valint
|
78
|
+
end
|
79
|
+
|
71
80
|
option "--compression", COMPRESSION_MAP.keys.join("|"),
|
72
81
|
"Select a compression method. gzip works on the most platforms.",
|
73
82
|
:default => "gzip" do |value|
|
@@ -142,6 +151,10 @@ class FPM::Package::RPM < FPM::Package
|
|
142
151
|
"names in rpm requires instead of the redhat style " \
|
143
152
|
"rubygem(foo).", :default => false
|
144
153
|
|
154
|
+
option "--macro-expansion", :flag,
|
155
|
+
"install-time macro expansion in %pre %post %preun %postun scripts " \
|
156
|
+
"(see: https://rpm.org/user_doc/scriptlet_expansion.html)", :default => false
|
157
|
+
|
145
158
|
option "--verifyscript", "FILE",
|
146
159
|
"a script to be run on verification" do |val|
|
147
160
|
File.expand_path(val) # Get the full path to the script
|
@@ -598,7 +611,12 @@ class FPM::Package::RPM < FPM::Package
|
|
598
611
|
end # def to_s
|
599
612
|
|
600
613
|
def payload_compression
|
601
|
-
|
614
|
+
if attributes[:rpm_compression] == 'none'
|
615
|
+
# when 'none' ignore any compression level and return w0.gzdio
|
616
|
+
return COMPRESSION_MAP[attributes[:rpm_compression]]
|
617
|
+
else
|
618
|
+
return "w#{attributes[:rpm_compression_level]}" + COMPRESSION_MAP[attributes[:rpm_compression]]
|
619
|
+
end
|
602
620
|
end # def payload_compression
|
603
621
|
|
604
622
|
def digest_algorithm
|
data/lib/fpm/package/sh.rb
CHANGED
data/lib/fpm/package/tar.rb
CHANGED
data/lib/fpm/package/zip.rb
CHANGED
data/lib/fpm/util/tar_writer.rb
CHANGED
@@ -29,7 +29,7 @@ end # module FPM
|
|
29
29
|
|
30
30
|
module FPM; module Util; end; end
|
31
31
|
|
32
|
-
# Like the ::Gem::Package::TarWriter but contains some backports and bug fixes
|
32
|
+
# Like the ::Gem::Package::TarWriter but contains some backports/latest and bug fixes
|
33
33
|
class FPM::Util::TarWriter < ::Gem::Package::TarWriter
|
34
34
|
if FPM::Issues::TarWriter.has_issues_with_split_name?
|
35
35
|
def split_name(name)
|
data/lib/fpm/version.rb
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
#!/bin/sh
|
2
|
+
|
3
|
+
<% if attributes[:deb_maintainerscripts_force_errorchecks?] -%>
|
4
|
+
set -e
|
5
|
+
<% end -%>
|
6
|
+
|
2
7
|
after_upgrade() {
|
3
8
|
<%# Making sure that at least one command is in the function -%>
|
4
9
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -8,18 +13,26 @@ after_upgrade() {
|
|
8
13
|
<%= script(:after_upgrade) %>
|
9
14
|
<% end -%>
|
10
15
|
|
11
|
-
|
16
|
+
<%# if any systemd services specified, loop through and start them -%>
|
17
|
+
<% if attributes[:deb_systemd].any? -%>
|
12
18
|
systemctl --system daemon-reload >/dev/null || true
|
13
|
-
|
19
|
+
debsystemctl=$(command -v deb-systemd-invoke || echo systemctl)
|
20
|
+
<% attributes[:deb_systemd].each do |service| -%>
|
21
|
+
if ! systemctl is-enabled <%= service %> >/dev/null
|
14
22
|
then
|
15
|
-
|
16
|
-
systemctl
|
23
|
+
<% if attributes[:deb_systemd_enable?]-%>
|
24
|
+
systemctl enable <%= service %> >/dev/null || true
|
25
|
+
<% end -%>
|
26
|
+
<% if attributes[:deb_systemd_auto_start?]-%>
|
27
|
+
$debsystemctl start <%= service %> >/dev/null || true
|
28
|
+
<% end -%>
|
17
29
|
<% if attributes[:deb_systemd_restart_after_upgrade?] -%>
|
18
30
|
else
|
19
|
-
|
31
|
+
$debsystemctl restart <%= service %> >/dev/null || true
|
20
32
|
<% end -%>
|
21
33
|
fi
|
22
34
|
<% end -%>
|
35
|
+
<% end -%>
|
23
36
|
}
|
24
37
|
|
25
38
|
after_install() {
|
@@ -31,10 +44,18 @@ after_install() {
|
|
31
44
|
<%= script(:after_install) %>
|
32
45
|
<% end -%>
|
33
46
|
|
34
|
-
|
47
|
+
<%# if any systemd services specified, loop through and start them -%>
|
48
|
+
<% if attributes[:deb_systemd].any? -%>
|
35
49
|
systemctl --system daemon-reload >/dev/null || true
|
36
|
-
|
37
|
-
|
50
|
+
debsystemctl=$(command -v deb-systemd-invoke || echo systemctl)
|
51
|
+
<% attributes[:deb_systemd].each do |service| -%>
|
52
|
+
<% if attributes[:deb_systemd_enable?]-%>
|
53
|
+
systemctl enable <%= service %> >/dev/null || true
|
54
|
+
<% end -%>
|
55
|
+
<% if attributes[:deb_systemd_auto_start?]-%>
|
56
|
+
$debsystemctl start <%= service %> >/dev/null || true
|
57
|
+
<% end -%>
|
58
|
+
<% end -%>
|
38
59
|
<% end -%>
|
39
60
|
}
|
40
61
|
|
@@ -1,4 +1,9 @@
|
|
1
1
|
#!/bin/sh
|
2
|
+
|
3
|
+
<% if attributes[:deb_maintainerscripts_force_errorchecks?] -%>
|
4
|
+
set -e
|
5
|
+
<% end -%>
|
6
|
+
|
2
7
|
before_remove() {
|
3
8
|
<%# Making sure that at least one command is in the function -%>
|
4
9
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -8,10 +13,13 @@ before_remove() {
|
|
8
13
|
<%= script(:before_remove) %>
|
9
14
|
<% end -%>
|
10
15
|
|
11
|
-
<%#
|
12
|
-
<% if attributes[:deb_systemd] -%>
|
13
|
-
|
14
|
-
|
16
|
+
<%# Stop and remove any systemd services that were installed-%>
|
17
|
+
<% if attributes[:deb_systemd].any? -%>
|
18
|
+
debsystemctl=$(command -v deb-systemd-invoke || echo systemctl)
|
19
|
+
<% attributes[:deb_systemd].each do |service| -%>
|
20
|
+
$debsystemctl stop <%= service %> >/dev/null || true
|
21
|
+
systemctl disable <%= service %> >/dev/null || true
|
22
|
+
<% end -%>
|
15
23
|
systemctl --system daemon-reload >/dev/null || true
|
16
24
|
<% end -%>
|
17
25
|
}
|
data/templates/rpm.erb
CHANGED
@@ -126,7 +126,7 @@ Obsoletes: <%= repl %>
|
|
126
126
|
-%>
|
127
127
|
<% if script?(:before_upgrade) or script?(:after_upgrade) -%>
|
128
128
|
<% if script?(:before_upgrade) or script?(:before_install) -%>
|
129
|
-
%pre
|
129
|
+
%pre <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end -%>
|
130
130
|
upgrade() {
|
131
131
|
<%# Making sure that at least one command is in the function -%>
|
132
132
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -156,7 +156,7 @@ then
|
|
156
156
|
fi
|
157
157
|
<% end -%>
|
158
158
|
<% if script?(:after_upgrade) or script?(:after_install) -%>
|
159
|
-
%post
|
159
|
+
%post <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end -%>
|
160
160
|
upgrade() {
|
161
161
|
<%# Making sure that at least one command is in the function -%>
|
162
162
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -186,7 +186,7 @@ then
|
|
186
186
|
fi
|
187
187
|
<% end -%>
|
188
188
|
<% if script?(:before_remove) -%>
|
189
|
-
%preun
|
189
|
+
%preun <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end -%>
|
190
190
|
if [ "${1}" -eq 0 ]
|
191
191
|
then
|
192
192
|
<%# Making sure that at least one command is in the function -%>
|
@@ -197,7 +197,7 @@ then
|
|
197
197
|
fi
|
198
198
|
<% end -%>
|
199
199
|
<% if script?(:after_remove) -%>
|
200
|
-
%postun
|
200
|
+
%postun <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end -%>
|
201
201
|
if [ "${1}" -eq 0 ]
|
202
202
|
then
|
203
203
|
<%# Making sure that at least one command is in the function -%>
|
@@ -219,7 +219,7 @@ fi
|
|
219
219
|
-%>
|
220
220
|
<% scriptmap.each do |name, rpmname| -%>
|
221
221
|
<% if script?(name) -%>
|
222
|
-
%<%= rpmname %>
|
222
|
+
%<%= rpmname -%> <%= ' -e' if attributes[:rpm_macro_expansion?] %>
|
223
223
|
<%= script(name) %>
|
224
224
|
<% end -%>
|
225
225
|
<% end -%>
|
data/templates/sh.erb
CHANGED
@@ -268,7 +268,12 @@ function clean_out_old_releases(){
|
|
268
268
|
function print_package_metadata(){
|
269
269
|
local metadata_line=$(grep -a -n -m1 '__METADATA__$' $0 | sed 's/:.*//')
|
270
270
|
local archive_line=$(grep -a -n -m1 '__ARCHIVE__$' $0 | sed 's/:.*//')
|
271
|
-
|
271
|
+
|
272
|
+
# This used to be a sed call but it was taking _forever_ and this method is super fast
|
273
|
+
local start_at=$((metadata_line + 1))
|
274
|
+
local take_num=$((archive_line - start_at))
|
275
|
+
|
276
|
+
head -n${start_at} $0 | tail -n${take_num}
|
272
277
|
}
|
273
278
|
|
274
279
|
function print_usage(){
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan Sissel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 1.7.7
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '3.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: 1.7.7
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '3.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: cabin
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,30 +90,30 @@ dependencies:
|
|
90
90
|
name: childprocess
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- -
|
93
|
+
- - "<"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
95
|
+
version: 1.0.0
|
96
96
|
type: :runtime
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- -
|
100
|
+
- - "<"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
102
|
+
version: 1.0.0
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: ffi
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- - "
|
107
|
+
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
109
|
+
version: 1.12.0
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- - "
|
114
|
+
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
116
|
+
version: 1.12.0
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: rake
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,6 +156,26 @@ dependencies:
|
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: 0.0.29
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: git
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 1.3.0
|
166
|
+
- - "<"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '2.0'
|
169
|
+
type: :runtime
|
170
|
+
prerelease: false
|
171
|
+
version_requirements: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ">="
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: 1.3.0
|
176
|
+
- - "<"
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '2.0'
|
159
179
|
- !ruby/object:Gem::Dependency
|
160
180
|
name: stud
|
161
181
|
requirement: !ruby/object:Gem::Requirement
|
@@ -302,7 +322,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
302
322
|
- !ruby/object:Gem::Version
|
303
323
|
version: '0'
|
304
324
|
requirements: []
|
305
|
-
|
325
|
+
rubyforge_project:
|
326
|
+
rubygems_version: 2.7.6
|
306
327
|
signing_key:
|
307
328
|
specification_version: 4
|
308
329
|
summary: fpm - package building and mangling
|