rcee_precompiled 0.5.0-arm-linux-musl → 0.5.1-arm-linux-musl
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/README.md +26 -5
- data/Rakefile +9 -4
- data/lib/rcee/precompiled/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f881505d13e75c935431e7b3d7fff453c7fcfe006f7b4fadc151c422cbe5ba36
|
4
|
+
data.tar.gz: cd5a553f862089f71ab4f3698515d4e64caf2397287da15391aa354a53d03296
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb8cb68903203205b92670f396fafa0659b4dcebcfd21d051358b99aa2d2be75a7afea9ec9e2e931f1de00ac1a598ee7229e3327ec08673866855b662373ce11
|
7
|
+
data.tar.gz: 7e1e31c11419c5dc5cc3e0247d5e5a05ff1e8340723af33fe4e9aff0ea8e33ce1b270ea81f28538f39fc9c2942bff40bc1ebf9a43306e15b8632aa9ddafcac77
|
data/README.md
CHANGED
@@ -28,13 +28,18 @@ First, we need to add some features to our `Rake::ExtensionTask` in `Rakefile`:
|
|
28
28
|
``` ruby
|
29
29
|
cross_rubies = ["3.3.0", "3.2.0", "3.1.0", "3.0.0"]
|
30
30
|
cross_platforms = [
|
31
|
-
"
|
31
|
+
"aarch64-linux-gnu",
|
32
|
+
"aarch64-linux-musl",
|
33
|
+
"arm-linux-gnu",
|
34
|
+
"arm-linux-musl",
|
35
|
+
"arm64-darwin",
|
32
36
|
"x64-mingw-ucrt",
|
33
|
-
"
|
34
|
-
"
|
35
|
-
"
|
37
|
+
"x64-mingw32",
|
38
|
+
"x86-linux-gnu",
|
39
|
+
"x86-linux-musl",
|
36
40
|
"x86_64-darwin",
|
37
|
-
"
|
41
|
+
"x86_64-linux-gnu",
|
42
|
+
"x86_64-linux-musl",
|
38
43
|
]
|
39
44
|
ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
|
40
45
|
|
@@ -161,6 +166,22 @@ end
|
|
161
166
|
Go ahead and try it! `gem install rcee_precompiled`. If you're on windows, linux, or macos you should get a precompiled version that installs in under a second. Everyone else (hello FreeBSD people!) it'll take a few more seconds to build the vanilla gem's packaged tarball.
|
162
167
|
|
163
168
|
|
169
|
+
### Windows notes
|
170
|
+
|
171
|
+
You may have noticed that the gem for `x64-mingw32` only contains `.../3.0/precompiled.so` and not a shared library for 3.1, 3.2, or 3.3. Conversely, the gem for `x64-mingw-ucrt` does *not* contain 3.0 (but contains 3.1..3.3 inclusive).
|
172
|
+
|
173
|
+
This is because the Windows installer for Ruby switched from `msvcrt` to `ucrt` for the C standard library. Rubies 3.0 and earlier use `msvcrt` but later Rubies use `ucrt`. So if you're on Ruby 3.0 on Windows, bundler will resolve your platform as `x64-mingw32`; but if you're on Ruby 3.1 or later, bundler will resolve your platform as `x64-mingw-ucrt`. See [the rubyinstaller release notes](https://rubyinstaller.org/2021/12/31/rubyinstaller-3.1.0-1-released.html) for more information.
|
174
|
+
|
175
|
+
This is all taken care of for you by `rake-compiler-dock` and there's no additional work necessary to create those specialized native gems. However, you'll see this libc transition in the CI testing matrix in `.github/workflows/precompiled.yml`.
|
176
|
+
|
177
|
+
|
178
|
+
### Linux notes
|
179
|
+
|
180
|
+
On Linux, the default C library for a long time was GNU libc, and so when you see native gem platforms like `x86_64-linux` the _implied_ libc is `gnu`. However, in recent years the `musl` libc project has gotten off the ground in distributions like Alpine. Often, `musl` systems are able to run code compiled on (and for) `gnu` systems; but not always. And in those incompatible cases, users had to work around it or avoid Alpine.
|
181
|
+
|
182
|
+
As of Rubygems 3.3.22, the `gem` and `bundle` tools are able to distinguish platforms by their libc type (e.g., `x86_64-linux-gnu` versus `x86_64-linux-musl`); and `rake-compiler-dock` started to be able to build `musl` native gems as of v1.5.0.
|
183
|
+
|
184
|
+
|
164
185
|
## Testing
|
165
186
|
|
166
187
|
See [.github/workflows/precompiled.yml](../.github/workflows/precompiled.yml)
|
data/Rakefile
CHANGED
@@ -8,17 +8,17 @@ require "rake_compiler_dock"
|
|
8
8
|
|
9
9
|
cross_rubies = ["3.3.0", "3.2.0", "3.1.0", "3.0.0"]
|
10
10
|
cross_platforms = [
|
11
|
-
"aarch64-linux",
|
11
|
+
"aarch64-linux-gnu",
|
12
12
|
"aarch64-linux-musl",
|
13
|
-
"arm-linux",
|
13
|
+
"arm-linux-gnu",
|
14
14
|
"arm-linux-musl",
|
15
15
|
"arm64-darwin",
|
16
16
|
"x64-mingw-ucrt",
|
17
17
|
"x64-mingw32",
|
18
|
-
"x86-linux",
|
18
|
+
"x86-linux-gnu",
|
19
19
|
"x86-linux-musl",
|
20
20
|
"x86_64-darwin",
|
21
|
-
"x86_64-linux",
|
21
|
+
"x86_64-linux-gnu",
|
22
22
|
"x86_64-linux-musl",
|
23
23
|
]
|
24
24
|
ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
|
@@ -42,6 +42,11 @@ Rake::ExtensionTask.new("precompiled", rcee_precompiled_spec) do |ext|
|
|
42
42
|
# remove things not needed for precompiled gems
|
43
43
|
spec.dependencies.reject! { |dep| dep.name == "mini_portile2" }
|
44
44
|
spec.files.reject! { |file| File.fnmatch?("*.tar.gz", file) }
|
45
|
+
|
46
|
+
if spec.platform.os == "linux"
|
47
|
+
# the `-gnu` suffix is not recognized in earlier versions of rubygems
|
48
|
+
spec.required_rubygems_version.concat([">= 3.3.22"])
|
49
|
+
end
|
45
50
|
end
|
46
51
|
end
|
47
52
|
|
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.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: arm-linux-musl
|
6
6
|
authors:
|
7
7
|
- Mike Dalessio
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Part of a project to explain how Ruby C extensions work.
|
14
14
|
email:
|
@@ -52,6 +52,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 3.3.22
|
55
58
|
requirements: []
|
56
59
|
rubygems_version: 3.3.26
|
57
60
|
signing_key:
|