ffi 1.12.1-x64-mingw32 → 1.14.1-x64-mingw32
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/CHANGELOG.md +80 -0
- data/Gemfile +4 -2
- data/README.md +10 -2
- data/Rakefile +24 -43
- data/ffi.gemspec +2 -2
- data/lib/2.3/ffi_c.so +0 -0
- data/lib/2.4/ffi_c.so +0 -0
- data/lib/2.5/ffi_c.so +0 -0
- data/lib/2.6/ffi_c.so +0 -0
- data/lib/2.7/ffi_c.so +0 -0
- data/lib/ffi.rb +10 -2
- data/lib/ffi/abstract_memory.rb +44 -0
- data/lib/ffi/ffi.rb +1 -0
- data/lib/ffi/library.rb +6 -2
- data/lib/ffi/platform.rb +21 -8
- data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
- data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/arm-linux/types.conf +32 -4
- data/lib/ffi/platform/i386-windows/types.conf +26 -79
- data/lib/ffi/platform/powerpc-linux/types.conf +32 -2
- data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
- data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
- data/lib/ffi/platform/x86_64-darwin/types.conf +4 -0
- data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +4 -22
- data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
- data/lib/ffi/platform/x86_64-linux/types.conf +21 -0
- data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +10 -78
- data/lib/ffi/pointer.rb +19 -12
- data/lib/ffi/struct.rb +9 -4
- data/lib/ffi/tools/types_generator.rb +2 -0
- data/lib/ffi/version.rb +1 -1
- data/samples/getlogin.rb +1 -1
- data/samples/getpid.rb +1 -1
- data/samples/gettimeofday.rb +8 -8
- data/samples/hello.rb +2 -1
- data/samples/inotify.rb +1 -1
- data/samples/pty.rb +1 -2
- data/samples/qsort.rb +0 -1
- metadata +10 -10
- data/.appveyor.yml +0 -27
- data/.gitignore +0 -25
- data/.gitmodules +0 -4
- data/.travis.yml +0 -44
- data/.yardopts +0 -5
- data/samples/sample_helper.rb +0 -6
data/lib/ffi/struct.rb
CHANGED
@@ -190,7 +190,7 @@ module FFI
|
|
190
190
|
# :field2, :pointer, 6, # set offset to 6 for this field
|
191
191
|
# :field3, :string
|
192
192
|
# end
|
193
|
-
# @example Creating a layout from a hash +spec+
|
193
|
+
# @example Creating a layout from a hash +spec+
|
194
194
|
# class MyStructFromHash < Struct
|
195
195
|
# layout :field1 => :int,
|
196
196
|
# :field2 => :pointer,
|
@@ -202,7 +202,6 @@ module FFI
|
|
202
202
|
# :function2, callback([:pointer], :void),
|
203
203
|
# :field3, :string
|
204
204
|
# end
|
205
|
-
# @note Creating a layout from a hash +spec+ is supported only for Ruby 1.9.
|
206
205
|
def layout(*spec)
|
207
206
|
warn "[DEPRECATION] Struct layout is already defined for class #{self.inspect}. Redefinition as in #{caller[0]} will be disallowed in ffi-2.0." if defined?(@layout)
|
208
207
|
return @layout if spec.size == 0
|
@@ -229,7 +228,11 @@ module FFI
|
|
229
228
|
|
230
229
|
def callback(params, ret)
|
231
230
|
mod = enclosing_module
|
232
|
-
|
231
|
+
ret_type = find_type(ret, mod)
|
232
|
+
if ret_type == Type::STRING
|
233
|
+
raise TypeError, ":string is not allowed as return type of callbacks"
|
234
|
+
end
|
235
|
+
FFI::CallbackInfo.new(ret_type, params.map { |e| find_type(e, mod) })
|
233
236
|
end
|
234
237
|
|
235
238
|
def packed(packed = 1)
|
@@ -245,7 +248,9 @@ module FFI
|
|
245
248
|
def enclosing_module
|
246
249
|
begin
|
247
250
|
mod = self.name.split("::")[0..-2].inject(Object) { |obj, c| obj.const_get(c) }
|
248
|
-
(
|
251
|
+
if mod.respond_to?(:find_type) && (mod.is_a?(FFI::Library) || mod < FFI::Struct)
|
252
|
+
mod
|
253
|
+
end
|
249
254
|
rescue Exception
|
250
255
|
nil
|
251
256
|
end
|
data/lib/ffi/version.rb
CHANGED
data/samples/getlogin.rb
CHANGED
data/samples/getpid.rb
CHANGED
data/samples/gettimeofday.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'ffi'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
3
4
|
class Timeval < FFI::Struct
|
4
|
-
|
5
|
-
if rb_maj.to_i >= 1 && rb_min.to_i >= 9 || RUBY_PLATFORM =~ /java/
|
6
|
-
layout :tv_sec => :ulong, :tv_usec => :ulong
|
7
|
-
else
|
8
|
-
layout :tv_sec, :ulong, 0, :tv_usec, :ulong, 4
|
9
|
-
end
|
5
|
+
layout tv_sec: :ulong, tv_usec: :ulong
|
10
6
|
end
|
11
7
|
module LibC
|
12
8
|
extend FFI::Library
|
13
|
-
|
9
|
+
if FFI::Platform.windows?
|
10
|
+
ffi_lib RbConfig::CONFIG["LIBRUBY_SO"]
|
11
|
+
else
|
12
|
+
ffi_lib FFI::Library::LIBC
|
13
|
+
end
|
14
14
|
attach_function :gettimeofday, [ :pointer, :pointer ], :int
|
15
15
|
end
|
16
16
|
t = Timeval.new
|
data/samples/hello.rb
CHANGED
data/samples/inotify.rb
CHANGED
data/samples/pty.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'ffi'
|
2
2
|
|
3
|
-
|
4
3
|
module PTY
|
5
4
|
private
|
6
5
|
module LibC
|
@@ -41,7 +40,7 @@ module PTY
|
|
41
40
|
#
|
42
41
|
exec_cmd, exec_args = build_args(args)
|
43
42
|
pid = LibC.forkpty(mfdp, name, nil, nil)
|
44
|
-
raise "forkpty failed: #{LibC.strerror(FFI.errno)}" if pid < 0
|
43
|
+
raise "forkpty failed: #{LibC.strerror(FFI.errno)}" if pid < 0
|
45
44
|
if pid == 0
|
46
45
|
LibC.execvp(exec_cmd, exec_args)
|
47
46
|
exit 1
|
data/samples/qsort.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.1
|
5
5
|
platform: x64-mingw32
|
6
6
|
authors:
|
7
7
|
- Wayne Meissner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -86,11 +86,6 @@ executables: []
|
|
86
86
|
extensions: []
|
87
87
|
extra_rdoc_files: []
|
88
88
|
files:
|
89
|
-
- ".appveyor.yml"
|
90
|
-
- ".gitignore"
|
91
|
-
- ".gitmodules"
|
92
|
-
- ".travis.yml"
|
93
|
-
- ".yardopts"
|
94
89
|
- CHANGELOG.md
|
95
90
|
- COPYING
|
96
91
|
- Gemfile
|
@@ -99,13 +94,13 @@ files:
|
|
99
94
|
- README.md
|
100
95
|
- Rakefile
|
101
96
|
- ffi.gemspec
|
102
|
-
- lib/2.2/ffi_c.so
|
103
97
|
- lib/2.3/ffi_c.so
|
104
98
|
- lib/2.4/ffi_c.so
|
105
99
|
- lib/2.5/ffi_c.so
|
106
100
|
- lib/2.6/ffi_c.so
|
107
101
|
- lib/2.7/ffi_c.so
|
108
102
|
- lib/ffi.rb
|
103
|
+
- lib/ffi/abstract_memory.rb
|
109
104
|
- lib/ffi/autopointer.rb
|
110
105
|
- lib/ffi/buffer.rb
|
111
106
|
- lib/ffi/callback.rb
|
@@ -118,9 +113,11 @@ files:
|
|
118
113
|
- lib/ffi/managedstruct.rb
|
119
114
|
- lib/ffi/memorypointer.rb
|
120
115
|
- lib/ffi/platform.rb
|
116
|
+
- lib/ffi/platform/aarch64-darwin/types.conf
|
121
117
|
- lib/ffi/platform/aarch64-freebsd/types.conf
|
122
118
|
- lib/ffi/platform/aarch64-freebsd12/types.conf
|
123
119
|
- lib/ffi/platform/aarch64-linux/types.conf
|
120
|
+
- lib/ffi/platform/aarch64-openbsd/types.conf
|
124
121
|
- lib/ffi/platform/arm-freebsd/types.conf
|
125
122
|
- lib/ffi/platform/arm-freebsd12/types.conf
|
126
123
|
- lib/ffi/platform/arm-linux/types.conf
|
@@ -146,19 +143,23 @@ files:
|
|
146
143
|
- lib/ffi/platform/powerpc-aix/types.conf
|
147
144
|
- lib/ffi/platform/powerpc-darwin/types.conf
|
148
145
|
- lib/ffi/platform/powerpc-linux/types.conf
|
146
|
+
- lib/ffi/platform/powerpc-openbsd/types.conf
|
149
147
|
- lib/ffi/platform/powerpc64-linux/types.conf
|
150
148
|
- lib/ffi/platform/s390-linux/types.conf
|
151
149
|
- lib/ffi/platform/s390x-linux/types.conf
|
152
150
|
- lib/ffi/platform/sparc-linux/types.conf
|
153
151
|
- lib/ffi/platform/sparc-solaris/types.conf
|
154
152
|
- lib/ffi/platform/sparc64-linux/types.conf
|
153
|
+
- lib/ffi/platform/sparcv9-openbsd/types.conf
|
155
154
|
- lib/ffi/platform/sparcv9-solaris/types.conf
|
156
155
|
- lib/ffi/platform/x86_64-cygwin/types.conf
|
157
156
|
- lib/ffi/platform/x86_64-darwin/types.conf
|
158
157
|
- lib/ffi/platform/x86_64-dragonflybsd/types.conf
|
159
158
|
- lib/ffi/platform/x86_64-freebsd/types.conf
|
160
159
|
- lib/ffi/platform/x86_64-freebsd12/types.conf
|
160
|
+
- lib/ffi/platform/x86_64-haiku/types.conf
|
161
161
|
- lib/ffi/platform/x86_64-linux/types.conf
|
162
|
+
- lib/ffi/platform/x86_64-msys/types.conf
|
162
163
|
- lib/ffi/platform/x86_64-netbsd/types.conf
|
163
164
|
- lib/ffi/platform/x86_64-openbsd/types.conf
|
164
165
|
- lib/ffi/platform/x86_64-solaris/types.conf
|
@@ -184,7 +185,6 @@ files:
|
|
184
185
|
- samples/inotify.rb
|
185
186
|
- samples/pty.rb
|
186
187
|
- samples/qsort.rb
|
187
|
-
- samples/sample_helper.rb
|
188
188
|
homepage: https://github.com/ffi/ffi/wiki
|
189
189
|
licenses:
|
190
190
|
- BSD-3-Clause
|
@@ -205,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
205
205
|
requirements:
|
206
206
|
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version: '2.
|
208
|
+
version: '2.3'
|
209
209
|
- - "<"
|
210
210
|
- !ruby/object:Gem::Version
|
211
211
|
version: 2.8.dev
|
data/.appveyor.yml
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
install:
|
2
|
-
- SET PATH=C:\Ruby%RUBYVER%\bin;%PATH%
|
3
|
-
- SET RAKEOPT=-rdevkit
|
4
|
-
- ps: |
|
5
|
-
if ($env:RUBYVER -like "*head*") {
|
6
|
-
$(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-$env:RUBYVER.exe", "$pwd/ruby-setup.exe")
|
7
|
-
cmd /c ruby-setup.exe /verysilent /dir=C:/Ruby$env:RUBYVER
|
8
|
-
}
|
9
|
-
- ridk version
|
10
|
-
- gem --version
|
11
|
-
- gem install bundler --quiet --no-document
|
12
|
-
- bundle install
|
13
|
-
build: off
|
14
|
-
build_script:
|
15
|
-
- bundle exec rake libffi compile -- %EXTCONFOPTS% || bundle exec rake compile -- %EXTCONFOPTS%
|
16
|
-
test_script:
|
17
|
-
- bundle exec rake test
|
18
|
-
environment:
|
19
|
-
matrix:
|
20
|
-
- RUBYVER: "head-x64"
|
21
|
-
EXTCONFOPTS: "--disable-system-libffi"
|
22
|
-
- RUBYVER: 24
|
23
|
-
EXTCONFOPTS: "--disable-system-libffi"
|
24
|
-
- RUBYVER: 25-x64
|
25
|
-
EXTCONFOPTS: "--enable-system-libffi"
|
26
|
-
- RUBYVER: 26
|
27
|
-
EXTCONFOPTS: "--enable-system-libffi"
|
data/.gitignore
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
doc/
|
2
|
-
bin/
|
3
|
-
.yardoc
|
4
|
-
*.orig
|
5
|
-
nbproject/private
|
6
|
-
pkg
|
7
|
-
*.orig
|
8
|
-
*.rej
|
9
|
-
*.patch
|
10
|
-
*.diff
|
11
|
-
build
|
12
|
-
*.so
|
13
|
-
*.[oa]
|
14
|
-
core
|
15
|
-
lib/ffi/types.conf
|
16
|
-
lib/ffi_c.bundle
|
17
|
-
lib/ffi_c.so
|
18
|
-
vendor
|
19
|
-
.bundle
|
20
|
-
Gemfile.lock
|
21
|
-
types_log
|
22
|
-
*.gem
|
23
|
-
embed-test.log
|
24
|
-
spec/ffi/embed-test/ext/Makefile
|
25
|
-
spec/ffi/embed-test/ext/embed_test.bundle
|
data/.gitmodules
DELETED
data/.travis.yml
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
dist: trusty
|
2
|
-
group: beta
|
3
|
-
language: ruby
|
4
|
-
|
5
|
-
script:
|
6
|
-
- bundle exec rake compile || bundle exec rake compile
|
7
|
-
- bundle exec rake test
|
8
|
-
- ITER=10 bundle exec rake bench:all
|
9
|
-
os:
|
10
|
-
- linux
|
11
|
-
- osx
|
12
|
-
rvm:
|
13
|
-
- 2.3.8
|
14
|
-
- 2.4.5
|
15
|
-
- 2.5.3
|
16
|
-
- 2.6.0
|
17
|
-
- ruby-head
|
18
|
-
|
19
|
-
env:
|
20
|
-
- CC=gcc
|
21
|
-
- CC=clang
|
22
|
-
matrix:
|
23
|
-
allow_failures:
|
24
|
-
- os: osx
|
25
|
-
rvm: ruby-head
|
26
|
-
- os: osx
|
27
|
-
rvm: 2.3.8
|
28
|
-
include:
|
29
|
-
- name: powerpc
|
30
|
-
language: generic
|
31
|
-
before_install: |
|
32
|
-
docker run --rm --privileged multiarch/qemu-user-static:register --reset &&
|
33
|
-
docker build --rm -t ffi-powerpc -f spec/env/Dockerfile.powerpc .
|
34
|
-
script: |
|
35
|
-
docker run --rm -t -v `pwd`:/ffi ffi-powerpc
|
36
|
-
- name: armhf
|
37
|
-
language: generic
|
38
|
-
before_install: |
|
39
|
-
docker run --rm --privileged multiarch/qemu-user-static:register --reset &&
|
40
|
-
docker build --rm -t ffi-armhf -f spec/env/Dockerfile.armhf .
|
41
|
-
script: |
|
42
|
-
docker run --rm -t -v `pwd`:/ffi ffi-armhf
|
43
|
-
after_failure:
|
44
|
-
- "find build -name mkmf.log | xargs cat"
|
data/.yardopts
DELETED