Class: RPM::Dependency

Inherits:
Object
  • Object
show all
Defined in:
lib/rpm/dependency.rb

Direct Known Subclasses

Conflict, Obsolete, Provide, Require

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, version, flags, owner) ⇒ Dependency

Returns a new instance of Dependency.



17
18
19
20
21
22
23
24
# File 'lib/rpm/dependency.rb', line 17

def initialize(name, version, flags, owner)
  RPM::Utils.check_type(version, RPM::Version)

  @name = name
  @version = version
  @flags = flags
  @owner = owner
end

Instance Attribute Details

#flagsString

Returns dependency flags.

Returns:

  • (String)

    dependency flags



9
10
11
# File 'lib/rpm/dependency.rb', line 9

def flags
  @flags
end

#flagstagObject

Returns the value of attribute flagstag.



15
16
17
# File 'lib/rpm/dependency.rb', line 15

def flagstag
  @flagstag
end

#nameString

Returns dependency name.

Returns:

  • (String)

    dependency name



5
6
7
# File 'lib/rpm/dependency.rb', line 5

def name
  @name
end

#nametagObject

Returns the value of attribute nametag.



13
14
15
# File 'lib/rpm/dependency.rb', line 13

def nametag
  @nametag
end

#ownerPackage

Returns package this dependency belongs to.

Returns:

  • (Package)

    package this dependency belongs to



11
12
13
# File 'lib/rpm/dependency.rb', line 11

def owner
  @owner
end

#versionString

Returns dependency version.

Returns:

  • (String)

    dependency version



7
8
9
# File 'lib/rpm/dependency.rb', line 7

def version
  @version
end

#versiontagObject

Returns the value of attribute versiontag.



14
15
16
# File 'lib/rpm/dependency.rb', line 14

def versiontag
  @versiontag
end

Instance Method Details

#eq?Boolean

Returns true if ‘=’, ‘=<’ or ‘>=’ are used to compare the version.

Returns:

  • (Boolean)

    true if ‘=’, ‘=<’ or ‘>=’ are used to compare the version



65
66
67
# File 'lib/rpm/dependency.rb', line 65

def eq?
  flags & RPM::SENSE[:equal]
end

#ge?Boolean

Returns true if ‘>=’ is used to compare the version.

Returns:

  • (Boolean)

    true if ‘>=’ is used to compare the version



75
76
77
# File 'lib/rpm/dependency.rb', line 75

def ge?
  (flags & RPM::SENSE[:greater]) && (flags & RPM::SENSE[:equal])
end

#gt?Boolean

Returns true if ‘>’ or ‘>=’ are used to compare the version.

Returns:

  • (Boolean)

    true if ‘>’ or ‘>=’ are used to compare the version



60
61
62
# File 'lib/rpm/dependency.rb', line 60

def gt?
  flags & RPM::SENSE[:greater]
end

#le?Boolean

Returns true if ‘=<’ is used to compare the version.

Returns:

  • (Boolean)

    true if ‘=<’ is used to compare the version



70
71
72
# File 'lib/rpm/dependency.rb', line 70

def le?
  (flags & RPM::SENSE[:less]) && (flags & RPM::SENSE[:equal])
end

#lt?Boolean

Returns true if ‘<’ or ‘=<’ are used to compare the version.

Returns:

  • (Boolean)

    true if ‘<’ or ‘=<’ are used to compare the version



55
56
57
# File 'lib/rpm/dependency.rb', line 55

def lt?
  flags & RPM::SENSE[:less]
end

#pre?Boolean

Returns true if this is a pre-requires.

Returns:

  • (Boolean)

    true if this is a pre-requires



80
81
82
# File 'lib/rpm/dependency.rb', line 80

def pre?
  flags & RPM::SENSE[:prereq]
end

#satisfy?(other) ⇒ Boolean

Returns true if other satisfies this dependency.

Parameters:

Returns:

  • (Boolean)

    true if other satisfies this dependency



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/rpm/dependency.rb', line 28

def satisfy?(other)
  case other
  when RPM::Package then
    other.provides.each do |prov|
      return true if satisfy?(prov)
    end
    false
  when RPM::Dependency then
    RPM::C.rpmdsCompare(
      RPM::C.rpmdsSingle(:providename, other.name,
                         other.version.to_vre, other.flags),
      RPM::C.rpmdsSingle(:providename, name,
                         version.to_vre, flags)
    ) != 0
  when RPM::Version then
    RPM::C.rpmdsCompare(
      RPM::C.rpmdsSingle(:providename, name,
                         other.to_vre, other.to_vre.empty? ? 0 : :equal),
      RPM::C.rpmdsSingle(:providename, name,
                         version.to_vre, flags)
    ) != 0
  else
    raise(TypeError, "#{other} is not a Version or Dependency")
  end
end