diff --git a/lib/fpm/program.rb b/lib/fpm/program.rb index 7a6a3576e0..e08de5e62e 100644 --- a/lib/fpm/program.rb +++ b/lib/fpm/program.rb @@ -99,6 +99,7 @@ def options(args) FPM::Source::Python.flags(FPM::Flags.new(opts, "python", "python source only"), @settings) FPM::Target::Deb.flags(FPM::Flags.new(opts, "deb", "deb target only"), @settings) + FPM::Target::Rpm.flags(FPM::Flags.new(opts, "rpm", "rpm target only"), @settings) # Process fpmrc first fpmrc(opts) diff --git a/lib/fpm/target/rpm.rb b/lib/fpm/target/rpm.rb index 44ad9e6a19..9174ce8725 100644 --- a/lib/fpm/target/rpm.rb +++ b/lib/fpm/target/rpm.rb @@ -2,6 +2,14 @@ require "fpm/util" class FPM::Target::Rpm < FPM::Package + def self.flags(opts, settings) + settings.target[:rpm] = "rpm" + + opts.on("--rpmbuild-define DEFINITION", "Pass a --define argument to rpmbuild.") do |define| + (settings.target[:rpmbuild_define] ||= []) << define + end + end + def architecture case @architecture when nil @@ -73,12 +81,20 @@ def build!(params) # TODO(sissel): Abort if 'rpmbuild' tool not found. %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"] + prefixargs = ["rpmbuild", "-ba", + "--define", "buildroot #{Dir.pwd}/BUILD", + "--define", "_topdir #{Dir.pwd}", + "--define", "_sourcedir #{Dir.pwd}", + "--define", "_rpmdir #{Dir.pwd}/RPMS"] + + spec = ["#{name}.spec"] + + if defines.empty? + args = prefixargs + spec + else + args = prefixargs + defines.collect{ |define| ["--define", define] }.flatten + spec + end + safesystem(*args) Dir["#{Dir.pwd}/RPMS/**/*.rpm"].each do |path|