fpm 1.10.1 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.rst +53 -1
- data/LICENSE +1 -1
- data/lib/fpm.rb +1 -0
- data/lib/fpm/package.rb +2 -2
- data/lib/fpm/package/apk.rb +1 -1
- data/lib/fpm/package/cpan.rb +1 -1
- data/lib/fpm/package/deb.rb +107 -19
- data/lib/fpm/package/dir.rb +3 -3
- data/lib/fpm/package/empty.rb +1 -1
- data/lib/fpm/package/freebsd.rb +15 -20
- 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 +31 -9
- data/lib/fpm/package/sh.rb +1 -1
- data/lib/fpm/package/snap.rb +130 -0
- data/lib/fpm/package/tar.rb +1 -1
- data/lib/fpm/package/virtualenv.rb +1 -2
- data/lib/fpm/package/zip.rb +1 -1
- data/lib/fpm/util.rb +29 -46
- data/lib/fpm/util/tar_writer.rb +1 -1
- data/lib/fpm/version.rb +1 -1
- data/templates/deb.erb +2 -2
- data/templates/deb/deb.changes.erb +2 -3
- data/templates/deb/postinst_upgrade.sh.erb +30 -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 +38 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a51484aca566bb4b8a1362c216c96aeb3fe0400abc44befefe32152624e99148
|
4
|
+
data.tar.gz: 1ae93c91155b91e8decc380fa502ed8e38dd14d74df232bf29ece3c89f34ca4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbca18e4c26ed2d88e9918985288617e8678e5a8d2872170ea5b1a35ac63e740c317513faa5ed9d9c12efef9dc464e09f324e94b2504ceaddf58c02aeecd2ec8
|
7
|
+
data.tar.gz: 0f1865843b14ac86cd4d8fdf0a7b71d1dfd2c5912e9b66dd7e2169a659646afbfc7adc61da55e9ac8414944e717a7b90c7ea5b3d6994301549e5af73b88994b0
|
data/CHANGELOG.rst
CHANGED
@@ -1,6 +1,57 @@
|
|
1
1
|
Release Notes and Change Log
|
2
2
|
============================
|
3
3
|
|
4
|
+
1.13.1 (July 6, 2021)
|
5
|
+
^^^^^^^^^^^^^^^^^^^^^
|
6
|
+
* deb: The `--provides` flag now allows for versions. Previously, fpm would
|
7
|
+
remove the version part of a provides field when generating deb packages.
|
8
|
+
(`#1788`_, `#1803`_; Jordan Sissel, Phil Schwarz, tympanix)
|
9
|
+
* osxpkg: Update documentation to include installing `rpm` tools on OSX
|
10
|
+
(`#1797`_; allen joslin)
|
11
|
+
|
12
|
+
1.13.0 (June 19, 2021)
|
13
|
+
^^^^^^^^^^^^^^^^^^^^^^
|
14
|
+
* Apple M1 users should now work (`#1772`_, `#1785`_, `#1786`_; Jordan Sissel)
|
15
|
+
* Removed `ffi` ruby library as a dependency. This should make it easier to support a wider range of Ruby versions (Ruby 2.2, 3.0, etc) and platforms (like arm64, Apple M1, etc) in the future. (`#1785`_, `#1786`_; Jordan Sissel)
|
16
|
+
* Now uses the correct architecture synonym for ARM 64 systems. Debian uses `arm64` as a synonym for what other systems call `aarch64` (linux kernel, RPM, Arch Linux). (`#1775`_; Steve Kamerman)
|
17
|
+
* Docs: Fix a typo in an example (`#1785`_; Zoe O'Connell)
|
18
|
+
* rpm: File paths can now contain single-quote characters (`#1774`_; Jordan Sissel)
|
19
|
+
* rpm: Use correct SPEC syntax when using --after-upgrade or similar features (`#1761`_; Jo Vandeginste. Robert Fielding)
|
20
|
+
* Ruby 3.0 support: Added `rexml` as a runtime dependency. In Ruby 2.0, `rexml` came by default, but in Ruby 3.0, `rexml` is now a bundled gem and some distributiosn do not include it by default. (`#1794`_; Jordan Sissel)
|
21
|
+
* Fix error "git: not found (Git::GitExecuteError)". Now loads `git` library only when using git features. (`#1753`_, `#1748`_, `#1751`_, `#1766`_; Jordan Sissel, Cameron Nemo, Jason Rogers, Luke Short)
|
22
|
+
* deb: Fix syntax error in `postinst` (`--after-install`) script. (`#1752`_, `#1749`_, `#1764`_; rmanus, Adam Mohammed, Elliot Murphy, kimw, Jordan Sissel)
|
23
|
+
* deb: --deb-compression now uses the same compression and file suffix on the control.tar file (`#1760`_; Philippe Poilbarbe
|
24
|
+
)
|
25
|
+
|
26
|
+
|
27
|
+
1.12.0 (January 19, 2021)
|
28
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^
|
29
|
+
|
30
|
+
* 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)
|
31
|
+
* deb: New flag to add 'set -e' to all scripts. `--deb-maintainerscripts-force-errorchecks` which defaults to off. (`#1697`_; Andreas Ulm)
|
32
|
+
* 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)
|
33
|
+
* deb: Fix error 'uninitialized constant FPM::Package::Deb::Zlib' (`#1739`_, `#1740`_; Federico Lancerin)
|
34
|
+
* python: Prepend to PYTHONPATH instead of replacing it. This should help on platforms that rely heavily on PYTHONPATH, such as NixOSX (`#1711`_, `#1710`_; anarg)
|
35
|
+
* python: Add `--python-trusted-host` flag which passes `--trusted-host` flag to `pip` (`#1737`_; Vladimir Ponarevsky)
|
36
|
+
* Documentation improvements (`#1724`_, `#1738`_, `#1667`_, `#1636`_)
|
37
|
+
* Dockerfile updated to Alpine 3.12 (`#1745`_; Cameron Nemo)
|
38
|
+
* Remove the 'backports' deprecation warning (`#1727`_; Jose Galvez)
|
39
|
+
* sh: Performance improvement when printing package metadata (`#1729`_; James Logsdon, Ed Healy)
|
40
|
+
* rpm: Add support for `xzmt` compression (multithreaded xz compressor) to help when creating very large packages (several gigabytes). (`#1447`_, `#1419`_; amnobc)
|
41
|
+
* 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)
|
42
|
+
* deb: use correct control.tar filename (`#1668`_; Mike Perham)
|
43
|
+
|
44
|
+
1.11.0 (January 30, 2019)
|
45
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^
|
46
|
+
|
47
|
+
* snap: Snap packages can now be created! (`#1490`_; kyrofa)
|
48
|
+
* Fix an installation problem where a dependency (childprocess) fails to install correctly. (#1592; Jordan Sissel)
|
49
|
+
|
50
|
+
1.10.2 (July 3, 2018)
|
51
|
+
^^^^^^^^^^^^^^^^^^^^^
|
52
|
+
|
53
|
+
* cpan: Fix a crash where fpm would crash trying to parse a perl version string (`#1515`_, `#1514`; Jordan Sissel, William N. Braswell, Jr)
|
54
|
+
|
4
55
|
1.10.1 (July 3, 2018)
|
5
56
|
^^^^^^^^^^^^^^^^^^^^^
|
6
57
|
|
@@ -20,6 +71,7 @@ Release Notes and Change Log
|
|
20
71
|
* rpm: fix shell function name `install` conflicting with `install` program. In
|
21
72
|
postinst (after-install), the function is now called `_install` to avoid
|
22
73
|
conflicting with `/usr/bin/install` (`#1434`_; Torsten Schmidt)
|
74
|
+
* rpm: Allow binary "arch dependent" files in noarch rpms (Jordan Sissel)
|
23
75
|
* - deb: --config-files ? (`#1440`_, `#1443`_; NoBodyCam)
|
24
76
|
* FPM source repo now contains a Brewfile for use with Homebrew.
|
25
77
|
* FPM source repo has a Dockerfile for invoking fpm with docker. (`#1484`_, ;Allan Lewis
|
@@ -42,7 +94,7 @@ Release Notes and Change Log
|
|
42
94
|
* Fix bug so fpm can now copy symlinks correctly (`#1348`_; ServiusHack)
|
43
95
|
* apk: Improve performance (`#1358`_; Jan Delgado)
|
44
96
|
* cpan: Fix crash when CPAN query returns a version value that was a number and fpm was expecting a string. (`#1344`_, `#1343`_; liger1978)
|
45
|
-
* cpan: Fix MetaCPAN searches to use v1 of MetaCPAN's API. The v0 API is no longer provided by MetaCPAN. (`#1341`_, `#1339
|
97
|
+
* cpan: Fix MetaCPAN searches to use v1 of MetaCPAN's API. The v0 API is no longer provided by MetaCPAN. (`#1341`_, `#1339`_; Bob Bell)
|
46
98
|
* cpan: Have perl modules implicitly "provide" (`--provides`) capabilities. (`#1340`_; Bob Bell. `#1345`_; liger1978)
|
47
99
|
* cpan: Now transforms perl version values like "5.008001" to "5.8.1" (`#1342`_; Bob Bell)
|
48
100
|
* cpan: Use `>=` ("this version or newer") for package dependencies instead of `=` ("exactly this version"). (`#1338`_; Bob Bell)
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
(This is an MIT-style license)
|
2
2
|
|
3
|
-
Copyright (c) 2011-
|
3
|
+
Copyright (c) 2011-2021 Jordan Sissel and contributors.
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/lib/fpm.rb
CHANGED
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/cpan.rb
CHANGED
@@ -160,7 +160,7 @@ class FPM::Package::CPAN < FPM::Package
|
|
160
160
|
found_dependencies.each do |dep_name, version|
|
161
161
|
# Special case for representing perl core as a version.
|
162
162
|
if dep_name == "perl"
|
163
|
-
m = version.match(/^(\d)\.(\d{3})(\d{3})$/)
|
163
|
+
m = version.to_s.match(/^(\d)\.(\d{3})(\d{3})$/)
|
164
164
|
if m
|
165
165
|
version = m[1] + '.' + m[2].sub(/^0*/, '') + '.' + m[3].sub(/^0*/, '')
|
166
166
|
end
|
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
|
#
|
@@ -22,7 +23,7 @@ class FPM::Package::Deb < FPM::Package
|
|
22
23
|
} unless defined?(SCRIPT_MAP)
|
23
24
|
|
24
25
|
# The list of supported compression types. Default is gz (gzip)
|
25
|
-
COMPRESSION_TYPES = [ "gz", "bzip2", "xz" ]
|
26
|
+
COMPRESSION_TYPES = [ "gz", "bzip2", "xz", "none" ]
|
26
27
|
|
27
28
|
option "--ignore-iteration-in-dependencies", :flag,
|
28
29
|
"For '=' (equal) dependencies, allow iterations on the specified " \
|
@@ -177,10 +178,14 @@ class FPM::Package::Deb < FPM::Package
|
|
177
178
|
end
|
178
179
|
|
179
180
|
option "--systemd", "FILEPATH", "Add FILEPATH as a systemd script",
|
180
|
-
|
181
|
+
:multivalued => true do |file|
|
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"
|
@@ -218,6 +228,9 @@ class FPM::Package::Deb < FPM::Package
|
|
218
228
|
when "x86_64"
|
219
229
|
# Debian calls x86_64 "amd64"
|
220
230
|
@architecture = "amd64"
|
231
|
+
when "aarch64"
|
232
|
+
# Debian calls aarch64 "arm64"
|
233
|
+
@architecture = "arm64"
|
221
234
|
when "noarch"
|
222
235
|
# Debian calls noarch "all"
|
223
236
|
@architecture = "all"
|
@@ -265,10 +278,32 @@ class FPM::Package::Deb < FPM::Package
|
|
265
278
|
end # def input
|
266
279
|
|
267
280
|
def extract_info(package)
|
281
|
+
compression = `#{ar_cmd[0]} t #{package}`.split("\n").grep(/control.tar/).first.split(".").last
|
282
|
+
case compression
|
283
|
+
when "gz"
|
284
|
+
controltar = "control.tar.gz"
|
285
|
+
compression = "-z"
|
286
|
+
when "bzip2","bz2"
|
287
|
+
controltar = "control.tar.bz2"
|
288
|
+
compression = "-j"
|
289
|
+
when "xz"
|
290
|
+
controltar = "control.tar.xz"
|
291
|
+
compression = "-J"
|
292
|
+
when 'tar'
|
293
|
+
controltar = "control.tar"
|
294
|
+
compression = ""
|
295
|
+
when nil
|
296
|
+
raise FPM::InvalidPackageConfiguration, "Missing control.tar in deb source package #{package}"
|
297
|
+
else
|
298
|
+
raise FPM::InvalidPackageConfiguration,
|
299
|
+
"Unknown compression type '#{compression}' for control.tar in deb source package #{package}"
|
300
|
+
end
|
301
|
+
|
268
302
|
build_path("control").tap do |path|
|
269
303
|
FileUtils.mkdir(path) if !File.directory?(path)
|
304
|
+
# unpack the control.tar.{,gz,bz2,xz} from the deb package into staging_path
|
270
305
|
# Unpack the control tarball
|
271
|
-
safesystem(ar_cmd[0] + " p #{package}
|
306
|
+
safesystem(ar_cmd[0] + " p #{package} #{controltar} | tar #{compression} -xf - -C #{path}")
|
272
307
|
|
273
308
|
control = File.read(File.join(path, "control"))
|
274
309
|
|
@@ -376,15 +411,18 @@ class FPM::Package::Deb < FPM::Package
|
|
376
411
|
when "xz"
|
377
412
|
datatar = "data.tar.xz"
|
378
413
|
compression = "-J"
|
414
|
+
when 'tar'
|
415
|
+
datatar = "data.tar"
|
416
|
+
compression = ""
|
417
|
+
when nil
|
418
|
+
raise FPM::InvalidPackageConfiguration, "Missing data.tar in deb source package #{package}"
|
379
419
|
else
|
380
420
|
raise FPM::InvalidPackageConfiguration,
|
381
|
-
"Unknown compression type '#{
|
382
|
-
"in deb source package #{package}"
|
421
|
+
"Unknown compression type '#{compression}' for data.tar in deb source package #{package}"
|
383
422
|
end
|
384
423
|
|
385
424
|
# unpack the data.tar.{gz,bz2,xz} from the deb package into staging_path
|
386
|
-
safesystem(ar_cmd[0] + " p #{package} #{datatar} "
|
387
|
-
"| tar #{compression} -xf - -C #{staging_path}")
|
425
|
+
safesystem(ar_cmd[0] + " p #{package} #{datatar} | tar #{compression} -xf - -C #{staging_path}")
|
388
426
|
end # def extract_files
|
389
427
|
|
390
428
|
def output(output_path)
|
@@ -428,6 +466,7 @@ class FPM::Package::Deb < FPM::Package
|
|
428
466
|
raise "#{name}: tar is insufficient to support source_date_epoch."
|
429
467
|
end
|
430
468
|
|
469
|
+
attributes[:deb_systemd] = []
|
431
470
|
attributes.fetch(:deb_systemd_list, []).each do |systemd|
|
432
471
|
name = File.basename(systemd, ".service")
|
433
472
|
dest_systemd = staging_path("lib/systemd/system/#{name}.service")
|
@@ -435,19 +474,19 @@ class FPM::Package::Deb < FPM::Package
|
|
435
474
|
FileUtils.cp(systemd, dest_systemd)
|
436
475
|
File.chmod(0644, dest_systemd)
|
437
476
|
|
438
|
-
#
|
439
|
-
attributes[:deb_systemd]
|
477
|
+
# add systemd service name to attribute
|
478
|
+
attributes[:deb_systemd] << name
|
440
479
|
end
|
441
480
|
|
442
|
-
if script?(:before_upgrade) or script?(:after_upgrade) or attributes[:deb_systemd]
|
481
|
+
if script?(:before_upgrade) or script?(:after_upgrade) or attributes[:deb_systemd].any?
|
443
482
|
puts "Adding action files"
|
444
483
|
if script?(:before_install) or script?(:before_upgrade)
|
445
484
|
scripts[:before_install] = template("deb/preinst_upgrade.sh.erb").result(binding)
|
446
485
|
end
|
447
|
-
if script?(:before_remove) or attributes[:deb_systemd]
|
486
|
+
if script?(:before_remove) or not attributes[:deb_systemd].empty?
|
448
487
|
scripts[:before_remove] = template("deb/prerm_upgrade.sh.erb").result(binding)
|
449
488
|
end
|
450
|
-
if script?(:after_install) or script?(:after_upgrade) or attributes[:deb_systemd]
|
489
|
+
if script?(:after_install) or script?(:after_upgrade) or attributes[:deb_systemd].any?
|
451
490
|
scripts[:after_install] = template("deb/postinst_upgrade.sh.erb").result(binding)
|
452
491
|
end
|
453
492
|
if script?(:after_remove)
|
@@ -552,13 +591,20 @@ class FPM::Package::Deb < FPM::Package
|
|
552
591
|
case self.attributes[:deb_compression]
|
553
592
|
when "gz", nil
|
554
593
|
datatar = build_path("data.tar.gz")
|
594
|
+
controltar = build_path("control.tar.gz")
|
555
595
|
compression = "-z"
|
556
596
|
when "bzip2"
|
557
597
|
datatar = build_path("data.tar.bz2")
|
598
|
+
controltar = build_path("control.tar.bz2")
|
558
599
|
compression = "-j"
|
559
600
|
when "xz"
|
560
601
|
datatar = build_path("data.tar.xz")
|
602
|
+
controltar = build_path("control.tar.xz")
|
561
603
|
compression = "-J"
|
604
|
+
when "none"
|
605
|
+
datatar = build_path("data.tar")
|
606
|
+
controltar = build_path("control.tar")
|
607
|
+
compression = ""
|
562
608
|
else
|
563
609
|
raise FPM::InvalidPackageConfiguration,
|
564
610
|
"Unknown compression type '#{self.attributes[:deb_compression]}'"
|
@@ -577,7 +623,7 @@ class FPM::Package::Deb < FPM::Package
|
|
577
623
|
# the 'debian-binary' file has to be first
|
578
624
|
File.expand_path(output_path).tap do |output_path|
|
579
625
|
::Dir.chdir(build_path) do
|
580
|
-
safesystem(*ar_cmd, output_path, "debian-binary",
|
626
|
+
safesystem(*ar_cmd, output_path, "debian-binary", controltar, datatar)
|
581
627
|
end
|
582
628
|
end
|
583
629
|
|
@@ -641,6 +687,19 @@ class FPM::Package::Deb < FPM::Package
|
|
641
687
|
File.unlink(changelog_path)
|
642
688
|
end
|
643
689
|
end
|
690
|
+
|
691
|
+
if origin == FPM::Package::Gem
|
692
|
+
# fpm's gem input will have provides as "rubygem-name = version"
|
693
|
+
# and we need to convert this to Debian-style "rubygem-name (= version)"
|
694
|
+
self.provides = self.provides.collect do |provides|
|
695
|
+
m = /^(#{attributes[:gem_package_name_prefix]})-([^\s]+)\s*=\s*(.*)$/.match(provides)
|
696
|
+
if m
|
697
|
+
"#{m[1]}-#{m[2]} (= #{m[3]})"
|
698
|
+
else
|
699
|
+
provides
|
700
|
+
end
|
701
|
+
end
|
702
|
+
end
|
644
703
|
end # def converted_from
|
645
704
|
|
646
705
|
def debianize_op(op)
|
@@ -682,8 +741,13 @@ class FPM::Package::Deb < FPM::Package
|
|
682
741
|
name, version = dep.gsub(/[()~>]/, "").split(/ +/)[0..1]
|
683
742
|
nextversion = version.split(".").collect { |v| v.to_i }
|
684
743
|
l = nextversion.length
|
685
|
-
|
686
|
-
|
744
|
+
if l > 1
|
745
|
+
nextversion[l-2] += 1
|
746
|
+
nextversion[l-1] = 0
|
747
|
+
else
|
748
|
+
# Single component versions ~> 1
|
749
|
+
nextversion[l-1] += 1
|
750
|
+
end
|
687
751
|
nextversion = nextversion.join(".")
|
688
752
|
return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"]
|
689
753
|
elsif (m = dep.match(/(\S+)\s+\(!= (.+)\)/))
|
@@ -724,6 +788,11 @@ class FPM::Package::Deb < FPM::Package
|
|
724
788
|
"debs don't like underscores")
|
725
789
|
provides = provides.gsub("_", "-")
|
726
790
|
end
|
791
|
+
|
792
|
+
if m = provides.match(/^([A-Za-z0-9_-]+)\s*=\s*(\d+.*$)/)
|
793
|
+
logger.warn("Replacing 'provides' entry #{provides} with syntax 'name (= version)'")
|
794
|
+
provides = "#{m[1]} (= #{m[2]})"
|
795
|
+
end
|
727
796
|
return provides.rstrip
|
728
797
|
end
|
729
798
|
|
@@ -749,11 +818,30 @@ class FPM::Package::Deb < FPM::Package
|
|
749
818
|
write_triggers # write trigger config to 'triggers' file
|
750
819
|
write_md5sums # write the md5sums file
|
751
820
|
|
821
|
+
# Tar up the staging_path into control.tar.{compression type}
|
822
|
+
case self.attributes[:deb_compression]
|
823
|
+
when "gz", nil
|
824
|
+
controltar = "control.tar.gz"
|
825
|
+
compression = "-z"
|
826
|
+
when "bzip2"
|
827
|
+
controltar = "control.tar.bz2"
|
828
|
+
compression = "-j"
|
829
|
+
when "xz"
|
830
|
+
controltar = "control.tar.xz"
|
831
|
+
compression = "-J"
|
832
|
+
when "none"
|
833
|
+
controltar = "control.tar"
|
834
|
+
compression = ""
|
835
|
+
else
|
836
|
+
raise FPM::InvalidPackageConfiguration,
|
837
|
+
"Unknown compression type '#{self.attributes[:deb_compression]}'"
|
838
|
+
end
|
839
|
+
|
752
840
|
# Make the control.tar.gz
|
753
|
-
build_path(
|
841
|
+
build_path(controltar).tap do |controltar|
|
754
842
|
logger.info("Creating", :path => controltar, :from => control_path)
|
755
843
|
|
756
|
-
args = [ tar_cmd, "-C", control_path, "-
|
844
|
+
args = [ tar_cmd, "-C", control_path, compression, "-cf", controltar,
|
757
845
|
"--owner=0", "--group=0", "--numeric-owner", "." ]
|
758
846
|
if tar_cmd_supports_sort_names_and_set_mtime? and not attributes[:source_date_epoch].nil?
|
759
847
|
# Force deterministic file order and timestamp
|
@@ -931,7 +1019,7 @@ class FPM::Package::Deb < FPM::Package
|
|
931
1019
|
|
932
1020
|
if attributes[:deb_templates]
|
933
1021
|
FileUtils.cp(attributes[:deb_templates], control_path("templates"))
|
934
|
-
File.chmod(
|
1022
|
+
File.chmod(0644, control_path("templates"))
|
935
1023
|
end
|
936
1024
|
end # def write_debconf
|
937
1025
|
|
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
@@ -1,4 +1,4 @@
|
|
1
|
-
require "backports" # gem backports
|
1
|
+
require "backports/latest" # gem backports/latest
|
2
2
|
require "fpm/package"
|
3
3
|
require "fpm/util"
|
4
4
|
require "digest"
|
@@ -17,10 +17,6 @@ class FPM::Package::FreeBSD < FPM::Package
|
|
17
17
|
:default => "fpm/<name>"
|
18
18
|
|
19
19
|
def output(output_path)
|
20
|
-
# See https://github.com/jordansissel/fpm/issues/1090
|
21
|
-
# require xz later, because this triggers a load of liblzma.so.5 that is
|
22
|
-
# unavailable on older CentOS/RH distros.
|
23
|
-
require "xz"
|
24
20
|
output_check(output_path)
|
25
21
|
|
26
22
|
# Build the packaging metadata files.
|
@@ -80,22 +76,19 @@ class FPM::Package::FreeBSD < FPM::Package
|
|
80
76
|
file.write(pkgdata.to_json + "\n")
|
81
77
|
end
|
82
78
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
FPM::Util::TarWriter.new(xz) do |tar|
|
87
|
-
# The manifests must come first for pkg.
|
88
|
-
add_path(tar, "+COMPACT_MANIFEST",
|
89
|
-
File.join(staging_path, "+COMPACT_MANIFEST"))
|
90
|
-
add_path(tar, "+MANIFEST",
|
91
|
-
File.join(staging_path, "+MANIFEST"))
|
92
|
-
|
93
|
-
checksums.keys.each do |path|
|
94
|
-
add_path(tar, "/" + path, File.join(staging_path, path))
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
79
|
+
file_list = File.new(build_path("file_list"), "w")
|
80
|
+
files.each do |i|
|
81
|
+
file_list.puts(i)
|
98
82
|
end
|
83
|
+
file_list.close
|
84
|
+
|
85
|
+
# Create the .txz package archive from the files in staging_path.
|
86
|
+
# We use --files-from here to keep the tar entries from having `./` as the prefix.
|
87
|
+
# This is done as a best effor to mimic what FreeBSD packages do, having everything at the top-level as
|
88
|
+
# file names, like "+MANIFEST" instead of "./+MANIFEST"
|
89
|
+
# Note: This will include top-level files like "/usr/bin/foo" listed in the tar as "usr/bin/fo" without
|
90
|
+
# a leading slash. I don't know if this has any negative impact on freebsd packages.
|
91
|
+
safesystem("tar", "-Jcf", output_path, "-C", staging_path, "--files-from", build_path("file_list"))
|
99
92
|
end # def output
|
100
93
|
|
101
94
|
# Handle architecture naming conversion:
|
@@ -110,6 +103,8 @@ class FPM::Package::FreeBSD < FPM::Package
|
|
110
103
|
wordsize = case @architecture
|
111
104
|
when nil, 'native'
|
112
105
|
%x{getconf LONG_BIT}.chomp # 'native' is current arch
|
106
|
+
when 'arm64'
|
107
|
+
'64'
|
113
108
|
when 'amd64'
|
114
109
|
'64'
|
115
110
|
when 'i386'
|