Skip to content

Commit

Permalink
Merge pull request #136 from nareshov/rpmbuild-define
Browse files Browse the repository at this point in the history
Add new option to pass --define arguments to rpmbuild.
  • Loading branch information
jordansissel committed Dec 20, 2011
2 parents cf0c824 + 886c878 commit 02eda33
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 6 deletions.
1 change: 1 addition & 0 deletions lib/fpm/program.rb
Expand Up @@ -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)
Expand Down
28 changes: 22 additions & 6 deletions lib/fpm/target/rpm.rb
Expand Up @@ -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
Expand Down Expand Up @@ -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|
Expand Down

0 comments on commit 02eda33

Please sign in to comment.