ffi 1.13.1-java → 1.15.1-java

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,119 @@
1
+ rbx.platform.typedef.*addr_t = char
2
+ rbx.platform.typedef.__ULong = uint
3
+ rbx.platform.typedef.__blkcnt_t = long
4
+ rbx.platform.typedef.__blksize_t = int
5
+ rbx.platform.typedef.__clock_t = ulong
6
+ rbx.platform.typedef.__clockid_t = ulong
7
+ rbx.platform.typedef.__cpu_mask = ulong
8
+ rbx.platform.typedef.__dev_t = uint
9
+ rbx.platform.typedef.__fsblkcnt_t = ulong
10
+ rbx.platform.typedef.__fsfilcnt_t = ulong
11
+ rbx.platform.typedef.__gid_t = uint
12
+ rbx.platform.typedef.__id_t = uint
13
+ rbx.platform.typedef.__ino_t = ulong
14
+ rbx.platform.typedef.__int32_t = int
15
+ rbx.platform.typedef.__int64_t = long
16
+ rbx.platform.typedef.__int8_t = char
17
+ rbx.platform.typedef.__int_least32_t = int
18
+ rbx.platform.typedef.__int_least64_t = long
19
+ rbx.platform.typedef.__int_least8_t = char
20
+ rbx.platform.typedef.__intmax_t = long
21
+ rbx.platform.typedef.__intptr_t = long
22
+ rbx.platform.typedef.__key_t = long_long
23
+ rbx.platform.typedef.__loff_t = long_long
24
+ rbx.platform.typedef.__mode_t = uint
25
+ rbx.platform.typedef.__nl_item = int
26
+ rbx.platform.typedef.__nlink_t = ushort
27
+ rbx.platform.typedef.__off_t = long
28
+ rbx.platform.typedef.__pid_t = int
29
+ rbx.platform.typedef.__sigset_t = ulong
30
+ rbx.platform.typedef.__size_t = ulong
31
+ rbx.platform.typedef.__socklen_t = int
32
+ rbx.platform.typedef.__suseconds_t = long
33
+ rbx.platform.typedef.__time_t = long
34
+ rbx.platform.typedef.__timer_t = ulong
35
+ rbx.platform.typedef.__uid_t = uint
36
+ rbx.platform.typedef.__uint32_t = uint
37
+ rbx.platform.typedef.__uint64_t = ulong
38
+ rbx.platform.typedef.__uint8_t = uchar
39
+ rbx.platform.typedef.__uint_least32_t = uint
40
+ rbx.platform.typedef.__uint_least64_t = ulong
41
+ rbx.platform.typedef.__uint_least8_t = uchar
42
+ rbx.platform.typedef.__uintmax_t = ulong
43
+ rbx.platform.typedef.__uintptr_t = ulong
44
+ rbx.platform.typedef.__useconds_t = ulong
45
+ rbx.platform.typedef._fpos64_t = long_long
46
+ rbx.platform.typedef._fpos_t = long
47
+ rbx.platform.typedef._off64_t = long_long
48
+ rbx.platform.typedef._off_t = long
49
+ rbx.platform.typedef.blkcnt_t = long
50
+ rbx.platform.typedef.blksize_t = int
51
+ rbx.platform.typedef.caddr_t = string
52
+ rbx.platform.typedef.clock_t = ulong
53
+ rbx.platform.typedef.clockid_t = ulong
54
+ rbx.platform.typedef.daddr_t = long
55
+ rbx.platform.typedef.dev_t = uint
56
+ rbx.platform.typedef.fd_mask = ulong
57
+ rbx.platform.typedef.fsblkcnt_t = ulong
58
+ rbx.platform.typedef.fsfilcnt_t = ulong
59
+ rbx.platform.typedef.gid_t = uint
60
+ rbx.platform.typedef.id_t = uint
61
+ rbx.platform.typedef.in_addr_t = uint
62
+ rbx.platform.typedef.ino_t = ulong
63
+ rbx.platform.typedef.int32_t = int
64
+ rbx.platform.typedef.int64_t = long
65
+ rbx.platform.typedef.int8_t = char
66
+ rbx.platform.typedef.int_fast16_t = long
67
+ rbx.platform.typedef.int_fast32_t = long
68
+ rbx.platform.typedef.int_fast64_t = long
69
+ rbx.platform.typedef.int_fast8_t = char
70
+ rbx.platform.typedef.int_least32_t = int
71
+ rbx.platform.typedef.int_least64_t = long
72
+ rbx.platform.typedef.int_least8_t = char
73
+ rbx.platform.typedef.intmax_t = long
74
+ rbx.platform.typedef.intptr_t = long
75
+ rbx.platform.typedef.key_t = long_long
76
+ rbx.platform.typedef.loff_t = long_long
77
+ rbx.platform.typedef.mode_t = uint
78
+ rbx.platform.typedef.nlink_t = ushort
79
+ rbx.platform.typedef.off_t = long
80
+ rbx.platform.typedef.pid_t = int
81
+ rbx.platform.typedef.ptrdiff_t = long
82
+ rbx.platform.typedef.register_t = long
83
+ rbx.platform.typedef.rlim_t = ulong
84
+ rbx.platform.typedef.sbintime_t = long
85
+ rbx.platform.typedef.sig_atomic_t = int
86
+ rbx.platform.typedef.sigset_t = ulong
87
+ rbx.platform.typedef.size_t = ulong
88
+ rbx.platform.typedef.socklen_t = int
89
+ rbx.platform.typedef.suseconds_t = long
90
+ rbx.platform.typedef.time_t = long
91
+ rbx.platform.typedef.timer_t = ulong
92
+ rbx.platform.typedef.u_char = uchar
93
+ rbx.platform.typedef.u_int = uint
94
+ rbx.platform.typedef.u_int32_t = uint
95
+ rbx.platform.typedef.u_int64_t = ulong
96
+ rbx.platform.typedef.u_int8_t = uchar
97
+ rbx.platform.typedef.u_long = ulong
98
+ rbx.platform.typedef.u_register_t = ulong
99
+ rbx.platform.typedef.u_short = ushort
100
+ rbx.platform.typedef.uid_t = uint
101
+ rbx.platform.typedef.uint = uint
102
+ rbx.platform.typedef.uint32_t = uint
103
+ rbx.platform.typedef.uint64_t = ulong
104
+ rbx.platform.typedef.uint8_t = uchar
105
+ rbx.platform.typedef.uint_fast16_t = ulong
106
+ rbx.platform.typedef.uint_fast32_t = ulong
107
+ rbx.platform.typedef.uint_fast64_t = ulong
108
+ rbx.platform.typedef.uint_fast8_t = uchar
109
+ rbx.platform.typedef.uint_least32_t = uint
110
+ rbx.platform.typedef.uint_least64_t = ulong
111
+ rbx.platform.typedef.uint_least8_t = uchar
112
+ rbx.platform.typedef.uintmax_t = ulong
113
+ rbx.platform.typedef.uintptr_t = ulong
114
+ rbx.platform.typedef.ulong = ulong
115
+ rbx.platform.typedef.useconds_t = ulong
116
+ rbx.platform.typedef.ushort = ushort
117
+ rbx.platform.typedef.vm_offset_t = ulong
118
+ rbx.platform.typedef.vm_size_t = ulong
119
+ rbx.platform.typedef.wint_t = uint
data/lib/ffi/pointer.rb CHANGED
@@ -52,7 +52,7 @@ module FFI
52
52
 
53
53
  # @param [nil,Numeric] len length of string to return
54
54
  # @return [String]
55
- # Read pointer's contents as a string, or the first +len+ bytes of the
55
+ # Read pointer's contents as a string, or the first +len+ bytes of the
56
56
  # equivalent string if +len+ is not +nil+.
57
57
  def read_string(len=nil)
58
58
  if len
@@ -96,7 +96,7 @@ module FFI
96
96
  # @param [String] str string to write
97
97
  # @param [Numeric] len length of string to return
98
98
  # @return [self]
99
- # Write +str+ in pointer's contents, or first +len+ bytes if
99
+ # Write +str+ in pointer's contents, or first +len+ bytes if
100
100
  # +len+ is not +nil+.
101
101
  def write_string(str, len=nil)
102
102
  len = str.bytesize unless len
@@ -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
@@ -31,16 +31,7 @@
31
31
  #
32
32
 
33
33
  module FFI
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
-
34
+ class VariadicInvoker
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.13.1'
2
+ VERSION = '1.15.1'
3
3
  end
@@ -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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.1
4
+ version: 1.15.1
5
5
  platform: java
6
6
  authors:
7
7
  - Wayne Meissner
@@ -10,26 +10,24 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAkMSIwIAYDVQQDDBl0cmF2
14
- aXMtY2kvREM9ZHVtbXkvREM9b3JnMB4XDTIwMDQwODExMDA0MFoXDTIxMDQwODEx
15
- MDA0MFowJDEiMCAGA1UEAwwZdHJhdmlzLWNpL0RDPWR1bW15L0RDPW9yZzCCASIw
13
+ MIIC/DCCAeSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAkMSIwIAYDVQQDDBl0cmF2
14
+ aXMtY2kvREM9ZHVtbXkvREM9b3JnMB4XDTIxMDUyMjA3MjgxNFoXDTIyMDUyMjA3
15
+ MjgxNFowJDEiMCAGA1UEAwwZdHJhdmlzLWNpL0RDPWR1bW15L0RDPW9yZzCCASIw
16
16
  DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK+5uh+zqCXKho0zXIaLmJD6YDpa
17
17
  l07nJ+PQFcMBYgsKA2ip01THj3DVYwP/va6hYgqPmxEJB3tsEthKnHVHm0dgqqg/
18
18
  gfyDFU0ZfbSYKeNlZQRIdddKPc6dNbmtY2gBWFt6YOZnBccsgJmSUAbh0a9xhVbm
19
19
  qAStn/q7eq9iW9+12AB9HM+QCWrsCAXEHGGNENDAK9HtHwBs4KsneiIQY5rd/Mzs
20
20
  Ii25XXnDUa1NjC4u/mMuJXBpWLw2rEAQkzEFQBZR0W0ehm9Mi4TokhLy/QH8GRaH
21
21
  0KADzpk1cxuOrEBIhy6ISQs7g/tI6YTePAmDMTsodov02FZCcMpoxOifpFkCAwEA
22
- AaN5MHcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFOTn5ek+QtcI
23
- g+ZglIvRPAPGoXvLMB4GA1UdEQQXMBWBE3RyYXZpcy1jaUBkdW1teS5vcmcwHgYD
24
- VR0SBBcwFYETdHJhdmlzLWNpQGR1bW15Lm9yZzANBgkqhkiG9w0BAQsFAAOCAQEA
25
- Xuaj6r4QXrQwDdrmT2sPgWiS5/CRRiSwyWsE1jfM0q5spzuKRIy+vSfmj6isScGf
26
- vT7nwXus+3IcISSdfUddGqf/L54z6U9dVc+V5SH+QuptDRPgQ+fPJFKn8uFARJDU
27
- 9qNNSKpyoXXHksouuRV4dXVYRChfhLiavXaR0jNmi6qgTsSSvyKD2aObyVdVUzxr
28
- Umpavc3v5BbquwF9DlKeHZwU/qP0ynCZg/Z9CFa18e5JfyBSFXHXDA0YXE6+b4Dh
29
- +QvsIa+rEKMYbn0IActnL2SCNlGcttHDcH0AkctmwmAN2r6LTInUBCJoahaIeIXU
30
- RE1H1QyCW3SV93CTTKaR2A==
22
+ AaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFOTn5ek+QtcI
23
+ g+ZglIvRPAPGoXvLMA0GCSqGSIb3DQEBCwUAA4IBAQCkYZdWhRDXD2i1x+i9ldUt
24
+ seNbE+9n742DLgTeQoGyrGO8qabcfM/DBC5iohpFfXa6tJ/ufT2G4xwJq9CVgkY9
25
+ JQWZfxrqzRwY69Rq7MA5lAJ9/HpzkjEiZjPO0jYEhy7iznnhWCzmUFFO9++hH5Mj
26
+ SviDbWEcg72gtdu53KTk+dlWFRMK/zVXX2LsxdJ8+oL/HrPUKIPaMuvaPiOxZ85i
27
+ 6k/UaTHptue0Rj8i8Xv3VmPvYrk3LacY/rmUvJAv+rrd5vBxYI8HZ+VPZD+IcLVL
28
+ bF2Y4mTGMgJ2+MB9E838+Rh6U7sDsKfP5d9102VfpDaueM4jxBHxeY7g/UIyYS/1
31
29
  -----END CERTIFICATE-----
32
- date: 2020-06-09 00:00:00.000000000 Z
30
+ date: 2021-05-22 00:00:00.000000000 Z
33
31
  dependencies:
34
32
  - !ruby/object:Gem::Dependency
35
33
  name: rake
@@ -107,12 +105,6 @@ executables: []
107
105
  extensions: []
108
106
  extra_rdoc_files: []
109
107
  files:
110
- - ".appveyor.yml"
111
- - ".github/workflows/ci.yml"
112
- - ".gitignore"
113
- - ".gitmodules"
114
- - ".travis.yml"
115
- - ".yardopts"
116
108
  - CHANGELOG.md
117
109
  - COPYING
118
110
  - Gemfile
@@ -122,6 +114,7 @@ files:
122
114
  - Rakefile
123
115
  - ffi.gemspec
124
116
  - lib/ffi.rb
117
+ - lib/ffi/abstract_memory.rb
125
118
  - lib/ffi/autopointer.rb
126
119
  - lib/ffi/buffer.rb
127
120
  - lib/ffi/callback.rb
@@ -134,9 +127,11 @@ files:
134
127
  - lib/ffi/managedstruct.rb
135
128
  - lib/ffi/memorypointer.rb
136
129
  - lib/ffi/platform.rb
130
+ - lib/ffi/platform/aarch64-darwin/types.conf
137
131
  - lib/ffi/platform/aarch64-freebsd/types.conf
138
132
  - lib/ffi/platform/aarch64-freebsd12/types.conf
139
133
  - lib/ffi/platform/aarch64-linux/types.conf
134
+ - lib/ffi/platform/aarch64-openbsd/types.conf
140
135
  - lib/ffi/platform/arm-freebsd/types.conf
141
136
  - lib/ffi/platform/arm-freebsd12/types.conf
142
137
  - lib/ffi/platform/arm-linux/types.conf
@@ -164,6 +159,8 @@ files:
164
159
  - lib/ffi/platform/powerpc-linux/types.conf
165
160
  - lib/ffi/platform/powerpc-openbsd/types.conf
166
161
  - lib/ffi/platform/powerpc64-linux/types.conf
162
+ - lib/ffi/platform/powerpc64le-linux/types.conf
163
+ - lib/ffi/platform/riscv64-linux/types.conf
167
164
  - lib/ffi/platform/s390-linux/types.conf
168
165
  - lib/ffi/platform/s390x-linux/types.conf
169
166
  - lib/ffi/platform/sparc-linux/types.conf
@@ -176,7 +173,9 @@ files:
176
173
  - lib/ffi/platform/x86_64-dragonflybsd/types.conf
177
174
  - lib/ffi/platform/x86_64-freebsd/types.conf
178
175
  - lib/ffi/platform/x86_64-freebsd12/types.conf
176
+ - lib/ffi/platform/x86_64-haiku/types.conf
179
177
  - lib/ffi/platform/x86_64-linux/types.conf
178
+ - lib/ffi/platform/x86_64-msys/types.conf
180
179
  - lib/ffi/platform/x86_64-netbsd/types.conf
181
180
  - lib/ffi/platform/x86_64-openbsd/types.conf
182
181
  - lib/ffi/platform/x86_64-solaris/types.conf
@@ -195,6 +194,7 @@ files:
195
194
  - lib/ffi/union.rb
196
195
  - lib/ffi/variadic.rb
197
196
  - lib/ffi/version.rb
197
+ - rakelib/ffi_gem_helper.rb
198
198
  - samples/getlogin.rb
199
199
  - samples/getpid.rb
200
200
  - samples/gettimeofday.rb
@@ -229,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  - !ruby/object:Gem::Version
230
230
  version: '0'
231
231
  requirements: []
232
- rubygems_version: 3.1.2
232
+ rubygems_version: 3.2.3
233
233
  signing_key:
234
234
  specification_version: 4
235
235
  summary: Ruby FFI
metadata.gz.sig CHANGED
Binary file
data/.appveyor.yml DELETED
@@ -1,30 +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
- # Update to libffi-3.3 since Appveyor version fails on LongDouble specs
14
- - ridk exec pacman --sync --refresh --needed --noconfirm mingw-w64-x86_64-libffi mingw-w64-i686-libffi
15
- build: off
16
- build_script:
17
- - bundle exec rake libffi compile -- %EXTCONFOPTS% || bundle exec rake compile -- %EXTCONFOPTS%
18
- test_script:
19
- - bundle exec rake test
20
- - bundle exec rake types_conf && git --no-pager diff
21
- environment:
22
- matrix:
23
- - RUBYVER: "head-x64"
24
- EXTCONFOPTS: "--disable-system-libffi"
25
- - RUBYVER: 24
26
- EXTCONFOPTS: "--disable-system-libffi"
27
- - RUBYVER: 25-x64
28
- EXTCONFOPTS: "--enable-system-libffi"
29
- - RUBYVER: 26
30
- EXTCONFOPTS: "--enable-system-libffi"
@@ -1,64 +0,0 @@
1
- name: CI
2
- on: [push, pull_request]
3
- jobs:
4
- system-libffi:
5
- # Run on latest MRI with explicit selection of system or builtin libffi
6
- strategy:
7
- fail-fast: false
8
- matrix:
9
- os: [ ubuntu, macos, windows ]
10
- extconfopts: [ --disable-system-libffi, --enable-system-libffi ]
11
- runs-on: ${{ matrix.os }}-latest
12
- steps:
13
- - uses: actions/checkout@v2
14
- - uses: ruby/setup-ruby@v1
15
- with:
16
- ruby-version: 2.7
17
-
18
- - run: brew install automake libffi pkg-config
19
- if: matrix.os == 'macos'
20
- - run: ridk exec pacman --sync --refresh --needed --noconfirm mingw-w64-x86_64-libffi
21
- if: matrix.os == 'windows' && matrix.extconfopts == '--enable-system-libffi'
22
-
23
- - run: bundle install
24
- - run: bundle exec rake libffi
25
- - run: bundle exec rake compile -- ${{ matrix.extconfopts }}
26
- env:
27
- # work around misconfiguration of libffi on MacOS with homebrew
28
- PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }}:/usr/local/opt/libffi/lib/pkgconfig
29
- - run: bundle exec rake test
30
- - run: bundle exec rake types_conf && git --no-pager diff
31
-
32
- specs:
33
- # Run all specs on all ruby implementations
34
- # Use automatic libffi selection on MRI
35
- strategy:
36
- fail-fast: false
37
- matrix:
38
- os: [ ubuntu, macos, windows ]
39
- ruby: [ 2.3, 2.4, 2.5, 2.6, 2.7, ruby-head, truffleruby-head ]
40
- exclude:
41
- - os: windows
42
- ruby: truffleruby-head
43
- - os: windows
44
- ruby: 2.3 # compilation fails
45
- runs-on: ${{ matrix.os }}-latest
46
- steps:
47
- - uses: actions/checkout@v2
48
- - uses: ruby/setup-ruby@v1
49
- with:
50
- ruby-version: ${{ matrix.ruby }}
51
-
52
- - run: brew install automake
53
- if: matrix.os == 'macos'
54
-
55
- - run: bundle install
56
- - run: bundle exec rake libffi
57
- - run: bundle exec rake compile
58
-
59
- - run: bundle exec rake test
60
-
61
- - run: bundle exec rake bench:all
62
- if: matrix.ruby != 'truffleruby-head'
63
- env:
64
- ITER: 10