expressir 2.4.28 → 2.4.29
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/.github/scripts/test_installed_gem.rb +5 -0
- data/.github/workflows/native-gems.yml +8 -6
- data/expressir.gemspec +5 -0
- data/lib/expressir/express/core.rb +13 -2
- data/lib/expressir/version.rb +1 -1
- data/rakelib/native.rake +5 -32
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b184252cfd74dc73c8b656d0845145da64c9b895d24228f5478b35dad5b0b257
|
|
4
|
+
data.tar.gz: 100a50bd158b0ef4884171572f01e266edb334baf253e463b47ff6c8fe579321
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fb99828d597bd207b51619f71ef1085ace7da40950d43573df25b704f1afb3381d444dbbff85f516a16161eb783b769640cd5c16d273543866118e755f268325
|
|
7
|
+
data.tar.gz: 4ae05fe7e5dec49cdb04027545f62fe3fb25f240ed430eb6eff8e18bc612d3bb76cfbbe0a044d80395089c5535ed3d323a87b2f97c94fd801830dfe3cabf13da
|
|
@@ -26,4 +26,9 @@ sc = Expressir::Express::Parser.from_exp(src).schemas.first.subtype_constraints.
|
|
|
26
26
|
abort "FAIL: subtype constraint ABSTRACT body (#462)" unless sc&.abstract == true
|
|
27
27
|
puts "#462 form: ok"
|
|
28
28
|
|
|
29
|
+
# The platform gems force-build the Rust compiled-set writer; a leg that
|
|
30
|
+
# shipped a non-loadable expressir_core would otherwise pass this smoke.
|
|
31
|
+
abort "FAIL: core_set_available is false" unless Expressir::Express::Parser.core_set_available?
|
|
32
|
+
puts "compiled-set core: ok"
|
|
33
|
+
|
|
29
34
|
puts "SMOKE OK"
|
|
@@ -52,12 +52,14 @@ jobs:
|
|
|
52
52
|
EXPRESSIR_CORE_FORCE: "1"
|
|
53
53
|
with:
|
|
54
54
|
platform: ${{ matrix.ruby-platform }}
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
|
|
55
|
+
# Must include the dock image's HOST ruby (4.0): when the
|
|
56
|
+
# running ruby is absent from this list, rake-compiler adds an
|
|
57
|
+
# extra leg for it built from the host toolchain's RbConfig,
|
|
58
|
+
# and rb-sys correctly refuses to generate bindings against a
|
|
59
|
+
# different target_os. Current rb-sys-dock images ship cross
|
|
60
|
+
# rubies for 3.2-4.0 (parsanol-ruby's identical cross-gem
|
|
61
|
+
# setup builds a working x86_64-mingw-ucrt ruby-4.0.2 leg).
|
|
62
|
+
ruby-versions: "3.2,3.3,3.4,4.0"
|
|
61
63
|
|
|
62
64
|
- uses: actions/upload-artifact@v4
|
|
63
65
|
with:
|
data/expressir.gemspec
CHANGED
|
@@ -24,6 +24,11 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.metadata["rubygems_mfa_required"] = "true"
|
|
25
25
|
|
|
26
26
|
spec.required_ruby_version = Gem::Requirement.new(">= 3.2.0")
|
|
27
|
+
# Source gem builds on the ruby platform; declaring it keeps
|
|
28
|
+
# rake-compiler's `gem` task from rebuilding the extension for the
|
|
29
|
+
# host ruby during cross builds (rb-sys then sees a windows
|
|
30
|
+
# CARGO_BUILD_TARGET with linux headers and refuses).
|
|
31
|
+
spec.platform = Gem::Platform::RUBY
|
|
27
32
|
|
|
28
33
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
29
34
|
`git ls-files -z`.split("\x0").reject do |f|
|
|
@@ -13,10 +13,21 @@ module Expressir
|
|
|
13
13
|
true
|
|
14
14
|
rescue LoadError
|
|
15
15
|
begin
|
|
16
|
-
|
|
16
|
+
# Platform gems carry the fat-binary layout
|
|
17
|
+
# (lib/expressir/<major.minor>/expressir_core.so); rubygems
|
|
18
|
+
# does not resolve versioned dirs under a nested require path,
|
|
19
|
+
# so the version segment is explicit - same contract as
|
|
20
|
+
# parsanol's loader.
|
|
21
|
+
ruby_version = RUBY_VERSION.split(".").take(2).join(".")
|
|
22
|
+
require "expressir/#{ruby_version}/expressir_core"
|
|
17
23
|
true
|
|
18
24
|
rescue LoadError
|
|
19
|
-
|
|
25
|
+
begin
|
|
26
|
+
require_relative "../../../ext/expressir_core/expressir_core"
|
|
27
|
+
true
|
|
28
|
+
rescue LoadError
|
|
29
|
+
false
|
|
30
|
+
end
|
|
20
31
|
end
|
|
21
32
|
end
|
|
22
33
|
|
data/lib/expressir/version.rb
CHANGED
data/rakelib/native.rake
CHANGED
|
@@ -7,43 +7,16 @@
|
|
|
7
7
|
# artifact in lib/expressir/, which core.rb's first require finds.
|
|
8
8
|
begin
|
|
9
9
|
require "rb_sys/extensiontask"
|
|
10
|
-
require "rb_sys/toolchain_info"
|
|
11
10
|
|
|
12
11
|
gemspec = Gem::Specification.load("expressir.gemspec")
|
|
13
12
|
|
|
14
13
|
RbSys::ExtensionTask.new("expressir_core", gemspec) do |ext|
|
|
15
14
|
ext.lib_dir = "lib/expressir"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
triple = begin
|
|
22
|
-
RbSys::ToolchainInfo::DATA.fetch(plat).fetch("rust-target")
|
|
23
|
-
rescue KeyError
|
|
24
|
-
{ "arm-linux-musl" => "arm-unknown-linux-musleabihf" }.fetch(plat)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# rb-sys's cargo build already ran for the cross target; stage the
|
|
28
|
-
# artifact from the tree (rake-compiler stages callback-added files).
|
|
29
|
-
# rb_sys uses a per-package target dir unless the crate is a
|
|
30
|
-
# workspace member (then the root target/ holds artifacts) — glob
|
|
31
|
-
# both layouts.
|
|
32
|
-
art = Dir["target/#{triple}/release/expressir_core.{so,dylib,dll}",
|
|
33
|
-
"target/#{triple}/release/libexpressir_core.{so,dylib}",
|
|
34
|
-
"ext/expressir_core/target/#{triple}/release/expressir_core.{so,dylib,dll}",
|
|
35
|
-
"ext/expressir_core/target/#{triple}/release/libexpressir_core.{so,dylib}"].first
|
|
36
|
-
raise "binding artifact not found for #{plat} (#{triple})" unless art
|
|
37
|
-
|
|
38
|
-
# core.rb requires "expressir/expressir_core", so the staged file
|
|
39
|
-
# must sit at the canonical Ruby extension path/name — cargo's
|
|
40
|
-
# lib- prefixed or .dll/.dylib-suffixed names are renamed to
|
|
41
|
-
# expressir_core.so (Ruby's require accepts .so on every target:
|
|
42
|
-
# DLEXT on linux/windows, DLEXT2 on darwin).
|
|
43
|
-
dest = "lib/expressir/expressir_core.so"
|
|
44
|
-
cp art, dest
|
|
45
|
-
spec.files << dest
|
|
46
|
-
end
|
|
15
|
+
# rb-sys stages the cross-built artifact itself; a manual cp into
|
|
16
|
+
# lib_dir here would claim the file rake-compiler's own
|
|
17
|
+
# copy:expressir_core:<host-platform> task owns, and the cross gem's
|
|
18
|
+
# dependency chain would then force a host-ruby build (rb-sys
|
|
19
|
+
# refuses windows bindings from linux headers).
|
|
47
20
|
end
|
|
48
21
|
rescue LoadError
|
|
49
22
|
# rake-compiler/rb_sys not installed (consumer checkouts); the native
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: expressir
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.4.
|
|
4
|
+
version: 2.4.29
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|