mkmf-lite 0.7.2 → 0.7.3
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
- checksums.yaml.gz.sig +0 -0
- data/CHANGES.md +3 -0
- data/lib/mkmf/lite.rb +33 -1
- data/lib/mkmf/templates/check_offsetof.erb +11 -0
- data/mkmf-lite.gemspec +1 -1
- data/spec/mkmf_lite_spec.rb +28 -1
- data.tar.gz.sig +0 -0
- metadata +7 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 726b5a45c22c5700645950241fabc40621f7a1ec9f57a20fffd212623a41acd0
|
4
|
+
data.tar.gz: 34bc9e1d6d1c3bba0a9c73cfd7d899fda171054c73dfaaeec6305f246f0fe497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5e4afd22216317af2dbb01ea8ead2339976c00276774b1a9e6b5a72e04e6d6ecb097863f6366ce7de93628299440a44b0663db245964d8c30bc310f72d14021
|
7
|
+
data.tar.gz: 0d132571eb8b470886c5e2bce7c5b80b0de36ffe563dd929d7ba479173125827a643b8d63584d7b76a6d05c8db72dd1f5c35b095f38cad707d06d29541c4103c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGES.md
CHANGED
data/lib/mkmf/lite.rb
CHANGED
@@ -16,7 +16,7 @@ module Mkmf
|
|
16
16
|
extend Memoist
|
17
17
|
|
18
18
|
# The version of the mkmf-lite library
|
19
|
-
MKMF_LITE_VERSION = '0.7.
|
19
|
+
MKMF_LITE_VERSION = '0.7.3'
|
20
20
|
|
21
21
|
private
|
22
22
|
|
@@ -184,6 +184,38 @@ module Mkmf
|
|
184
184
|
|
185
185
|
memoize :check_sizeof
|
186
186
|
|
187
|
+
# Returns the offset of +field+ within +struct_type+ using +headers+,
|
188
|
+
# or common headers, plus stddef.h, if no headers are specified.
|
189
|
+
#
|
190
|
+
# If this method fails an error is raised. This could happen if the field
|
191
|
+
# can't be found and/or the header files do not include the indicated type.
|
192
|
+
# It will also fail if the field is a bit field.
|
193
|
+
#
|
194
|
+
# Example:
|
195
|
+
#
|
196
|
+
# class Foo
|
197
|
+
# include Mkmf::Lite
|
198
|
+
# utsname = check_offsetof('struct utsname', 'release', 'sys/utsname.h')
|
199
|
+
# end
|
200
|
+
#
|
201
|
+
def check_offsetof(struct_type, field, headers = [], *directories)
|
202
|
+
headers = get_header_string(headers)
|
203
|
+
erb = ERB.new(read_template('check_offsetof.erb'))
|
204
|
+
code = erb.result(binding)
|
205
|
+
|
206
|
+
if directories.empty?
|
207
|
+
options = nil
|
208
|
+
else
|
209
|
+
options = ''
|
210
|
+
directories.each{ |dir| options += "-I#{dir} " }
|
211
|
+
options.rstrip!
|
212
|
+
end
|
213
|
+
|
214
|
+
try_to_execute(code, options)
|
215
|
+
end
|
216
|
+
|
217
|
+
memoize :check_offsetof
|
218
|
+
|
187
219
|
private
|
188
220
|
|
189
221
|
# Take an array of header file names (or convert it to an array if it's a
|
data/mkmf-lite.gemspec
CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'mkmf-lite'
|
5
5
|
spec.summary = 'A lighter version of mkmf designed for use as a library'
|
6
|
-
spec.version = '0.7.
|
6
|
+
spec.version = '0.7.3'
|
7
7
|
spec.author = 'Daniel J. Berger'
|
8
8
|
spec.license = 'Apache-2.0'
|
9
9
|
spec.email = 'djberg96@gmail.com'
|
data/spec/mkmf_lite_spec.rb
CHANGED
@@ -20,7 +20,7 @@ RSpec.describe Mkmf::Lite do
|
|
20
20
|
|
21
21
|
describe 'constants' do
|
22
22
|
example 'version information' do
|
23
|
-
expect(described_class::MKMF_LITE_VERSION).to eq('0.7.
|
23
|
+
expect(described_class::MKMF_LITE_VERSION).to eq('0.7.3')
|
24
24
|
expect(described_class::MKMF_LITE_VERSION).to be_frozen
|
25
25
|
end
|
26
26
|
end
|
@@ -112,6 +112,33 @@ RSpec.describe Mkmf::Lite do
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
context 'check_offsetof' do
|
116
|
+
let(:st_field){ 'st_dev' }
|
117
|
+
|
118
|
+
example 'check_offsetof basic functionality' do
|
119
|
+
expect(subject).to respond_to(:check_offsetof)
|
120
|
+
expect{ subject.check_offsetof(st_type, st_field, st_header) }.not_to raise_error
|
121
|
+
end
|
122
|
+
|
123
|
+
example 'check_offsetof requires at least two arguments' do
|
124
|
+
expect{ subject.check_offsetof }.to raise_error(ArgumentError)
|
125
|
+
expect{ subject.check_offsetof(st_type) }.to raise_error(ArgumentError)
|
126
|
+
end
|
127
|
+
|
128
|
+
example 'check_offsetof accepts directory arguments' do
|
129
|
+
expect{ subject.check_offsetof(st_type, st_field, [st_header, 'stdlib.h'], ['/usr/include']) }.not_to raise_error
|
130
|
+
end
|
131
|
+
|
132
|
+
example 'check_offsetof returns an integer value' do
|
133
|
+
size1 = subject.check_offsetof(st_type, st_field, st_header)
|
134
|
+
size2 = subject.check_offsetof(st_type, 'st_ino', st_header)
|
135
|
+
expect(size1).to be_a(Integer)
|
136
|
+
expect(size2).to be_a(Integer)
|
137
|
+
expect(size1).to eq(0)
|
138
|
+
expect(size2).to be > size1
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
115
142
|
context 'check_sizeof' do
|
116
143
|
example 'check_sizeof basic functionality' do
|
117
144
|
expect(subject).to respond_to(:check_sizeof)
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mkmf-lite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
|
+
autorequire:
|
8
9
|
bindir: bin
|
9
10
|
cert_chain:
|
10
11
|
- |
|
@@ -34,7 +35,7 @@ cert_chain:
|
|
34
35
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
35
36
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
36
37
|
-----END CERTIFICATE-----
|
37
|
-
date: 2025-03-
|
38
|
+
date: 2025-03-22 00:00:00.000000000 Z
|
38
39
|
dependencies:
|
39
40
|
- !ruby/object:Gem::Dependency
|
40
41
|
name: ptools
|
@@ -140,6 +141,7 @@ files:
|
|
140
141
|
- certs/djberg96_pub.pem
|
141
142
|
- lib/mkmf-lite.rb
|
142
143
|
- lib/mkmf/lite.rb
|
144
|
+
- lib/mkmf/templates/check_offsetof.erb
|
143
145
|
- lib/mkmf/templates/check_sizeof.erb
|
144
146
|
- lib/mkmf/templates/check_valueof.erb
|
145
147
|
- lib/mkmf/templates/have_func.erb
|
@@ -161,6 +163,7 @@ metadata:
|
|
161
163
|
rubygems_mfa_required: 'true'
|
162
164
|
github_repo: https://github.com/djberg96/mkmf-lite
|
163
165
|
funding_uri: https://github.com/sponsors/djberg96
|
166
|
+
post_install_message:
|
164
167
|
rdoc_options: []
|
165
168
|
require_paths:
|
166
169
|
- lib
|
@@ -175,7 +178,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
178
|
- !ruby/object:Gem::Version
|
176
179
|
version: '0'
|
177
180
|
requirements: []
|
178
|
-
rubygems_version: 3.
|
181
|
+
rubygems_version: 3.5.22
|
182
|
+
signing_key:
|
179
183
|
specification_version: 4
|
180
184
|
summary: A lighter version of mkmf designed for use as a library
|
181
185
|
test_files:
|
metadata.gz.sig
CHANGED
Binary file
|