ffi 1.12.1-x64-mingw32 → 1.14.1-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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