fpm 1.9.3 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.rst +17 -0
- data/bin/fpm +0 -1
- data/lib/fpm/package.rb +7 -3
- data/lib/fpm/package/apk.rb +3 -3
- data/lib/fpm/package/deb.rb +46 -2
- data/lib/fpm/package/pyfpm/get_metadata.py +5 -0
- data/lib/fpm/package/python.rb +2 -2
- data/lib/fpm/package/rpm.rb +1 -0
- data/lib/fpm/version.rb +1 -1
- data/templates/deb/deb.changes.erb +31 -0
- data/templates/rpm.erb +7 -4
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 824ec3106d694f1d5255fca89d94623a327b108e
|
4
|
+
data.tar.gz: 5c9b1395dc9f49c29de9550f59df4efefae77ab9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c9df69a9c986277fcba302920d920dd8833fb70b66f06278702d6ffc208bfaff201507db4df29036883f845e2fc0474927ec5f8b4dd3db48410465adf546021
|
7
|
+
data.tar.gz: 4db630cd9769205dd8c21fef6f846467ab98625ab584c5b9f2e30fa6de4101000fa572f269663169c8c70c5479ac6575bcdc19d5778614b66c1a3340fddbf92c
|
data/CHANGELOG.rst
CHANGED
@@ -1,6 +1,23 @@
|
|
1
1
|
Release Notes and Change Log
|
2
2
|
============================
|
3
3
|
|
4
|
+
1.10.0 (May 21, 2018)
|
5
|
+
^^^^^^^^^^^^^^^^^^^^
|
6
|
+
|
7
|
+
* Pin `ruby-xz` dependency to one which allows Ruby versions older than 2.3.0 (`#1494`_; Marat Sharafutdinov)
|
8
|
+
* Documentation improvements: `#1488`_; Arthur Burkart. `#1384`_; Justin Kolberg. `#1452`_; Anatoli Babenia.
|
9
|
+
* python: Improve support for the `~=` dependency comparison. (`#1482`_; Roman Vasilyev)
|
10
|
+
* deb: Add `--deb-generate-changes` flag to have fpm output a `.changes` file (`#1492`_; Spida)
|
11
|
+
* deb: Add `--deb-dist` flag to set the target distribution (similar to `--rpm-dist`). (`#1492`_; Spida)
|
12
|
+
* apk: Make --before-install, --before-upgrade, and --after-upgrade work correctly. (`#1422`_; Charles R. Portwood II)
|
13
|
+
* rpm: add `xzmt` for multithreaded xz compression (Amnon BC)
|
14
|
+
* rpm: fix shell function name `install` conflicting with `install` program. In
|
15
|
+
postinst (after-install), the function is now called `_install` to avoid
|
16
|
+
conflicting with `/usr/bin/install` (`#1434`_; Torsten Schmidt)
|
17
|
+
* - deb: --config-files ? (`#1440`_, `#1443`_; NoBodyCam)
|
18
|
+
* FPM source repo now contains a Brewfile for use with Homebrew.
|
19
|
+
* FPM source repo has a Dockerfile for invoking fpm with docker. (`#1484`_, ;Allan Lewis
|
20
|
+
|
4
21
|
1.9.3 (September 11, 2017)
|
5
22
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
6
23
|
|
data/bin/fpm
CHANGED
data/lib/fpm/package.rb
CHANGED
@@ -3,7 +3,8 @@ require "fpm/util" # local
|
|
3
3
|
require "pathname" # stdlib
|
4
4
|
require "find"
|
5
5
|
require "tmpdir" # stdlib
|
6
|
-
require "
|
6
|
+
require "ostruct"
|
7
|
+
require "backports/2.0.0/stdlib/ostruct"
|
7
8
|
require "socket" # stdlib, for Socket.gethostname
|
8
9
|
require "shellwords" # stdlib, for Shellwords.escape
|
9
10
|
require "erb" # stdlib, for template processing
|
@@ -118,7 +119,10 @@ class FPM::Package
|
|
118
119
|
|
119
120
|
def initialize
|
120
121
|
# Attributes for this specific package
|
121
|
-
@attributes = {
|
122
|
+
@attributes = {
|
123
|
+
# Default work location
|
124
|
+
:workdir => ::Dir.tmpdir
|
125
|
+
}
|
122
126
|
|
123
127
|
# Reference
|
124
128
|
# http://www.debian.org/doc/manuals/maint-guide/first.en.html
|
@@ -507,7 +511,7 @@ class FPM::Package
|
|
507
511
|
end
|
508
512
|
end
|
509
513
|
end
|
510
|
-
|
514
|
+
|
511
515
|
# Get the contents of the script by a given name.
|
512
516
|
#
|
513
517
|
# If template_scripts? is set in attributes (often by the --template-scripts
|
data/lib/fpm/package/apk.rb
CHANGED
@@ -144,9 +144,9 @@ class FPM::Package::APK< FPM::Package
|
|
144
144
|
scripts = {}
|
145
145
|
|
146
146
|
scripts = register_script('post-install', :after_install, scripts)
|
147
|
-
scripts = register_script('
|
148
|
-
scripts = register_script('
|
149
|
-
scripts = register_script('post-
|
147
|
+
scripts = register_script('pre-install', :before_install, scripts)
|
148
|
+
scripts = register_script('pre-upgrade', :before_upgrade, scripts)
|
149
|
+
scripts = register_script('post-upgrade', :after_upgrade, scripts)
|
150
150
|
scripts = register_script('pre-deinstall', :before_remove, scripts)
|
151
151
|
scripts = register_script('post-deinstall', :after_remove, scripts)
|
152
152
|
|
data/lib/fpm/package/deb.rb
CHANGED
@@ -50,6 +50,8 @@ class FPM::Package::Deb < FPM::Package
|
|
50
50
|
value
|
51
51
|
end
|
52
52
|
|
53
|
+
option "--dist", "DIST-TAG", "Set the deb distribution.", :default => "unstable"
|
54
|
+
|
53
55
|
# Take care about the case when we want custom control file but still use fpm ...
|
54
56
|
option "--custom-control", "FILEPATH",
|
55
57
|
"Custom version of the Debian control file." do |control|
|
@@ -88,6 +90,10 @@ class FPM::Package::Deb < FPM::Package
|
|
88
90
|
File.expand_path(file)
|
89
91
|
end
|
90
92
|
|
93
|
+
option "--generate-changes", :flag,
|
94
|
+
"Generate PACKAGENAME.changes file.",
|
95
|
+
:default => false
|
96
|
+
|
91
97
|
option "--upstream-changelog", "FILEPATH", "Add FILEPATH as upstream changelog" do |file|
|
92
98
|
File.expand_path(file)
|
93
99
|
end
|
@@ -574,6 +580,30 @@ class FPM::Package::Deb < FPM::Package
|
|
574
580
|
safesystem(*ar_cmd, output_path, "debian-binary", "control.tar.gz", datatar)
|
575
581
|
end
|
576
582
|
end
|
583
|
+
|
584
|
+
# if a PACKAGENAME.changes file is to be created
|
585
|
+
if self.attributes[:deb_generate_changes?]
|
586
|
+
distribution = self.attributes[:deb_dist]
|
587
|
+
|
588
|
+
# gather information about the files to distribute
|
589
|
+
files = [ output_path ]
|
590
|
+
changes_files = []
|
591
|
+
files.each do |path|
|
592
|
+
changes_files.push({
|
593
|
+
:name => path,
|
594
|
+
:size => File.size?(path),
|
595
|
+
:md5sum => Digest::MD5.file(path).hexdigest,
|
596
|
+
:sha1sum => Digest::SHA1.file(path).hexdigest,
|
597
|
+
:sha256sum => Digest::SHA2.file(path).hexdigest,
|
598
|
+
})
|
599
|
+
end
|
600
|
+
|
601
|
+
# write change infos to .changes file
|
602
|
+
changes_path = File.basename(output_path, '.deb') + '.changes'
|
603
|
+
changes_data = template("deb/deb.changes.erb").result(binding)
|
604
|
+
File.write(changes_path, changes_data)
|
605
|
+
logger.log("Created changes", :path => changes_path)
|
606
|
+
end # if deb_generate_changes
|
577
607
|
end # def output
|
578
608
|
|
579
609
|
def converted_from(origin)
|
@@ -827,11 +857,25 @@ class FPM::Package::Deb < FPM::Package
|
|
827
857
|
|
828
858
|
# scan all conf file paths for files and add them
|
829
859
|
config_files.each do |path|
|
860
|
+
logger.debug("Checking if #{path} exists")
|
861
|
+
cfe = File.exist?("#{path}")
|
862
|
+
logger.debug("Check result #{cfe}")
|
830
863
|
begin
|
831
864
|
add_path(path, allconfigs)
|
832
865
|
rescue Errno::ENOENT
|
833
|
-
|
834
|
-
|
866
|
+
if !cfe
|
867
|
+
raise FPM::InvalidPackageConfiguration,
|
868
|
+
"Error trying to use '#{path}' as a config file in the package. Does it exist?"
|
869
|
+
else
|
870
|
+
dcl = File.join(staging_path, path)
|
871
|
+
if !File.exist?("#{dcl}")
|
872
|
+
logger.debug("Adding config file #{path} to Staging area #{staging_path}")
|
873
|
+
FileUtils.mkdir_p(File.dirname(dcl))
|
874
|
+
FileUtils.cp_r path, dcl
|
875
|
+
else
|
876
|
+
logger.debug("Config file aready exists in staging area.")
|
877
|
+
end
|
878
|
+
end
|
835
879
|
end
|
836
880
|
end
|
837
881
|
|
@@ -47,6 +47,11 @@ class get_metadata(Command):
|
|
47
47
|
|
48
48
|
def process_dep(self, dep):
|
49
49
|
deps = []
|
50
|
+
if hasattr(dep, 'marker') and dep.marker:
|
51
|
+
# PEP0508 marker present
|
52
|
+
if not dep.marker.evaluate():
|
53
|
+
return deps
|
54
|
+
|
50
55
|
if dep.specs:
|
51
56
|
for operator, version in dep.specs:
|
52
57
|
deps.append("%s %s %s" % (dep.project_name,
|
data/lib/fpm/package/python.rb
CHANGED
@@ -229,7 +229,7 @@ class FPM::Package::Python < FPM::Package
|
|
229
229
|
|
230
230
|
if !attributes[:no_auto_depends?] and attributes[:python_dependencies?]
|
231
231
|
metadata["dependencies"].each do |dep|
|
232
|
-
dep_re = /^([^<>!= ]+)\s*(?:([
|
232
|
+
dep_re = /^([^<>!= ]+)\s*(?:([~<>!=]{1,2})\s*(.*))?$/
|
233
233
|
match = dep_re.match(dep)
|
234
234
|
if match.nil?
|
235
235
|
logger.error("Unable to parse dependency", :dependency => dep)
|
@@ -240,7 +240,7 @@ class FPM::Package::Python < FPM::Package
|
|
240
240
|
next if attributes[:python_disable_dependency].include?(name)
|
241
241
|
|
242
242
|
# convert == to =
|
243
|
-
if cmp == "=="
|
243
|
+
if cmp == "==" or cmp == "~="
|
244
244
|
logger.info("Converting == dependency requirement to =", :dependency => dep )
|
245
245
|
cmp = "="
|
246
246
|
end
|
data/lib/fpm/package/rpm.rb
CHANGED
data/lib/fpm/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
Format: 1.8
|
2
|
+
Date: <%= (if attributes[:source_date_epoch].nil? then Time.now() else Time.at(attributes[:source_date_epoch].to_i) end).strftime("%a, %d %b %Y %T %z") %>
|
3
|
+
Source: <%= name %>
|
4
|
+
Binary: <%= name %>
|
5
|
+
Architecture: <%= architecture %>
|
6
|
+
Version: <%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>
|
7
|
+
Distribution: <%= distribution %>
|
8
|
+
Urgency: medium
|
9
|
+
Maintainer: <%= maintainer %>
|
10
|
+
<% lines = (description or "no description given").split("\n") -%>
|
11
|
+
<% firstline, *remainder = lines -%>
|
12
|
+
Description: <%= firstline %>
|
13
|
+
<% if remainder.any? -%>
|
14
|
+
<%= remainder.collect { |l| l =~ /^ *$/ ? " ." : " #{l}" }.join("\n") %>
|
15
|
+
<% end -%>
|
16
|
+
Changes:
|
17
|
+
<%= name %> (<%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>) whatever; urgency=medium
|
18
|
+
.
|
19
|
+
* Package created with FPM.
|
20
|
+
Checksums-Sha1:
|
21
|
+
<% changes_files.each do |file| -%>
|
22
|
+
<%= file[:sha1sum] %> <%= file[:size] %> <%= file[:name] %>
|
23
|
+
<% end -%>
|
24
|
+
Checksums-Sha256:
|
25
|
+
<% changes_files.each do |file| -%>
|
26
|
+
<%= file[:sha256sum] %> <%= file[:size] %> <%= file[:name] %>
|
27
|
+
<% end -%>
|
28
|
+
Files:
|
29
|
+
<% changes_files.each do |file| -%>
|
30
|
+
<%= file[:md5sum] %> <%= file[:size] %> default <%= attributes[:deb_priority] %> <%= file[:name] %>
|
31
|
+
<% end -%>
|
data/templates/rpm.erb
CHANGED
@@ -17,6 +17,9 @@
|
|
17
17
|
# Disable checking for unpackaged files ?
|
18
18
|
#%undefine __check_files
|
19
19
|
|
20
|
+
# Allow building noarch packages that contain binaries
|
21
|
+
%define _binaries_in_noarch_packages_terminate_build 0
|
22
|
+
|
20
23
|
# Use <%= attributes[:rpm_digest] %> file digest method.
|
21
24
|
# The first macro is the one used in RPM v4.9.1.1
|
22
25
|
%define _binary_filedigest_algorithm <%= digest_algorithm %>
|
@@ -133,7 +136,7 @@ upgrade() {
|
|
133
136
|
<%= script(:before_upgrade) %>
|
134
137
|
<% end -%>
|
135
138
|
}
|
136
|
-
|
139
|
+
_install() {
|
137
140
|
<%# Making sure that at least one command is in the function -%>
|
138
141
|
<%# avoids a lot of potential errors, including the case that -%>
|
139
142
|
<%# the script is non-empty, but just whitespace and/or comments -%>
|
@@ -145,7 +148,7 @@ install() {
|
|
145
148
|
if [ "${1}" -eq 1 ]
|
146
149
|
then
|
147
150
|
# "before install" goes here
|
148
|
-
|
151
|
+
_install
|
149
152
|
elif [ "${1}" -gt 1 ]
|
150
153
|
then
|
151
154
|
# "before upgrade" goes here
|
@@ -163,7 +166,7 @@ upgrade() {
|
|
163
166
|
<%= script(:after_upgrade) %>
|
164
167
|
<% end -%>
|
165
168
|
}
|
166
|
-
|
169
|
+
_install() {
|
167
170
|
<%# Making sure that at least one command is in the function -%>
|
168
171
|
<%# avoids a lot of potential errors, including the case that -%>
|
169
172
|
<%# the script is non-empty, but just whitespace and/or comments -%>
|
@@ -175,7 +178,7 @@ install() {
|
|
175
178
|
if [ "${1}" -eq 1 ]
|
176
179
|
then
|
177
180
|
# "after install" goes here
|
178
|
-
|
181
|
+
_install
|
179
182
|
elif [ "${1}" -gt 1 ]
|
180
183
|
then
|
181
184
|
# "after upgrade" goes here
|
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.10.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: 2018-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -132,16 +132,16 @@ dependencies:
|
|
132
132
|
name: ruby-xz
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
|
-
- - "
|
135
|
+
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
137
|
+
version: 0.2.3
|
138
138
|
type: :runtime
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - "
|
142
|
+
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
144
|
+
version: 0.2.3
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: pleaserun
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -260,6 +260,7 @@ files:
|
|
260
260
|
- lib/fpm/version.rb
|
261
261
|
- templates/deb.erb
|
262
262
|
- templates/deb/changelog.erb
|
263
|
+
- templates/deb/deb.changes.erb
|
263
264
|
- templates/deb/ldconfig.sh.erb
|
264
265
|
- templates/deb/postinst_upgrade.sh.erb
|
265
266
|
- templates/deb/postrm_upgrade.sh.erb
|
@@ -293,7 +294,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
293
294
|
requirements:
|
294
295
|
- - ">="
|
295
296
|
- !ruby/object:Gem::Version
|
296
|
-
version:
|
297
|
+
version: 1.9.3
|
297
298
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
299
|
requirements:
|
299
300
|
- - ">="
|