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 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
  - - ">="