Check-in [e8ccf504fe]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Added support for extra control files for debs (fixes #599) |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
e8ccf504feb4faec4eb3c0fe3c50c5b5 |
| User & Date: | dan@madebymany.co.uk 2014-04-30 15:05:39 |
Context
|
2014-05-01
| ||
| 13:43 | Added support for dpkg triggers (fixes #595) check-in: be4b7a492e user: dan@madebymany.co.uk tags: trunk | |
|
2014-04-30
| ||
| 15:05 | Added support for extra control files for debs (fixes #599) check-in: e8ccf504fe user: dan@madebymany.co.uk tags: trunk | |
| 05:15 | Support being given a directory for the output path (-p flag) This should fix #656 and maybe a few other things. check-in: 3a86742bb9 user: jls@semicomplete.com tags: trunk | |
Changes
Changes to lib/fpm/package/deb.rb.
| ︙ | ︙ | |||
94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
end
option "--suggests", "PACKAGE", "Add PACKAGE to Suggests" do |pkg|
@suggests ||= []
@suggests << pkg
next @suggests
end
option "--field", "'FIELD: VALUE'", "Add custom field to the control file" do |fv|
@custom_fields ||= {}
field, value = fv.split(/: */, 2)
@custom_fields[field] = value
next @custom_fields
end
| > > > > > > | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
end
option "--suggests", "PACKAGE", "Add PACKAGE to Suggests" do |pkg|
@suggests ||= []
@suggests << pkg
next @suggests
end
option "--meta-file", "FILEPATH", "Add FILEPATH to DEBIAN directory" do |file|
@meta_files ||= []
@meta_files << File.expand_path(file)
next @meta_files
end
option "--field", "'FIELD: VALUE'", "Add custom field to the control file" do |fv|
@custom_fields ||= {}
field, value = fv.split(/: */, 2)
@custom_fields[field] = value
next @custom_fields
end
|
| ︙ | ︙ | |||
502 503 504 505 506 507 508 509 510 511 512 513 514 515 |
def write_control_tarball
# Use custom Debian control file when given ...
write_control # write the control file
write_shlibs # write optional shlibs file
write_scripts # write the maintainer scripts
write_conffiles # write the conffiles
write_debconf # write the debconf files
write_md5sums # write the md5sums file
# Make the control.tar.gz
with(build_path("control.tar.gz")) do |controltar|
@logger.info("Creating", :path => controltar, :from => control_path)
args = [ tar_cmd, "-C", control_path, "-zcf", controltar,
| > | 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
def write_control_tarball
# Use custom Debian control file when given ...
write_control # write the control file
write_shlibs # write optional shlibs file
write_scripts # write the maintainer scripts
write_conffiles # write the conffiles
write_debconf # write the debconf files
write_meta_files # write additional meta files
write_md5sums # write the md5sums file
# Make the control.tar.gz
with(build_path("control.tar.gz")) do |controltar|
@logger.info("Creating", :path => controltar, :from => control_path)
args = [ tar_cmd, "-C", control_path, "-zcf", controltar,
|
| ︙ | ︙ | |||
619 620 621 622 623 624 625 626 627 628 629 630 631 632 |
end
if attributes[:deb_templates]
FileUtils.cp(attributes[:deb_templates], control_path("templates"))
File.chmod(0755, control_path("templates"))
end
end # def write_debconf
def write_md5sums
md5_sums = {}
Find.find(staging_path) do |path|
if File.file?(path) && !File.symlink?(path)
md5 = Digest::MD5.file(path).hexdigest
| > > > > > > > > > > | 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 |
end
if attributes[:deb_templates]
FileUtils.cp(attributes[:deb_templates], control_path("templates"))
File.chmod(0755, control_path("templates"))
end
end # def write_debconf
def write_meta_files
files = attributes[:deb_meta_files]
return unless files
files.each do |fn|
dest = control_path(File.basename(fn))
FileUtils.cp(fn, dest)
File.chmod(0644, dest)
end
end
def write_md5sums
md5_sums = {}
Find.find(staging_path) do |path|
if File.file?(path) && !File.symlink?(path)
md5 = Digest::MD5.file(path).hexdigest
|
| ︙ | ︙ |
Added spec/fixtures/deb/meta_test.
> | 1 | asdf |
Changes to spec/fpm/package/deb_spec.rb.
| ︙ | ︙ | |||
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
@original.attributes[:deb_build_depends] << 'something-else > 0.0.0'
@original.attributes[:deb_build_depends] << 'something-else < 1.0.0'
@original.attributes[:deb_priority] = "fizzle"
@original.attributes[:deb_field_given?] = true
@original.attributes[:deb_field] = { "foo" => "bar" }
@original.output(@target)
@input = FPM::Package::Deb.new
@input.input(@target)
end
after :all do
@original.cleanup
@input.cleanup
end # after
context "package attributes" do
it "should have the correct name" do
insist { @input.name } == @original.name
end
it "should have the correct version" do
| > > > > > > > > > > > > > > > > > > > > > > > | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
@original.attributes[:deb_build_depends] << 'something-else > 0.0.0'
@original.attributes[:deb_build_depends] << 'something-else < 1.0.0'
@original.attributes[:deb_priority] = "fizzle"
@original.attributes[:deb_field_given?] = true
@original.attributes[:deb_field] = { "foo" => "bar" }
@original.attributes[:deb_meta_files] = [
File.expand_path("../../../fixtures/deb/meta_test", __FILE__)]
@original.output(@target)
@input = FPM::Package::Deb.new
@input.input(@target)
end
after :all do
@original.cleanup
@input.cleanup
end # after
context "when the deb's control section is extracted" do
before :all do
tmp_control = Tempfile.new("fpm-test-deb-control")
@control_extracted = tmp_control.path
tmp_control.unlink
system("dpkg-deb -e '#{@target}' '#{@control_extracted}'") or \
raise "couldn't extract test deb"
end
it "should have the requested meta file in the control archive" do
File.open(File.join(@control_extracted, 'meta_test')) do |f|
insist { f.read.chomp } == "asdf"
end
end
after :all do
FileUtils.rm_rf @control_extracted
end
end
context "package attributes" do
it "should have the correct name" do
insist { @input.name } == @original.name
end
it "should have the correct version" do
|
| ︙ | ︙ |