fpm 1.9.3 → 1.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5615d2c9718bda8c319b0bcb73a2dd78ad6a27d
4
- data.tar.gz: 4de9f492b1362ff219e8fd7fb66c8e383f234500
3
+ metadata.gz: 824ec3106d694f1d5255fca89d94623a327b108e
4
+ data.tar.gz: 5c9b1395dc9f49c29de9550f59df4efefae77ab9
5
5
  SHA512:
6
- metadata.gz: 94a52dec3c70f4e49389d136a9922b315534bbbbb9728eee1eb97d5a60813d8664ae718eb464c4164df11011ef9634d0a1f878416d4d6bbcd3bfefe653c733c6
7
- data.tar.gz: ca134fd3b9321671862de426002f8b924727fac05f8124a0be831fc69595b2d66a0abdaebb4a279f5c645612ab74cb636680825b17e332a9aea1bcd6c88fb2cf
6
+ metadata.gz: 4c9df69a9c986277fcba302920d920dd8833fb70b66f06278702d6ffc208bfaff201507db4df29036883f845e2fc0474927ec5f8b4dd3db48410465adf546021
7
+ data.tar.gz: 4db630cd9769205dd8c21fef6f846467ab98625ab584c5b9f2e30fa6de4101000fa572f269663169c8c70c5479ac6575bcdc19d5778614b66c1a3340fddbf92c
@@ -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
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "rubygems"
4
3
  $: << File.join(File.dirname(__FILE__), "..", "lib")
5
4
  require "fpm"
6
5
  require "fpm/command"
@@ -3,7 +3,8 @@ require "fpm/util" # local
3
3
  require "pathname" # stdlib
4
4
  require "find"
5
5
  require "tmpdir" # stdlib
6
- require "backports" # gem 'backports'
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
@@ -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('post-install', :before_install, scripts)
148
- scripts = register_script('post-install', :before_upgrade, scripts)
149
- scripts = register_script('post-install', :after_upgrade, scripts)
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
 
@@ -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
- raise FPM::InvalidPackageConfiguration,
834
- "Error trying to use '#{path}' as a config file in the package. Does it exist?"
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,
@@ -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*(?:([<>!=]{1,2})\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
@@ -25,6 +25,7 @@ class FPM::Package::RPM < FPM::Package
25
25
  COMPRESSION_MAP = {
26
26
  "none" => "w0.gzdio",
27
27
  "xz" => "w9.xzdio",
28
+ "xzmt" => "w9T.xzdio",
28
29
  "gzip" => "w9.gzdio",
29
30
  "bzip2" => "w9.bzdio"
30
31
  } unless defined?(COMPRESSION_MAP)
@@ -1,3 +1,3 @@
1
1
  module FPM
2
- VERSION = "1.9.3"
2
+ VERSION = "1.10.0"
3
3
  end
@@ -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 -%>
@@ -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
- install() {
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
- install
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
- install() {
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
- install
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.9.3
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: 2017-08-20 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
297
+ version: 1.9.3
297
298
  required_rubygems_version: !ruby/object:Gem::Requirement
298
299
  requirements:
299
300
  - - ">="