rcee_precompiled 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +13 -5
- data/Rakefile +11 -2
- data/lib/rcee/precompiled/version.rb +1 -1
- data/rcee_precompiled.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75e95371c9254f1e4e13c647e6d9bd9a7bf58969568ca3d0423b32dd2509ddb8
|
4
|
+
data.tar.gz: d1d43c4c1ef4cd9b1b823cc46cc760b8b882d944cbc5cbb8d646533d8405a74a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd010aa61f60be476bab9b8ad1b0e5bf1f2d13f9fd5a4fee50906451f235e2ca015d08e40160b24d5221bd2bf4052b935a58bb1e8619eb1ba3baa5274821dafb
|
7
|
+
data.tar.gz: bdbb4d096318095eaadaf013e0e00b3f7fd3c7100cdec8a25c7d6e26e2ee3341964de504d2fb47563a5cf63cfb50a3fe708bdf8017c3f1658ad4ee31b5d18cd5
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -26,8 +26,16 @@ This is really powerful stuff, and once we assume that we can cross-compile reli
|
|
26
26
|
First, we need to add some features to our `Rake::ExtensionTask` in `Rakefile`:
|
27
27
|
|
28
28
|
``` ruby
|
29
|
-
cross_rubies = ["3.
|
30
|
-
cross_platforms = [
|
29
|
+
cross_rubies = ["3.1.0", "3.0.0", "2.7.0", "2.6.0"]
|
30
|
+
cross_platforms = [
|
31
|
+
"x64-mingw32",
|
32
|
+
"x64-mingw-ucrt",
|
33
|
+
"x86-linux",
|
34
|
+
"x86_64-linux",
|
35
|
+
"aarch64-linux",
|
36
|
+
"x86_64-darwin",
|
37
|
+
"arm64-darwin",
|
38
|
+
]
|
31
39
|
ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
|
32
40
|
|
33
41
|
Rake::ExtensionTask.new("precompiled", rcee_precompiled_spec) do |ext|
|
@@ -120,14 +128,14 @@ We have one more small change we'll need to make to how the extension is require
|
|
120
128
|
lib
|
121
129
|
└── rcee
|
122
130
|
├── precompiled
|
123
|
-
│ ├── 2.5
|
124
|
-
│ │ └── precompiled.so
|
125
131
|
│ ├── 2.6
|
126
132
|
│ │ └── precompiled.so
|
127
133
|
│ ├── 2.7
|
128
134
|
│ │ └── precompiled.so
|
129
135
|
│ ├── 3.0
|
130
136
|
│ │ └── precompiled.so
|
137
|
+
│ ├── 3.1
|
138
|
+
│ │ └── precompiled.so
|
131
139
|
│ └── version.rb
|
132
140
|
└── precompiled.rb
|
133
141
|
```
|
@@ -176,7 +184,7 @@ This strategy isn't perfect. Remember what I said earlier, that a compiled C ext
|
|
176
184
|
- the machine architecture (e.g., x86_64)
|
177
185
|
- the system libraries
|
178
186
|
|
179
|
-
The precompiled strategy mostly takes care of the first two, but there are still edge cases for system libraries. The big gotcha is that linux libc is not the same as linux musl, and we've had to work around this a few times in Nokogiri.
|
187
|
+
The precompiled strategy mostly takes care of the first two, but there are still edge cases for system libraries. The big gotcha is that linux libc is not the same as linux musl, and we've had to work around this a few times in Nokogiri.
|
180
188
|
|
181
189
|
I'm positive that there are more edge cases that will be found as users add more platforms and as more gems start precompiling. I'm willing to bet money that you can break this by setting some Ruby compile-time flags on your system. I'm honestly surprised it works as well as it has. (Worth noting: the `sassc` gem stopped shipping native gems for linux because of the musl incompatibilities.)
|
182
190
|
|
data/Rakefile
CHANGED
@@ -6,8 +6,17 @@ require "rake/testtask"
|
|
6
6
|
require "rake/extensiontask"
|
7
7
|
require "rake_compiler_dock"
|
8
8
|
|
9
|
-
cross_rubies = ["3.
|
10
|
-
cross_platforms = [
|
9
|
+
cross_rubies = ["3.1.0", "3.0.0", "2.7.0", "2.6.0"]
|
10
|
+
cross_platforms = [
|
11
|
+
"aarch64-linux",
|
12
|
+
"arm-linux",
|
13
|
+
"arm64-darwin",
|
14
|
+
"x64-mingw-ucrt",
|
15
|
+
"x64-mingw32",
|
16
|
+
"x86-linux",
|
17
|
+
"x86_64-darwin",
|
18
|
+
"x86_64-linux",
|
19
|
+
]
|
11
20
|
ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
|
12
21
|
|
13
22
|
rcee_precompiled_spec = Bundler.load_gemspec("rcee_precompiled.gemspec")
|
data/rcee_precompiled.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.summary = "Example gem demonstrating a basic C extension."
|
16
16
|
spec.description = "Part of a project to explain how Ruby C extensions work."
|
17
17
|
spec.homepage = "https://github.com/flavorjones/ruby-c-extensions-explained"
|
18
|
-
spec.required_ruby_version = ">= 2.
|
18
|
+
spec.required_ruby_version = ">= 2.6.0"
|
19
19
|
spec.license = "MIT"
|
20
20
|
|
21
21
|
# Specify which files should be added to the gem when it is released.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rcee_precompiled
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Dalessio
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mini_portile2
|
@@ -55,14 +55,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
55
55
|
requirements:
|
56
56
|
- - ">="
|
57
57
|
- !ruby/object:Gem::Version
|
58
|
-
version: 2.
|
58
|
+
version: 2.6.0
|
59
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
requirements: []
|
65
|
-
rubygems_version: 3.
|
65
|
+
rubygems_version: 3.3.5
|
66
66
|
signing_key:
|
67
67
|
specification_version: 4
|
68
68
|
summary: Example gem demonstrating a basic C extension.
|