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

⌈⌋ ⎇ branch:  cross package maker


Artifact [a32452f8e8]

Artifact a32452f8e8e8c017bc9f4a84bf1ce55fc1ce978b:

  • File lib/fpm/target/rpm.rb — part of check-in [ce667ca924] at 2011-03-07 18:10:14 on branch trunk — - Kernel.system() doesn't return exit code, use $? (user: root@ip-10-101-57-212.ec2.internal size: 814) [more...]

require "fpm/package"

class FPM::Target::Rpm < FPM::Package
  def specfile(builddir)
    "#{builddir}/#{name}.spec"
  end

  def build!(params)
    raise "No package name given. Can't assemble package" if !@name
    %w(BUILD RPMS SRPMS SOURCES SPECS).each { |d| Dir.mkdir(d) }
    args = ["rpmbuild", "-ba", 
           "--define", "buildroot #{Dir.pwd}/BUILD",
           "--define", "_topdir #{Dir.pwd}",
           "--define", "_sourcedir #{Dir.pwd}",
           "--define", "_rpmdir #{Dir.pwd}/RPMS",
           "#{name}.spec"]
    ret = system(*args)
    if !ret
      raise "rpmbuild failed (exit code: #{$?.exitstatus})"
    end

    Dir["#{Dir.pwd}/RPMS/**/*.rpm"].each do |path|
      # This should only output one rpm, should we verify this?
      system("mv", path, params[:output])
    end

  end
end