ffi 1.14.2 → 1.15.4

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.
@@ -0,0 +1,104 @@
1
+ rbx.platform.typedef.*__caddr_t = char
2
+ rbx.platform.typedef.*__qaddr_t = long
3
+ rbx.platform.typedef.__blkcnt64_t = long
4
+ rbx.platform.typedef.__blkcnt_t = long
5
+ rbx.platform.typedef.__blksize_t = int
6
+ rbx.platform.typedef.__clock_t = long
7
+ rbx.platform.typedef.__clockid_t = int
8
+ rbx.platform.typedef.__daddr_t = int
9
+ rbx.platform.typedef.__dev_t = ulong
10
+ rbx.platform.typedef.__fd_mask = long
11
+ rbx.platform.typedef.__fsblkcnt64_t = ulong
12
+ rbx.platform.typedef.__fsblkcnt_t = ulong
13
+ rbx.platform.typedef.__fsfilcnt64_t = ulong
14
+ rbx.platform.typedef.__fsfilcnt_t = ulong
15
+ rbx.platform.typedef.__fsword_t = long
16
+ rbx.platform.typedef.__gid_t = uint
17
+ rbx.platform.typedef.__id_t = uint
18
+ rbx.platform.typedef.__ino64_t = ulong
19
+ rbx.platform.typedef.__ino_t = ulong
20
+ rbx.platform.typedef.__int16_t = short
21
+ rbx.platform.typedef.__int32_t = int
22
+ rbx.platform.typedef.__int64_t = long
23
+ rbx.platform.typedef.__int8_t = char
24
+ rbx.platform.typedef.__intptr_t = long
25
+ rbx.platform.typedef.__key_t = int
26
+ rbx.platform.typedef.__loff_t = long
27
+ rbx.platform.typedef.__mode_t = uint
28
+ rbx.platform.typedef.__nlink_t = uint
29
+ rbx.platform.typedef.__off64_t = long
30
+ rbx.platform.typedef.__off_t = long
31
+ rbx.platform.typedef.__pid_t = int
32
+ rbx.platform.typedef.__priority_which_t = int
33
+ rbx.platform.typedef.__quad_t = long
34
+ rbx.platform.typedef.__rlim64_t = ulong
35
+ rbx.platform.typedef.__rlim_t = ulong
36
+ rbx.platform.typedef.__rlimit_resource_t = int
37
+ rbx.platform.typedef.__rusage_who_t = int
38
+ rbx.platform.typedef.__sig_atomic_t = int
39
+ rbx.platform.typedef.__socklen_t = uint
40
+ rbx.platform.typedef.__ssize_t = long
41
+ rbx.platform.typedef.__suseconds_t = long
42
+ rbx.platform.typedef.__syscall_slong_t = long
43
+ rbx.platform.typedef.__syscall_ulong_t = ulong
44
+ rbx.platform.typedef.__time_t = long
45
+ rbx.platform.typedef.__timer_t = pointer
46
+ rbx.platform.typedef.__u_char = uchar
47
+ rbx.platform.typedef.__u_int = uint
48
+ rbx.platform.typedef.__u_long = ulong
49
+ rbx.platform.typedef.__u_quad_t = ulong
50
+ rbx.platform.typedef.__u_short = ushort
51
+ rbx.platform.typedef.__uid_t = uint
52
+ rbx.platform.typedef.__uint16_t = ushort
53
+ rbx.platform.typedef.__uint32_t = uint
54
+ rbx.platform.typedef.__uint64_t = ulong
55
+ rbx.platform.typedef.__uint8_t = uchar
56
+ rbx.platform.typedef.__useconds_t = uint
57
+ rbx.platform.typedef.blkcnt_t = long
58
+ rbx.platform.typedef.blksize_t = int
59
+ rbx.platform.typedef.clock_t = long
60
+ rbx.platform.typedef.clockid_t = int
61
+ rbx.platform.typedef.daddr_t = int
62
+ rbx.platform.typedef.dev_t = ulong
63
+ rbx.platform.typedef.fd_mask = long
64
+ rbx.platform.typedef.fsblkcnt_t = ulong
65
+ rbx.platform.typedef.fsfilcnt_t = ulong
66
+ rbx.platform.typedef.gid_t = uint
67
+ rbx.platform.typedef.id_t = uint
68
+ rbx.platform.typedef.ino_t = ulong
69
+ rbx.platform.typedef.int16_t = short
70
+ rbx.platform.typedef.int32_t = int
71
+ rbx.platform.typedef.int64_t = long
72
+ rbx.platform.typedef.int8_t = char
73
+ rbx.platform.typedef.key_t = int
74
+ rbx.platform.typedef.loff_t = long
75
+ rbx.platform.typedef.mode_t = uint
76
+ rbx.platform.typedef.nlink_t = uint
77
+ rbx.platform.typedef.off_t = long
78
+ rbx.platform.typedef.pid_t = int
79
+ rbx.platform.typedef.pthread_key_t = uint
80
+ rbx.platform.typedef.pthread_once_t = int
81
+ rbx.platform.typedef.pthread_t = ulong
82
+ rbx.platform.typedef.quad_t = long
83
+ rbx.platform.typedef.register_t = long
84
+ rbx.platform.typedef.rlim_t = ulong
85
+ rbx.platform.typedef.sa_family_t = ushort
86
+ rbx.platform.typedef.size_t = ulong
87
+ rbx.platform.typedef.socklen_t = uint
88
+ rbx.platform.typedef.ssize_t = long
89
+ rbx.platform.typedef.suseconds_t = long
90
+ rbx.platform.typedef.time_t = long
91
+ rbx.platform.typedef.timer_t = pointer
92
+ rbx.platform.typedef.u_char = uchar
93
+ rbx.platform.typedef.u_int = uint
94
+ rbx.platform.typedef.u_int16_t = ushort
95
+ rbx.platform.typedef.u_int32_t = uint
96
+ rbx.platform.typedef.u_int64_t = ulong
97
+ rbx.platform.typedef.u_int8_t = uchar
98
+ rbx.platform.typedef.u_long = ulong
99
+ rbx.platform.typedef.u_quad_t = ulong
100
+ rbx.platform.typedef.u_short = ushort
101
+ rbx.platform.typedef.uid_t = uint
102
+ rbx.platform.typedef.uint = uint
103
+ rbx.platform.typedef.ulong = ulong
104
+ rbx.platform.typedef.ushort = ushort
data/lib/ffi/platform.rb CHANGED
@@ -132,11 +132,8 @@ module FFI
132
132
  end
133
133
 
134
134
  LIBC = if IS_WINDOWS
135
- if RbConfig::CONFIG['host_os'] =~ /mingw/i
136
- RbConfig::CONFIG['RUBY_SO_NAME'].split('-')[-2] + '.dll'
137
- else
138
- "ucrtbase.dll"
139
- end
135
+ crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase'
136
+ "#{crtname}.dll"
140
137
  elsif IS_GNU
141
138
  GNU_LIBC
142
139
  elsif OS == 'cygwin'
@@ -124,7 +124,8 @@ module FFI
124
124
  f.puts "\n\treturn 0;\n}"
125
125
  f.flush
126
126
 
127
- output = `gcc #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1`
127
+ cc = ENV['CC'] || 'gcc'
128
+ output = `#{cc} #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1`
128
129
 
129
130
  unless $?.success? then
130
131
  output = output.split("\n").map { |l| "\t#{l}" }.join "\n"
@@ -82,7 +82,8 @@ module FFI
82
82
  f.puts "\n return 0;\n}"
83
83
  f.flush
84
84
 
85
- output = `gcc #{options[:cppflags]} #{options[:cflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1`
85
+ cc = ENV['CC'] || 'gcc'
86
+ output = `#{cc} #{options[:cppflags]} #{options[:cflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1`
86
87
 
87
88
  unless $?.success? then
88
89
  @found = false
data/lib/ffi/variadic.rb CHANGED
@@ -32,15 +32,6 @@
32
32
 
33
33
  module FFI
34
34
  class VariadicInvoker
35
- def init(arg_types, type_map)
36
- @fixed = Array.new
37
- @type_map = type_map
38
- arg_types.each_with_index do |type, i|
39
- @fixed << type unless type == Type::VARARGS
40
- end
41
- end
42
-
43
-
44
35
  def call(*args, &block)
45
36
  param_types = Array.new(@fixed)
46
37
  param_values = Array.new
data/lib/ffi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module FFI
2
- VERSION = '1.14.2'
2
+ VERSION = '1.15.4'
3
3
  end
data/lib/ffi.rb CHANGED
@@ -1,5 +1,4 @@
1
- if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
2
- Object.send(:remove_const, :FFI) if defined?(::FFI)
1
+ if RUBY_ENGINE == 'ruby'
3
2
  begin
4
3
  require RUBY_VERSION.split('.')[0, 2].join('.') + '/ffi_c'
5
4
  rescue Exception
@@ -8,7 +7,7 @@ if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
8
7
 
9
8
  require 'ffi/ffi'
10
9
 
11
- elsif RUBY_ENGINE == 'jruby' && (RUBY_ENGINE_VERSION.split('.').map(&:to_i) <=> [9, 3]) >= 0
10
+ elsif RUBY_ENGINE == 'jruby' && (RUBY_ENGINE_VERSION.split('.').map(&:to_i) <=> [9, 2, 20]) >= 0
12
11
  JRuby::Util.load_ext("org.jruby.ext.ffi.FFIService")
13
12
  require 'ffi/ffi'
14
13
 
@@ -0,0 +1,65 @@
1
+ require 'bundler'
2
+ require 'bundler/gem_helper'
3
+
4
+ class FfiGemHelper < Bundler::GemHelper
5
+ attr_accessor :cross_platforms
6
+
7
+ def install
8
+ super
9
+
10
+ task "release:guard_clean" => ["release:update_history"]
11
+
12
+ task "release:update_history" do
13
+ update_history
14
+ end
15
+
16
+ task "release:rubygem_push" => ["gem:windows", "gem:java"]
17
+ end
18
+
19
+ def hfile
20
+ "CHANGELOG.md"
21
+ end
22
+
23
+ def headline
24
+ '([^\w]*)(\d+\.\d+\.\d+(?:\.\w+)?)([^\w]+)([2Y][0Y][0-9Y][0-9Y]-[0-1M][0-9M]-[0-3D][0-9D])([^\w]*|$)'
25
+ end
26
+
27
+ def reldate
28
+ Time.now.strftime("%Y-%m-%d")
29
+ end
30
+
31
+ def update_history
32
+ hin = File.read(hfile)
33
+ hout = hin.sub(/#{headline}/) do
34
+ raise "#{hfile} isn't up-to-date for version #{version}" unless $2==version.to_s
35
+ $1 + $2 + $3 + reldate + $5
36
+ end
37
+ if hout != hin
38
+ Bundler.ui.confirm "Updating #{hfile} for release."
39
+ File.write(hfile, hout)
40
+ Rake::FileUtilsExt.sh "git", "commit", hfile, "-m", "Update release date in #{hfile}"
41
+ end
42
+ end
43
+
44
+ def tag_version
45
+ Bundler.ui.confirm "Tag release with annotation:"
46
+ m = File.read(hfile).match(/(?<annotation>#{headline}.*?)#{headline}/m) || raise("Unable to find release notes in #{hfile}")
47
+ Bundler.ui.info(m[:annotation].gsub(/^/, " "))
48
+ IO.popen(["git", "tag", "--file=-", version_tag], "w") do |fd|
49
+ fd.write m[:annotation]
50
+ end
51
+ yield if block_given?
52
+ rescue
53
+ Bundler.ui.error "Untagging #{version_tag} due to error."
54
+ sh_with_code "git tag -d #{version_tag}"
55
+ raise
56
+ end
57
+
58
+ def rubygem_push(path)
59
+ cross_platforms.each do |ruby_platform|
60
+ super(path.gsub(/\.gem\z/, "-#{ruby_platform}.gem"))
61
+ end
62
+ super(path.gsub(/\.gem\z/, "-java.gem"))
63
+ super(path)
64
+ end
65
+ end
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.14.2
4
+ version: 1.15.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wayne Meissner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-21 00:00:00.000000000 Z
11
+ date: 2021-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.14.1
69
- - !ruby/object:Gem::Dependency
70
- name: rubygems-tasks
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.2.4
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.2.4
83
69
  description: Ruby FFI library
84
70
  email: wmeissner@gmail.com
85
71
  executables: []
@@ -613,6 +599,8 @@ files:
613
599
  - lib/ffi/platform/powerpc-linux/types.conf
614
600
  - lib/ffi/platform/powerpc-openbsd/types.conf
615
601
  - lib/ffi/platform/powerpc64-linux/types.conf
602
+ - lib/ffi/platform/powerpc64le-linux/types.conf
603
+ - lib/ffi/platform/riscv64-linux/types.conf
616
604
  - lib/ffi/platform/s390-linux/types.conf
617
605
  - lib/ffi/platform/s390x-linux/types.conf
618
606
  - lib/ffi/platform/sparc-linux/types.conf
@@ -646,6 +634,7 @@ files:
646
634
  - lib/ffi/union.rb
647
635
  - lib/ffi/variadic.rb
648
636
  - lib/ffi/version.rb
637
+ - rakelib/ffi_gem_helper.rb
649
638
  - samples/getlogin.rb
650
639
  - samples/getpid.rb
651
640
  - samples/gettimeofday.rb
@@ -680,7 +669,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
680
669
  - !ruby/object:Gem::Version
681
670
  version: '0'
682
671
  requirements: []
683
- rubygems_version: 3.1.4
672
+ rubygems_version: 3.2.3
684
673
  signing_key:
685
674
  specification_version: 4
686
675
  summary: Ruby FFI