libvirt_ffi 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +26 -0
- data/.gitignore +2 -1
- data/.rspec +1 -0
- data/.rubocop.yml +1 -1
- data/Gemfile +7 -10
- data/README.md +2 -2
- data/Rakefile +3 -8
- data/lib/libvirt/connection.rb +75 -77
- data/lib/libvirt/ffi/host.rb +78 -39
- data/lib/libvirt/loggable.rb +58 -0
- data/lib/libvirt/util.rb +87 -64
- data/lib/libvirt/version.rb +1 -1
- data/lib/libvirt/xml/generic.rb +2 -2
- data/lib/libvirt/xml.rb +6 -5
- data/lib/libvirt.rb +16 -16
- data/libvirt.gemspec +11 -13
- metadata +6 -28
- data/.travis.yml +0 -6
- data/test_usage/support/libvirt_async.rb +0 -536
- data/test_usage/support/log_formatter.rb +0 -33
- data/test_usage/test_domain.rb +0 -43
- data/test_usage/test_event_loop.rb +0 -185
- data/test_usage/test_interface.rb +0 -47
- data/test_usage/test_libvirtd_restart.rb +0 -63
- data/test_usage/test_metadata.rb +0 -104
- data/test_usage/test_network.rb +0 -73
- data/test_usage/test_screenshot.rb +0 -197
- data/test_usage/test_storage.rb +0 -52
data/lib/libvirt/ffi/host.rb
CHANGED
@@ -33,103 +33,142 @@ module Libvirt
|
|
33
33
|
|
34
34
|
# enum virConnectCloseReason
|
35
35
|
enum :close_reason, [
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
:ERROR, 0x0, # Misc I/O error
|
37
|
+
:EOF, 0x1, # End-of-file from server
|
38
|
+
:KEEPALIVE, 0x2, # Keepalive timer triggered
|
39
|
+
:CLIENT, 0x3 # Client requested it
|
40
40
|
]
|
41
41
|
|
42
|
-
# int
|
42
|
+
# int virGetVersion (
|
43
43
|
# unsigned long *libVer,
|
44
44
|
# const char *type,
|
45
45
|
# unsigned long *typeVer
|
46
46
|
# )
|
47
|
-
attach_function :virGetVersion,
|
47
|
+
attach_function :virGetVersion,
|
48
|
+
[:pointer, :string, :pointer],
|
49
|
+
:int
|
48
50
|
|
49
|
-
# int
|
51
|
+
# int virNodeGetInfo (
|
50
52
|
# virConnectPtr conn,
|
51
53
|
# virNodeInfoPtr info
|
52
54
|
# )
|
53
|
-
attach_function :virNodeGetInfo,
|
55
|
+
attach_function :virNodeGetInfo,
|
56
|
+
[:pointer, :pointer],
|
57
|
+
:int
|
54
58
|
|
55
|
-
# typedef void
|
59
|
+
# typedef void (*virConnectCloseFunc) (
|
56
60
|
# virConnectPtr conn,
|
57
61
|
# int reason,
|
58
62
|
# void * opaque
|
59
63
|
# )
|
60
|
-
callback :virConnectCloseFunc,
|
64
|
+
callback :virConnectCloseFunc,
|
65
|
+
[:pointer, :close_reason, :pointer],
|
66
|
+
:void
|
61
67
|
|
62
|
-
# virConnectPtr
|
63
|
-
|
68
|
+
# virConnectPtr virConnectOpen (
|
69
|
+
# const char * name
|
70
|
+
# )
|
71
|
+
attach_function :virConnectOpen,
|
72
|
+
[:string],
|
73
|
+
:pointer
|
64
74
|
|
65
|
-
# int
|
75
|
+
# int virConnectSetKeepAlive (
|
66
76
|
# virConnectPtr conn,
|
67
77
|
# int interval,
|
68
78
|
# unsigned int count
|
69
79
|
# )
|
70
|
-
attach_function :virConnectSetKeepAlive,
|
80
|
+
attach_function :virConnectSetKeepAlive,
|
81
|
+
[:pointer, :int, :uint],
|
82
|
+
:int
|
71
83
|
|
72
|
-
# int
|
84
|
+
# int virConnectGetVersion (
|
73
85
|
# virConnectPtr conn,
|
74
86
|
# unsigned long * hvVer
|
75
87
|
# )
|
76
|
-
attach_function :virConnectGetVersion,
|
88
|
+
attach_function :virConnectGetVersion,
|
89
|
+
[:pointer, :pointer],
|
90
|
+
:int
|
77
91
|
|
78
|
-
# int
|
92
|
+
# int virConnectGetLibVersion (
|
79
93
|
# virConnectPtr conn,
|
80
94
|
# unsigned long * libVer
|
81
95
|
# )
|
82
|
-
attach_function :virConnectGetLibVersion,
|
96
|
+
attach_function :virConnectGetLibVersion,
|
97
|
+
[:pointer, :pointer],
|
98
|
+
:int
|
83
99
|
|
84
|
-
# char *
|
100
|
+
# char * virConnectGetHostname (
|
85
101
|
# virConnectPtr conn
|
86
102
|
# )
|
87
|
-
attach_function :virConnectGetHostname,
|
103
|
+
attach_function :virConnectGetHostname,
|
104
|
+
[:pointer],
|
105
|
+
:string
|
88
106
|
|
89
|
-
# int virConnectGetMaxVcpus
|
107
|
+
# int virConnectGetMaxVcpus (
|
90
108
|
# virConnectPtr conn,
|
91
109
|
# const char * type
|
92
110
|
# )
|
93
|
-
attach_function :virConnectGetMaxVcpus,
|
111
|
+
attach_function :virConnectGetMaxVcpus,
|
112
|
+
[:pointer, :string],
|
113
|
+
:int
|
94
114
|
|
95
|
-
# char *
|
115
|
+
# char * virConnectGetCapabilities (
|
96
116
|
# virConnectPtr conn
|
97
117
|
# )
|
98
|
-
attach_function :virConnectGetCapabilities,
|
118
|
+
attach_function :virConnectGetCapabilities,
|
119
|
+
[:pointer],
|
120
|
+
:string
|
99
121
|
|
100
|
-
# int
|
122
|
+
# int virConnectClose (
|
101
123
|
# virConnectPtr conn
|
102
124
|
# )
|
103
|
-
attach_function :virConnectClose,
|
125
|
+
attach_function :virConnectClose,
|
126
|
+
[:pointer],
|
127
|
+
:int
|
104
128
|
|
105
|
-
# int
|
129
|
+
# int virConnectRegisterCloseCallback (
|
106
130
|
# virConnectPtr conn,
|
107
131
|
# virConnectCloseFunc cb,
|
108
132
|
# void * opaque,
|
109
133
|
# virFreeCallback freecb
|
110
134
|
# )
|
111
|
-
attach_function :virConnectRegisterCloseCallback,
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
135
|
+
attach_function :virConnectRegisterCloseCallback,
|
136
|
+
[
|
137
|
+
:pointer,
|
138
|
+
:virConnectCloseFunc,
|
139
|
+
:pointer,
|
140
|
+
FFI::Common::FREE_CALLBACK
|
141
|
+
],
|
142
|
+
:int
|
143
|
+
|
144
|
+
# int virConnectUnregisterCloseCallback (
|
119
145
|
# virConnectPtr conn,
|
120
146
|
# virConnectCloseFunc cb
|
121
147
|
# )
|
122
|
-
attach_function :virConnectUnregisterCloseCallback,
|
148
|
+
attach_function :virConnectUnregisterCloseCallback,
|
149
|
+
[:pointer, :pointer],
|
150
|
+
:int
|
123
151
|
|
124
|
-
# int
|
152
|
+
# int virConnectRef (
|
125
153
|
# virConnectPtr conn
|
126
154
|
# )
|
127
|
-
attach_function :virConnectRef,
|
155
|
+
attach_function :virConnectRef,
|
156
|
+
[:pointer],
|
157
|
+
:int
|
128
158
|
|
129
159
|
# unsigned long long virNodeGetFreeMemory (
|
130
160
|
# virConnectPtr conn
|
131
161
|
# )
|
132
|
-
attach_function :virNodeGetFreeMemory,
|
162
|
+
attach_function :virNodeGetFreeMemory,
|
163
|
+
[:pointer],
|
164
|
+
:ulong_long
|
165
|
+
|
166
|
+
# char * virConnectGetURI (
|
167
|
+
# virConnectPtr conn
|
168
|
+
# )
|
169
|
+
attach_function :virConnectGetURI,
|
170
|
+
[:pointer],
|
171
|
+
:string
|
133
172
|
end
|
134
173
|
end
|
135
174
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Libvirt
|
4
|
+
module Loggable
|
5
|
+
# caller[0].match(/`(.*)'/)[1]
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def dbg(prog_name = nil, &block)
|
9
|
+
return if Libvirt.logger.nil?
|
10
|
+
|
11
|
+
if prog_name.nil?
|
12
|
+
meth = caller[0].match(/`(.*)'/)[1]
|
13
|
+
meth = "<#{meth}>" if meth.include?(' ')
|
14
|
+
prog_name = "#{name}.#{meth}"
|
15
|
+
end
|
16
|
+
Libvirt.logger.debug(prog_name, &block)
|
17
|
+
end
|
18
|
+
|
19
|
+
def err(prog_name = nil, &block)
|
20
|
+
return if Libvirt.logger.nil?
|
21
|
+
|
22
|
+
if prog_name.nil?
|
23
|
+
meth = caller[0].match(/`(.*)'/)[1]
|
24
|
+
meth = "<#{meth}>" if meth.include?(' ')
|
25
|
+
prog_name = "#{name}.#{meth}"
|
26
|
+
end
|
27
|
+
Libvirt.logger.error(prog_name, &block)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.included(base)
|
32
|
+
base.extend ClassMethods
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
def dbg(prog_name = nil, &block)
|
37
|
+
return if Libvirt.logger.nil?
|
38
|
+
|
39
|
+
if prog_name.nil?
|
40
|
+
meth = caller[0].match(/`(.*)'/)[1]
|
41
|
+
meth = "<#{meth}>" if meth.include?(' ')
|
42
|
+
prog_name = "#{self.class.name}##{meth}"
|
43
|
+
end
|
44
|
+
Libvirt.logger.debug(prog_name, &block)
|
45
|
+
end
|
46
|
+
|
47
|
+
def err(prog_name = nil, &block)
|
48
|
+
return if Libvirt.logger.nil?
|
49
|
+
|
50
|
+
if prog_name.nil?
|
51
|
+
meth = caller[0].match(/`(.*)'/)[1]
|
52
|
+
meth = "<#{meth}>" if meth.include?(' ')
|
53
|
+
prog_name = "#{self.class.name}##{meth}"
|
54
|
+
end
|
55
|
+
Libvirt.logger.error(prog_name, &block)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/libvirt/util.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'objspace'
|
4
|
+
|
3
5
|
module Libvirt
|
4
6
|
module Util
|
7
|
+
extend Loggable::ClassMethods
|
8
|
+
|
5
9
|
UNIT_TO_BYTES = {
|
6
10
|
b: 1,
|
7
11
|
bytes: 1,
|
@@ -21,83 +25,102 @@ module Libvirt
|
|
21
25
|
|
22
26
|
UUID_STRING_BUFLEN = 0x80 # RFC4122
|
23
27
|
|
24
|
-
|
25
|
-
attr_writer :logger
|
26
|
-
|
27
|
-
attr_reader :logger
|
28
|
+
module_function
|
28
29
|
|
29
|
-
|
30
|
-
|
30
|
+
def logger
|
31
|
+
@logger if defined?(@logger)
|
32
|
+
end
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
+
def logger=(value)
|
35
|
+
@logger = value
|
36
|
+
end
|
34
37
|
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
+
def log(severity, prog = nil, &block)
|
39
|
+
return if logger.nil?
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
major = version_number / 1_000_000
|
42
|
-
minor = (version_number - major * 1_000_000) / 1_000
|
43
|
-
release = version_number - major * 1_000_000 - minor * 1_000
|
44
|
-
"#{major}.#{minor}.#{release}"
|
45
|
-
end
|
41
|
+
logger.public_send(severity, prog, &block)
|
42
|
+
end
|
46
43
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
# @raise ArgumentError
|
51
|
-
def parse_enum(enum, value)
|
52
|
-
if value.is_a?(Symbol)
|
53
|
-
raise ArgumentError, 'invalid enum value' unless enum.symbols.include?(value)
|
44
|
+
def library_path
|
45
|
+
%w[libvirt libvirt.so.0]
|
46
|
+
end
|
54
47
|
|
55
|
-
|
56
|
-
|
48
|
+
# @param [Integer] version_number ulong
|
49
|
+
def parse_version(version_number)
|
50
|
+
major = version_number / 1_000_000
|
51
|
+
minor = (version_number - major * 1_000_000) / 1_000
|
52
|
+
release = version_number - major * 1_000_000 - minor * 1_000
|
53
|
+
"#{major}.#{minor}.#{release}"
|
54
|
+
end
|
57
55
|
|
58
|
-
|
56
|
+
# @param enum [FFI::Enum]
|
57
|
+
# @param value [Symbol, Integer]
|
58
|
+
# @return [Array] event_id, event_id_sym
|
59
|
+
# @raise ArgumentError
|
60
|
+
def parse_enum(enum, value)
|
61
|
+
if value.is_a?(Symbol)
|
62
|
+
raise ArgumentError, 'invalid enum value' unless enum.symbols.include?(value)
|
59
63
|
|
60
|
-
[value,
|
64
|
+
return [enum.find(value), value]
|
61
65
|
end
|
62
66
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
67
|
+
raise ArgumentError, 'invalid enum value' unless enum.symbol_map.values.include?(value)
|
68
|
+
|
69
|
+
[value, enum.symbol_map[value]]
|
70
|
+
end
|
71
|
+
|
72
|
+
# Bitwise OR integer flags calculation for C language.
|
73
|
+
# @param flags [Integer,Symbol,Array<Symbol>,Hash{Symbol=>Boolean},nil]
|
74
|
+
# @param enum [FFI::Enum]
|
75
|
+
# @param default [Integer] optional (default 0x0)
|
76
|
+
# @return [Integer] bitwise OR of keys
|
77
|
+
# @example Usage:
|
78
|
+
# parse_flags(nil, enum)
|
79
|
+
# parse_flags({MANAGED_SAVE: true, SNAPSHOTS_METADATA: true, NVRAM: false}, enum)
|
80
|
+
# parse_flags({managed_save: true, snapshots_metadata: true, keep_nvram: nil}, enum)
|
81
|
+
# parse_flags(3, enum)
|
82
|
+
# parse_flags([:MANAGED_SAVE, :SNAPSHOTS_METADATA], enum)
|
83
|
+
# parse_flags([:managed_save, :snapshots_metadata], enum)
|
84
|
+
#
|
85
|
+
def parse_flags(flags, enum, default: 0x0)
|
86
|
+
flags = default if flags.nil?
|
87
|
+
flags = enum[flags] if flags.is_a?(Symbol)
|
88
|
+
return flags if flags.is_a?(Integer)
|
89
|
+
|
90
|
+
result = 0x0
|
91
|
+
flags = flags.select { |_, v| v }.keys if flags.is_a?(Hash)
|
92
|
+
|
93
|
+
raise ArgumentError, 'flags must be an Integer or a Hash or an Array' unless flags.is_a?(Array)
|
94
|
+
|
95
|
+
flags.each do |key|
|
96
|
+
result |= enum[key.to_s.upcase.to_sym]
|
91
97
|
end
|
92
98
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
99
|
+
result
|
100
|
+
end
|
101
|
+
|
102
|
+
# @param value [Integer,String]
|
103
|
+
# @param unit [String,Symbol] default 'bytes'
|
104
|
+
# @return [Integer] memory in bytes
|
105
|
+
def parse_memory(value, unit)
|
106
|
+
unit ||= 'bytes'
|
107
|
+
multiplier = UNIT_TO_BYTES.fetch(unit.to_sym)
|
108
|
+
Integer(value) * multiplier
|
109
|
+
end
|
110
|
+
|
111
|
+
def define_finalizer(object, &block)
|
112
|
+
free = ->(obj_id) do
|
113
|
+
obj_id_hex = "0x#{obj_id.to_s(16)}"
|
114
|
+
ptr = object.to_ptr
|
115
|
+
ptr_hex = "0x#{ptr.address.to_s(16)}"
|
116
|
+
klass = object.class
|
117
|
+
dbg { "Finalize #{klass} object_id=#{obj_id_hex}, pointer=#{ptr_hex}" }
|
118
|
+
return if ptr.null?
|
119
|
+
|
120
|
+
cl_result = block.call(ptr)
|
121
|
+
err { "Couldn't close #{klass} object_id=#{obj_id_hex}, pointer=#{ptr_hex}" } if cl_result.negative?
|
100
122
|
end
|
123
|
+
ObjectSpace.define_finalizer(object, free)
|
101
124
|
end
|
102
125
|
end
|
103
126
|
end
|
data/lib/libvirt/version.rb
CHANGED
data/lib/libvirt/xml/generic.rb
CHANGED
@@ -26,7 +26,7 @@ module Libvirt
|
|
26
26
|
attr_accessor(*names)
|
27
27
|
end
|
28
28
|
|
29
|
-
def self.attribute(name, options
|
29
|
+
def self.attribute(name, **options)
|
30
30
|
_attributes_opts.merge!(name.to_sym => options.dup)
|
31
31
|
attr_accessor name
|
32
32
|
end
|
@@ -41,7 +41,7 @@ module Libvirt
|
|
41
41
|
# Build xml object with attributes.
|
42
42
|
# @param attrs [Hash]
|
43
43
|
# @return [Xml::Base]
|
44
|
-
def self.build(attrs
|
44
|
+
def self.build(**attrs)
|
45
45
|
xml_node = Nokogiri::XML(nil)
|
46
46
|
obj = new(xml_node)
|
47
47
|
attrs.each { |key, val| obj.public_send("#{key}=", val) }
|
data/lib/libvirt/xml.rb
CHANGED
@@ -11,16 +11,17 @@ module Libvirt
|
|
11
11
|
# requires nokogiri.
|
12
12
|
|
13
13
|
require 'libvirt/xml/generic'
|
14
|
-
require 'libvirt/xml/storage_pool'
|
15
|
-
require 'libvirt/xml/storage_volume'
|
16
|
-
require 'libvirt/xml/interface'
|
17
|
-
require 'libvirt/xml/ip_address'
|
18
|
-
require 'libvirt/xml/network'
|
19
14
|
require 'libvirt/xml/memory'
|
20
15
|
require 'libvirt/xml/graphics'
|
21
16
|
require 'libvirt/xml/disk'
|
22
17
|
require 'libvirt/xml/max_vcpu'
|
23
18
|
require 'libvirt/xml/vcpu'
|
19
|
+
require 'libvirt/xml/ip_address'
|
20
|
+
require 'libvirt/xml/device_address'
|
21
|
+
require 'libvirt/xml/storage_pool'
|
22
|
+
require 'libvirt/xml/storage_volume'
|
23
|
+
require 'libvirt/xml/network'
|
24
|
+
require 'libvirt/xml/interface'
|
24
25
|
require 'libvirt/xml/domain'
|
25
26
|
end
|
26
27
|
end
|
data/lib/libvirt.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'ffi'
|
4
|
-
require '
|
4
|
+
require 'libvirt/version'
|
5
|
+
require 'libvirt/loggable'
|
5
6
|
require 'libvirt/host_callback_storage'
|
6
7
|
require 'libvirt/util'
|
7
8
|
require 'libvirt/errors'
|
@@ -18,7 +19,6 @@ require 'libvirt/storage_pool'
|
|
18
19
|
require 'libvirt/storage_volume'
|
19
20
|
require 'libvirt/network'
|
20
21
|
require 'libvirt/interface'
|
21
|
-
require 'libvirt/version'
|
22
22
|
|
23
23
|
module Libvirt
|
24
24
|
EVENT_HANDLE_READABLE = 1
|
@@ -26,22 +26,22 @@ module Libvirt
|
|
26
26
|
EVENT_HANDLE_ERROR = 4
|
27
27
|
EVENT_HANDLE_HANGUP = 8
|
28
28
|
|
29
|
-
|
30
|
-
def lib_version
|
31
|
-
version_ptr = ::FFI::MemoryPointer.new(:ulong)
|
32
|
-
code = FFI::Host.virGetVersion(version_ptr, nil, nil)
|
33
|
-
raise Errors::LibError, 'failed to get version' if code.negative?
|
29
|
+
module_function
|
34
30
|
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
def lib_version
|
32
|
+
version_ptr = ::FFI::MemoryPointer.new(:ulong)
|
33
|
+
code = FFI::Host.virGetVersion(version_ptr, nil, nil)
|
34
|
+
raise Errors::LibError, 'failed to get version' if code.negative?
|
38
35
|
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
version_number = version_ptr.get_ulong(0)
|
37
|
+
Util.parse_version(version_number)
|
38
|
+
end
|
39
|
+
|
40
|
+
def logger
|
41
|
+
Util.logger
|
42
|
+
end
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
end
|
44
|
+
def logger=(logger)
|
45
|
+
Util.logger = logger
|
46
46
|
end
|
47
47
|
end
|
data/libvirt.gemspec
CHANGED
@@ -3,15 +3,15 @@
|
|
3
3
|
require_relative 'lib/libvirt/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
6
|
+
spec.name = 'libvirt_ffi'
|
7
|
+
spec.version = Libvirt::VERSION
|
8
|
+
spec.authors = ['Denis Talakevich']
|
9
|
+
spec.email = ['senid231@gmail.com']
|
10
10
|
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
11
|
+
spec.summary = 'Libvirt FFI'
|
12
|
+
spec.description = 'Libvirt FFI'
|
13
|
+
spec.homepage = 'https://github.com/senid231/libvirt_ffi'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
|
16
16
|
spec.metadata['homepage_uri'] = spec.homepage
|
17
17
|
spec.metadata['source_code_uri'] = spec.homepage
|
@@ -20,13 +20,11 @@ Gem::Specification.new do |spec|
|
|
20
20
|
# Specify which files should be added to the gem when it is released.
|
21
21
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
22
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
23
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(
|
23
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec|examples)/}) }
|
24
24
|
end
|
25
|
-
spec.bindir
|
26
|
-
spec.executables
|
25
|
+
spec.bindir = 'exe'
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = ['lib']
|
28
28
|
|
29
29
|
spec.add_dependency 'ffi', '>= 1.0'
|
30
|
-
|
31
|
-
spec.add_development_dependency 'rubocop', '~> 0.80.1'
|
32
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libvirt_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Talakevich
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rubocop
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.80.1
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.80.1
|
41
27
|
description: Libvirt FFI
|
42
28
|
email:
|
43
29
|
- senid231@gmail.com
|
@@ -46,9 +32,10 @@ executables:
|
|
46
32
|
extensions: []
|
47
33
|
extra_rdoc_files: []
|
48
34
|
files:
|
35
|
+
- ".github/workflows/tests.yml"
|
49
36
|
- ".gitignore"
|
37
|
+
- ".rspec"
|
50
38
|
- ".rubocop.yml"
|
51
|
-
- ".travis.yml"
|
52
39
|
- CODE_OF_CONDUCT.md
|
53
40
|
- Gemfile
|
54
41
|
- LICENSE.txt
|
@@ -76,6 +63,7 @@ files:
|
|
76
63
|
- lib/libvirt/ffi/stream.rb
|
77
64
|
- lib/libvirt/host_callback_storage.rb
|
78
65
|
- lib/libvirt/interface.rb
|
66
|
+
- lib/libvirt/loggable.rb
|
79
67
|
- lib/libvirt/network.rb
|
80
68
|
- lib/libvirt/network_dhcp_lease.rb
|
81
69
|
- lib/libvirt/node_info.rb
|
@@ -101,16 +89,6 @@ files:
|
|
101
89
|
- lib/libvirt/xml/vcpu.rb
|
102
90
|
- lib/libvirt_ffi.rb
|
103
91
|
- libvirt.gemspec
|
104
|
-
- test_usage/support/libvirt_async.rb
|
105
|
-
- test_usage/support/log_formatter.rb
|
106
|
-
- test_usage/test_domain.rb
|
107
|
-
- test_usage/test_event_loop.rb
|
108
|
-
- test_usage/test_interface.rb
|
109
|
-
- test_usage/test_libvirtd_restart.rb
|
110
|
-
- test_usage/test_metadata.rb
|
111
|
-
- test_usage/test_network.rb
|
112
|
-
- test_usage/test_screenshot.rb
|
113
|
-
- test_usage/test_storage.rb
|
114
92
|
homepage: https://github.com/senid231/libvirt_ffi
|
115
93
|
licenses:
|
116
94
|
- MIT
|
@@ -133,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
111
|
- !ruby/object:Gem::Version
|
134
112
|
version: '0'
|
135
113
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
114
|
+
rubygems_version: 3.2.32
|
137
115
|
signing_key:
|
138
116
|
specification_version: 4
|
139
117
|
summary: Libvirt FFI
|