tebako-runtime 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tebako-runtime/pass-through/ffi-platform-stub.rb +102 -0
- data/lib/tebako-runtime/version.rb +1 -1
- data/lib/tebako-runtime.rb +30 -6
- data/tebako-runtime.gemspec +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 472fccda8a91bb1aee5a55ea9c61b9d2a18461ec8d825a2b7184bc69cd557dd9
|
4
|
+
data.tar.gz: 95e7140e5ebbbaf85badedcad10298b4ec0feb538b38989dbb9348c47eff24ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2976dc28c3793366ccc132ff020a997fc7a8c7636ee5993c6a4d9bc984d6f3dc0b7ad21aef1daff56459c9df3848a00250d6d1f376264817005b1593e51fb4f
|
7
|
+
data.tar.gz: b4d8e87877ae1526a98d90fe8bb948ec6f1f6d547dd4d07c573a0e89acfb33dd83db6e4ca4dfb66642c5924664e6bf0b61a6fc1ab1a0aa4faf2d089ccae3658c
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (c) 2024 [Ribose Inc](https://www.ribose.com).
|
4
|
+
# All rights reserved.
|
5
|
+
# This file is a part of tebako
|
6
|
+
#
|
7
|
+
# Redistribution and use in source and binary forms, with or without
|
8
|
+
# modification, are permitted provided that the following conditions
|
9
|
+
# are met:
|
10
|
+
# 1. Redistributions of source code must retain the above copyright
|
11
|
+
# notice, this list of conditions and the following disclaimer.
|
12
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
15
|
+
#
|
16
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
18
|
+
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
|
20
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
21
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
22
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
23
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
24
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
25
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
26
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
module FFI
|
29
|
+
module Platform
|
30
|
+
ARCH = case RbConfig::CONFIG["host_cpu"].downcase
|
31
|
+
when /amd64|x86_64|x64/
|
32
|
+
"x86_64"
|
33
|
+
when /i\d86|x86|i86pc/
|
34
|
+
"i386"
|
35
|
+
when /ppc64|powerpc64/
|
36
|
+
"powerpc64"
|
37
|
+
when /ppc|powerpc/
|
38
|
+
"powerpc"
|
39
|
+
when /sparcv9|sparc64/
|
40
|
+
"sparcv9"
|
41
|
+
when /arm64|aarch64/ # MacOS calls it "arm64", other operating systems "aarch64"
|
42
|
+
"aarch64"
|
43
|
+
when /^arm/
|
44
|
+
if OS == "darwin" # Ruby before 3.0 reports "arm" instead of "arm64" as host_cpu on darwin
|
45
|
+
"aarch64"
|
46
|
+
else
|
47
|
+
"arm"
|
48
|
+
end
|
49
|
+
else
|
50
|
+
RbConfig::CONFIG["host_cpu"].downcase
|
51
|
+
end
|
52
|
+
|
53
|
+
OS =
|
54
|
+
case RbConfig::CONFIG["host_os"].downcase
|
55
|
+
when /linux/
|
56
|
+
"linux"
|
57
|
+
when /darwin/
|
58
|
+
"darwin"
|
59
|
+
when /freebsd/
|
60
|
+
"freebsd"
|
61
|
+
when /netbsd/
|
62
|
+
"netbsd"
|
63
|
+
when /openbsd/
|
64
|
+
"openbsd"
|
65
|
+
when /dragonfly/
|
66
|
+
"dragonflybsd"
|
67
|
+
when /sunos|solaris/
|
68
|
+
"solaris"
|
69
|
+
when /mingw|mswin/
|
70
|
+
"windows"
|
71
|
+
else
|
72
|
+
RbConfig::CONFIG["host_os"].downcase
|
73
|
+
end
|
74
|
+
|
75
|
+
LIBPREFIX = case OS
|
76
|
+
when /windows|msys/
|
77
|
+
""
|
78
|
+
when /cygwin/
|
79
|
+
"cyg"
|
80
|
+
else
|
81
|
+
"lib"
|
82
|
+
end
|
83
|
+
|
84
|
+
LIBSUFFIX = case OS
|
85
|
+
when /darwin/
|
86
|
+
"dylib"
|
87
|
+
when /windows|cygwin|msys/
|
88
|
+
"dll"
|
89
|
+
else
|
90
|
+
# Punt and just assume a sane unix (i.e. anything but AIX)
|
91
|
+
# when /linux|bsd|solaris/
|
92
|
+
# "so"
|
93
|
+
"so"
|
94
|
+
end
|
95
|
+
|
96
|
+
PASS_THROUGH = true
|
97
|
+
|
98
|
+
def self.mac?
|
99
|
+
RUBY_PLATFORM =~ /darwin/
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
data/lib/tebako-runtime.rb
CHANGED
@@ -65,6 +65,31 @@ module TebakoRuntime
|
|
65
65
|
puts "Tebako runtime: skipped [#{name}]" if log_enabled && !res_inner
|
66
66
|
log_enabled
|
67
67
|
end
|
68
|
+
|
69
|
+
def self.process_all(name)
|
70
|
+
f1 = process(name, PRE_REQUIRE_MAP, "pre")
|
71
|
+
res = original_require name
|
72
|
+
f2 = process(name, POST_REQUIRE_MAP, "post")
|
73
|
+
|
74
|
+
puts "Tebako runtime: req [#{name}]" unless f1 || f2
|
75
|
+
res
|
76
|
+
end
|
77
|
+
|
78
|
+
# Very special deploy-time patching
|
79
|
+
# It targets ffi-compiler/ffi-compiler2 that use some functions of
|
80
|
+
# deployed ffi to process other gems
|
81
|
+
# THis approach is not compatible with tebako on Windows because ffi
|
82
|
+
# is deployed with (inplib) reference to target tebako package that is
|
83
|
+
# not available at deploy time
|
84
|
+
def self.process_pass_through(name)
|
85
|
+
if name == "ffi" && RUBY_PLATFORM =~ /msys|mingw|cygwin/
|
86
|
+
puts "Replacing ffi ffi-platform-stub" if log_enabled
|
87
|
+
res = original_require "tebako-runtime/pass-through/ffi-platform-stub"
|
88
|
+
else
|
89
|
+
res = original_require name
|
90
|
+
end
|
91
|
+
res
|
92
|
+
end
|
68
93
|
end
|
69
94
|
|
70
95
|
# Some would call it 'monkey patching' but in reality we are adding
|
@@ -72,11 +97,10 @@ end
|
|
72
97
|
module Kernel
|
73
98
|
alias original_require require
|
74
99
|
def require(name)
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
res
|
100
|
+
if ENV["TEBAKO_PASS_THROUGH"]
|
101
|
+
TebakoRuntime.process_pass_through name
|
102
|
+
else
|
103
|
+
TebakoRuntime.process_all name
|
104
|
+
end
|
81
105
|
end
|
82
106
|
end
|
data/tebako-runtime.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tebako-runtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -160,6 +160,7 @@ files:
|
|
160
160
|
- lib/tebako-runtime/adapters/net-http.rb
|
161
161
|
- lib/tebako-runtime/adapters/sassc.rb
|
162
162
|
- lib/tebako-runtime/memfs.rb
|
163
|
+
- lib/tebako-runtime/pass-through/ffi-platform-stub.rb
|
163
164
|
- lib/tebako-runtime/pre/seven-zip.rb
|
164
165
|
- lib/tebako-runtime/string.rb
|
165
166
|
- lib/tebako-runtime/version.rb
|