You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.9 KiB
54 lines
1.9 KiB
|
|
module RPM
|
|
module C
|
|
typedef :pointer, :rpmProblem
|
|
|
|
ProbFilter = enum(:rpmprobFilterFlags_e, [
|
|
:none, 0,
|
|
:ignoreos, (1 << 0),
|
|
:ignorearch, (1 << 1),
|
|
:replacepkg, (1 << 2),
|
|
:forcerelocate, (1 << 3),
|
|
:replacenewfiles, (1 << 4),
|
|
:replaceoldfiles, (1 << 5),
|
|
:oldpackage, (1 << 6),
|
|
:diskspace, (1 << 7),
|
|
:disknodes, (1 << 8)
|
|
])
|
|
|
|
typedef :rpmFlags, :rpmprobFilterFlags
|
|
|
|
ProblemType = enum(:rpmProblemType, %i[
|
|
badarch
|
|
bados
|
|
pkg_installed
|
|
badrelocate
|
|
requires
|
|
conflict
|
|
new_file_conflict
|
|
file_conflict
|
|
oldpackage
|
|
diskspace
|
|
disknodes
|
|
obsoletes
|
|
])
|
|
|
|
attach_function 'rpmProblemCreate', %i[rpmProblemType string fnpyKey string string uint64], :rpmProblem
|
|
attach_function 'rpmProblemFree', [:rpmProblem], :rpmProblem
|
|
attach_function 'rpmProblemLink', [:rpmProblem], :rpmProblem
|
|
attach_function 'rpmProblemGetType', [:rpmProblem], :rpmProblemType
|
|
attach_function 'rpmProblemGetKey', [:rpmProblem], :fnpyKey
|
|
attach_function 'rpmProblemGetStr', [:rpmProblem], :string
|
|
attach_function 'rpmProblemString', [:rpmProblem], :string
|
|
|
|
begin
|
|
attach_function 'rpmProblemCompare', %i[rpmProblem rpmProblem], :int
|
|
rescue ::FFI::NotFoundError
|
|
# TODO: Implement this for librpm 4.8.
|
|
def self.rpmProblemCompare(_a, _b)
|
|
raise NotImplementedError, 'rpmProblemCompare is not present in librpm 4.8 and below'
|
|
end
|
|
end
|
|
end
|
|
end
|