Cross package maker. DEB/RPM generation or conversion. Derived from jordansissel/fpm.

⌈⌋ ⎇ branch:  cross package maker


Check-in [de11005c30]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add PEAR support
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: de11005c30c624446a41e3197c706d8afc697f9e
User & Date: andrew@agaffney.org 2012-02-03 20:38:37
Context
2012-02-14
19:42
Merge pull request #152 from agaffney/master Add support for PEAR check-in: 7c62316dd2 user: jls@semicomplete.com tags: trunk
2012-02-03
20:38
Add PEAR support check-in: de11005c30 user: andrew@agaffney.org tags: trunk
2012-02-02
16:08
Merge pull request #146 from zllak/bug/deb Try to make packages built from python sources sanely named. check-in: 238efb084b user: jls@semicomplete.com tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to lib/fpm.rb.

1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
require "fpm/namespace"
require "fpm/builder"

require "fpm/package"
require "fpm/target/deb"
require "fpm/target/rpm"
require "fpm/target/solaris"
require "fpm/target/puppet"

require "fpm/source"
require "fpm/source/dir"
require "fpm/source/gem"

require "fpm/source/python"
require "fpm/source/rpm"
require "fpm/source/tar"












>



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require "fpm/namespace"
require "fpm/builder"

require "fpm/package"
require "fpm/target/deb"
require "fpm/target/rpm"
require "fpm/target/solaris"
require "fpm/target/puppet"

require "fpm/source"
require "fpm/source/dir"
require "fpm/source/gem"
require "fpm/source/pear"
require "fpm/source/python"
require "fpm/source/rpm"
require "fpm/source/tar"

Added lib/fpm/source/pear.rb.



















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
require "fpm/namespace"
require "fpm/source"
require "fileutils"
require "fpm/util"

class FPM::Source::Pear < FPM::Source
  def self.flags(opts, settings)
    opts.on("--package-prefix PREFIX",
            "Prefix for PEAR packages") do |package_prefix|
      settings.source[:package_prefix] = package_prefix
    end
  end # def flags

  def get_metadata
    @pear_package = @paths.first
    pear_cmd = "pear remote-info #{@pear_package}"
    self[:name] = %x{#{pear_cmd} | sed -ne '/^Package\s*/s/^Package\s*//p'}.chomp
    self[:version] = %x{#{pear_cmd} | sed -ne '/^Latest\s*/s/^Latest\s*//p'}.chomp
    self[:summary] = %x{#{pear_cmd} | sed -ne '/^Summary\s*/s/^Summary\s*//p'}.chomp
    if self[:settings][:package_prefix]
      self[:package_prefix] = self[:settings][:package_prefix]
    else
      self[:package_prefix] = "php-pear"
    end
	self[:name] = "#{self[:package_prefix]}-#{self[:name]}"
  end # def get_metadata

  def make_tarball!(tar_path, builddir)
    tmpdir = "#{tar_path}.dir"
    ::Dir.mkdir(tmpdir)
    safesystem("pear install -n -f -P #{tmpdir} #{@pear_package}")
	# Remove the stuff we don't want
	['.depdb', '.depdblock', '.filemap', '.lock'].each { |f| safesystem("find #{tmpdir} -type f -name '#{f}' -exec rm {} \\;") }
	# find exits non-zero even though it works, so we have to work around that
	safesystem("find #{tmpdir} -type d -name '.channel*' -exec rm -rf {} \\; 2>/dev/null; exit 0")
    tar(tar_path, '.', tmpdir)
    @paths = %x{find #{tmpdir} -mindepth 1 -maxdepth 1 -type d | sed -e 's:^#{tmpdir}:.:'}.split("\n")
    safesystem(*["gzip", "-f", tar_path])
  end

end # class FPM::Source::Gem