Create a gist now

Instantly share code, notes, and snippets.

#!/usr/bin/ruby
# usage: rpmpatch specfile [--localname name] files...
# example: rpmpatch kernel.spec --localname .mytest ../SOURCES/00*
require "optparse"
localname = nil
opts = OptionParser.new
opts.on("--localname NAME"){|v| localname = v }
opts.parse!(ARGV)
specfile = ARGV[0]
ARGV.shift
spec = File.read(specfile, :encoding => Encoding::UTF_8)
if localname != nil then
bid = "# % define buildid .local\n"
spec.gsub!(bid, "%define buildid #{localname}\n")
end
m = "Patch999999: linux-kernel-test.patch\n"
patches = ARGV
patchnum = 10000
spec.gsub!(m) {
s = m
s += "\n"
for patch in patches
s += "Patch#{patchnum += 1}: #{File.basename(patch)}\n"
end
s
}
apply = "ApplyOptionalPatch linux-kernel-test.patch\n"
spec.gsub!(apply) {
s = apply
s += "\n"
for patch in patches
s += "ApplyPatch #{File.basename(patch)}\n"
end
s
}
File.rename(specfile, specfile + ".old")
File.write(specfile, spec)
% cd rpmbuild/SPECS
% rpmpatch kernel.spec --localname .mytest ../SOURCES/00*.patch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment