mock build
This commit is contained in:
88
locallibs/ruby-rpm-ffi/lib/rpm.rb
Normal file
88
locallibs/ruby-rpm-ffi/lib/rpm.rb
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
require 'rpm/c'
|
||||
require 'rpm/package'
|
||||
require 'rpm/file'
|
||||
require 'rpm/db'
|
||||
require 'rpm/problem'
|
||||
require 'rpm/transaction'
|
||||
require 'rpm/match_iterator'
|
||||
require 'rpm/version'
|
||||
require 'rpm/dependency'
|
||||
require 'rpm/utils'
|
||||
|
||||
module RPM
|
||||
TAG = RPM::C::Tag
|
||||
LOG = RPM::C::Log
|
||||
SENSE = RPM::C::Sense
|
||||
FILE = RPM::C::FileAttrs
|
||||
FILE_STATE = RPM::C::FileState
|
||||
TRANS_FLAG = RPM::C::TransFlags
|
||||
PROB_FILTER = RPM::C::ProbFilter
|
||||
MIRE = RPM::C::RegexpMode
|
||||
|
||||
# Creates a new transaction and pass it
|
||||
# to the given block
|
||||
#
|
||||
# @param [String] root dir, default '/'
|
||||
#
|
||||
# @example
|
||||
# RPM.transaction do |ts|
|
||||
# ...
|
||||
# end
|
||||
#
|
||||
def self.transaction(root = '/')
|
||||
ts = Transaction.new
|
||||
ts.root_dir = root
|
||||
yield ts
|
||||
ensure
|
||||
ts.ptr.free
|
||||
end
|
||||
|
||||
# @param [String] name Name of the macro
|
||||
# @return [String] value of macro +name+
|
||||
def self.[](name)
|
||||
if C::rpm_version_code >= ((4 << 16) + (14 << 8) + (0 << 0))
|
||||
obuf = ::FFI::MemoryPointer.new(:pointer, 1)
|
||||
sbuf = FFI::MemoryPointer.from_string("%{#{name}}")
|
||||
ret = RPM::C.rpmExpandMacros(nil, sbuf, obuf, 0)
|
||||
raise if ret < 0
|
||||
|
||||
val = obuf.read_pointer
|
||||
val.nil? ? nil : val.read_string
|
||||
else
|
||||
buffer = ::FFI::MemoryPointer.new(:pointer, 1024)
|
||||
buffer.write_string("%{#{name}}")
|
||||
ret = RPM::C.expandMacros(nil, nil, buffer, 1024)
|
||||
raise if ret < 0
|
||||
|
||||
buffer.read_string
|
||||
end
|
||||
end
|
||||
|
||||
# Setup a macro
|
||||
# @param [String] name Name of the macro
|
||||
# @param [String] value Value of the macro or +nil+ to delete it
|
||||
def self.[]=(name, value)
|
||||
if value.nil?
|
||||
if C::rpm_version_code >= ((4 << 16) + (14 << 8) + (0 << 0))
|
||||
RPM::C.rpmPopMacro(nil, name.to_s)
|
||||
else
|
||||
RPM::C.delMacro(nil, name.to_s)
|
||||
end
|
||||
else
|
||||
if C::rpm_version_code >= ((4 << 16) + (14 << 8) + (0 << 0))
|
||||
RPM::C.rpmPushMacro(nil, name.to_s, '', value.to_s, RPM::C::RMIL_DEFAULT)
|
||||
else
|
||||
RPM::C.addMacro(nil, name.to_s, '', value.to_s, RPM::C::RMIL_DEFAULT)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
RPM::C.rpmReadConfigFiles(nil, nil)
|
||||
RPM::C.rpmInitMacros(nil, RPM::C.MACROFILES)
|
||||
|
||||
# TODO
|
||||
# set verbosity
|
||||
|
||||
require 'rpm/compat'
|
||||
Reference in New Issue
Block a user