tebako 0.5.0 → 0.5.1
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/CMakeLists.txt +4 -5
- data/README.adoc +1 -1
- data/exe/tebako +3 -2
- data/exe/tebako-packager +94 -0
- data/lib/tebako/cli.rb +3 -5
- data/lib/tebako/cli_helpers.rb +12 -5
- data/lib/tebako/error.rb +1 -1
- data/lib/tebako/packager/pass1.rb +111 -109
- data/lib/tebako/packager/pass2.rb +306 -308
- data/lib/tebako/packager.rb +17 -77
- data/lib/tebako/version.rb +1 -1
- data/lib/{cli.rb → tebako.rb} +7 -1
- data/tools/.gitattributes +4 -0
- data/tools/.github/workflows/lint.yml +41 -0
- data/tools/README.md +5 -0
- data/tools/ci-scripts/arm-brew-install.sh +43 -0
- data/tools/ci-scripts/arm-brew-setup.sh +33 -0
- data/tools/ci-scripts/level-up.sh +35 -0
- data/tools/ci-scripts/patch-fbthrift.sh +92 -0
- data/tools/ci-scripts/patch-folly.sh +447 -0
- data/tools/ci-scripts/patch-system-includes.sh +59 -0
- data/tools/ci-scripts/x86-brew-install.sh +43 -0
- data/tools/ci-scripts/x86-brew-setup.sh +33 -0
- data/tools/cmake-scripts/def-external-project.cmake +96 -0
- data/tools/cmake-scripts/macos-environment.cmake +116 -0
- data/tools/cmake-scripts/msys-environment.cmake +78 -0
- data/tools/cmake-scripts/setup-openssl.cmake +69 -0
- data/tools/cmake-scripts/version.cmake +162 -0
- data/tools/include/pro-statvfs.h +57 -0
- metadata +22 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '032183c7c687a30c7ae3d9619a05ebddca242795f0f82a675909d8be6172b1b7'
|
4
|
+
data.tar.gz: '08d41f73148e4df92dd8da6500a0e006ead6d88e4896a265019d958945633bf8'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4416ed5d575a79a1d9c3f6d7639bb6430311da5c64aede123bcc63216aea4c2f391f40b4257f11a110a33969c6ae1439277ed688a93774ca2113e65ee9985c1e
|
7
|
+
data.tar.gz: 3116d78993775081a86120b51bac0ea7a21d763a147976cd1838df65447cc8af0f03d8214bb4b5ee15ff5a9a6a65d226cbd336f599b78f1af9e06da838a468ea
|
data/CMakeLists.txt
CHANGED
@@ -201,8 +201,7 @@ set(DEPS_LIB_DIR ${DEPS}/lib)
|
|
201
201
|
set(DEPS_BIN_DIR ${DEPS}/bin)
|
202
202
|
set(DEPS_SBIN_DIR ${DEPS}/sbin)
|
203
203
|
|
204
|
-
set(
|
205
|
-
set(LIB ${CMAKE_CURRENT_SOURCE_DIR}/lib/tebako)
|
204
|
+
set(EXE ${CMAKE_CURRENT_SOURCE_DIR}/exe)
|
206
205
|
|
207
206
|
# Project resources that are used during CMake configuration stage
|
208
207
|
set(DATA_RES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resources)
|
@@ -450,7 +449,7 @@ ExternalProject_Add(${RUBY_PRJ}
|
|
450
449
|
DOWNLOAD_NO_PROGRESS true
|
451
450
|
SOURCE_DIR ${RUBY_SOURCE_DIR}
|
452
451
|
BUILD_IN_SOURCE true
|
453
|
-
PATCH_COMMAND ruby ${
|
452
|
+
PATCH_COMMAND ruby ${EXE}/tebako-packager pass1 ${OSTYPE_TXT} ${RUBY_SOURCE_DIR} ${FS_MOUNT_POINT} ${DATA_SRC_DIR} ${RUBY_VER}
|
454
453
|
CONFIGURE_COMMAND ${GNU_BASH} -c "${RUBY_SOURCE_DIR}/configure ${OPENSSL_RUBY_OPTION} \
|
455
454
|
--enable-bundled-libyaml \
|
456
455
|
--without-gmp \
|
@@ -465,7 +464,7 @@ ExternalProject_Add(${RUBY_PRJ}
|
|
465
464
|
LDFLAGS=\"${RUBY_L_FLAGS}\""
|
466
465
|
BUILD_COMMAND make ${RUBY_MAKEFILE}
|
467
466
|
INSTALL_COMMAND make ${RUBY_MAKEFILE} install
|
468
|
-
COMMAND ruby ${
|
467
|
+
COMMAND ruby ${EXE}/tebako-packager pass2 ${OSTYPE_TXT} ${RUBY_SOURCE_DIR} ${DEPS_LIB_DIR} ${DATA_SRC_DIR} ${RUBY_STASH_DIR} ${RUBY_VER}
|
469
468
|
)
|
470
469
|
|
471
470
|
add_dependencies(${RUBY_PRJ} ${DWARFS_WR_PRJ})
|
@@ -497,7 +496,7 @@ else (${SETUP_MODE})
|
|
497
496
|
list(LENGTH GEMS GLENGTH)
|
498
497
|
|
499
498
|
add_custom_target(clean_filesystem
|
500
|
-
COMMAND ruby ${
|
499
|
+
COMMAND ruby ${EXE}/tebako-packager deploy ${RUBY_STASH_DIR} ${DATA_SRC_DIR} ${DATA_PRE_DIR} ${DATA_BIN_DIR}
|
501
500
|
DEPENDS ${RUBY_PRJ}
|
502
501
|
)
|
503
502
|
if(GSLENGTH GREATER 0)
|
data/README.adoc
CHANGED
@@ -5,8 +5,8 @@ image:https://github.com/tamatebako/tebako/actions/workflows/alpine.yml/badge.sv
|
|
5
5
|
image:https://github.com/tamatebako/tebako/actions/workflows/macos.yml/badge.svg["MacOS amd64", link="https://github.com/tamatebako/tebako/actions/workflows/macos.yml"]
|
6
6
|
image:https://github.com/tamatebako/tebako/actions/workflows/lint.yml/badge.svg["lint", link="https://github.com/tamatebako/tebako/actions/workflows/lint.yml"]
|
7
7
|
|
8
|
-
image:https://api.cirrus-ci.com/github/tamatebako/tebako.svg?branch=main&task=ubuntu-aarch64["Ubuntu aarch64", link="https://cirrus-ci.com/github/tamatebako/tebako"]
|
9
8
|
image:https://api.cirrus-ci.com/github/tamatebako/tebako.svg?branch=main&task=macos-arm64["MacOS arm64", link="https://cirrus-ci.com/github/tamatebako/tebako"]
|
9
|
+
image:https://api.cirrus-ci.com/github/tamatebako/tebako.svg?branch=main&task=ubuntu-aarch64["Ubuntu aarch64", link="https://cirrus-ci.com/github/tamatebako/tebako"]
|
10
10
|
|
11
11
|
== Purpose
|
12
12
|
|
data/exe/tebako
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
27
|
# POSSIBILITY OF SUCH DAMAGE.
|
28
28
|
|
29
|
-
require_relative "../lib/
|
29
|
+
require_relative "../lib/tebako"
|
30
|
+
require_relative "../lib/tebako/cli"
|
30
31
|
|
31
|
-
Tebako::
|
32
|
+
Tebako::Cli.start
|
data/exe/tebako-packager
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# Copyright (c) 2023 [Ribose Inc](https://www.ribose.com).
|
5
|
+
# All rights reserved.
|
6
|
+
# This file is a part of tebako
|
7
|
+
#
|
8
|
+
# Redistribution and use in source and binary forms, with or without
|
9
|
+
# modification, are permitted provided that the following conditions
|
10
|
+
# are met:
|
11
|
+
# 1. Redistributions of source code must retain the above copyright
|
12
|
+
# notice, this list of conditions and the following disclaimer.
|
13
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
14
|
+
# notice, this list of conditions and the following disclaimer in the
|
15
|
+
# documentation and/or other materials provided with the distribution.
|
16
|
+
#
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
18
|
+
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
19
|
+
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
20
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
|
21
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
22
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
23
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
24
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
25
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
26
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
28
|
+
|
29
|
+
require_relative "../lib/tebako/packager"
|
30
|
+
|
31
|
+
begin
|
32
|
+
unless ARGV.length.positive?
|
33
|
+
raise Tebako::Error, "tebako-packager needs at least 1 argument (command), none has been provided."
|
34
|
+
end
|
35
|
+
|
36
|
+
case ARGV[0]
|
37
|
+
when "pass1"
|
38
|
+
# ARGV[0] -- command
|
39
|
+
# ARGV[1] -- OSTYPE
|
40
|
+
# ARGV[2] -- RUBY_SOURCE_DIR
|
41
|
+
# ARGV[3] -- FS_MOUNT_POINT
|
42
|
+
# ARGV[4] -- DATA_SRC_DIR
|
43
|
+
# ARGV[5] -- RUBY_VER
|
44
|
+
unless ARGV.length == 6
|
45
|
+
raise Tebako::Error,
|
46
|
+
"tebako-packager pass1 command expects 6 arguments, #{ARGV.length} has been provided."
|
47
|
+
end
|
48
|
+
|
49
|
+
Tebako::Packager.pass1(ARGV[1], ARGV[2], ARGV[3], ARGV[4], ARGV[5])
|
50
|
+
when "stash"
|
51
|
+
# ARGV[0] -- command
|
52
|
+
# ARGV[1] -- DATA_SRC_DIR
|
53
|
+
# ARGV[2] -- RUBY_STASH_DIR
|
54
|
+
unless ARGV.length == 3
|
55
|
+
raise Tebako::Error,
|
56
|
+
"tebako-packager stash command expects 3 arguments, #{ARGV.length} has been provided."
|
57
|
+
end
|
58
|
+
|
59
|
+
Tebako::Packager.stash(ARGV[1], ARGV[2])
|
60
|
+
when "pass2"
|
61
|
+
# ARGV[0] -- command
|
62
|
+
# ARGV[1] -- OSTYPE
|
63
|
+
# ARGV[2] -- RUBY_SOURCE_DIR
|
64
|
+
# ARGV[3] -- DEPS_LIB_DIR
|
65
|
+
# ARGV[4] -- DATA_SRC_DIR
|
66
|
+
# ARGV[5] -- RUBY_STASH_DIR
|
67
|
+
# ARGV[6] -- RUBY_VER
|
68
|
+
unless ARGV.length == 7
|
69
|
+
raise Tebako::Error,
|
70
|
+
"tebako-packager pass2 command expects 7 arguments, #{ARGV.length} has been provided."
|
71
|
+
end
|
72
|
+
|
73
|
+
Tebako::Packager.stash(ARGV[4], ARGV[5])
|
74
|
+
Tebako::Packager.pass2(ARGV[1], ARGV[2], ARGV[3], ARGV[6])
|
75
|
+
when "deploy"
|
76
|
+
# ARGV[0] -- command
|
77
|
+
# ARGV[1] -- FS_STASH_DIR
|
78
|
+
# ARGV[2] -- DATA_SRC_DIR
|
79
|
+
# ARGV[3] -- DATA_PRE_DIR
|
80
|
+
# ARGV[4] -- DATA_BIN_DIR
|
81
|
+
unless ARGV.length == 5
|
82
|
+
raise Tebako::Error,
|
83
|
+
"tebako-packager deploy command expects 5 arguments, #{ARGV.length} has been provided."
|
84
|
+
end
|
85
|
+
Tebako::Packager.deploy(ARGV[1], ARGV[2], ARGV[3], ARGV[4])
|
86
|
+
else
|
87
|
+
raise Tebako::Error, "tebako-packager cannot process #{ARGV[0]} command"
|
88
|
+
end
|
89
|
+
rescue Tebako::Error => e
|
90
|
+
puts "tebako-packager failed: #{e.message} [#{e.error_code}]"
|
91
|
+
exit(e.error_code)
|
92
|
+
end
|
93
|
+
|
94
|
+
exit(0)
|
data/lib/tebako/cli.rb
CHANGED
@@ -32,14 +32,13 @@ require "yaml"
|
|
32
32
|
|
33
33
|
require_relative "cli_helpers"
|
34
34
|
require_relative "error"
|
35
|
-
require_relative "version"
|
36
35
|
|
37
36
|
# Tebako - an executable packager
|
38
37
|
# Implementation of tebako command-line interface
|
39
38
|
module Tebako
|
40
39
|
OPTIONS_FILE = ".tebako.yml"
|
41
40
|
# Tebako packager front-end
|
42
|
-
class
|
41
|
+
class Cli < Thor
|
43
42
|
package_name "Tebako"
|
44
43
|
class_option :prefix, type: :string, aliases: "-p", required: false,
|
45
44
|
desc: "A path to tebako packaging environment, '~/.tebako' ('$HOME/.tebako') by default"
|
@@ -64,7 +63,7 @@ module Tebako
|
|
64
63
|
def press
|
65
64
|
puts press_announce
|
66
65
|
do_press
|
67
|
-
rescue
|
66
|
+
rescue Tebako::Error => e
|
68
67
|
puts "Tebako script failed: #{e.message} [#{e.error_code}]"
|
69
68
|
exit e.error_code
|
70
69
|
end
|
@@ -76,7 +75,7 @@ module Tebako
|
|
76
75
|
def setup
|
77
76
|
puts "Setting up tebako packaging environment"
|
78
77
|
do_setup
|
79
|
-
rescue
|
78
|
+
rescue Tebako::Error => e
|
80
79
|
puts "Tebako script failed: #{e.message} [#{e.error_code}]"
|
81
80
|
exit e.error_code
|
82
81
|
end
|
@@ -92,7 +91,6 @@ module Tebako
|
|
92
91
|
return original_options unless File.exist?(OPTIONS_FILE)
|
93
92
|
|
94
93
|
defaults = ::YAML.load_file(OPTIONS_FILE) || {}
|
95
|
-
puts defaults.merge(original_options)
|
96
94
|
Thor::CoreExt::HashWithIndifferentAccess.new(defaults.merge(original_options))
|
97
95
|
end
|
98
96
|
|
data/lib/tebako/cli_helpers.rb
CHANGED
@@ -36,7 +36,7 @@ require_relative "version"
|
|
36
36
|
# Tebako - an executable packager
|
37
37
|
# Command-line interface methods
|
38
38
|
module Tebako
|
39
|
-
#
|
39
|
+
# Cli methods
|
40
40
|
module CliHelpers
|
41
41
|
def b_env
|
42
42
|
u_flags = if RbConfig::CONFIG["host_os"] =~ /darwin/
|
@@ -72,8 +72,10 @@ module Tebako
|
|
72
72
|
def extend_ruby_version
|
73
73
|
version = options["Ruby"].nil? ? DEFAULT_RUBY_VERSION : options["Ruby"]
|
74
74
|
unless RUBY_VERSIONS.key?(version)
|
75
|
-
raise
|
76
|
-
|
75
|
+
raise Tebako::Error.new(
|
76
|
+
"Ruby version #{version} is not supported yet, exiting",
|
77
|
+
253
|
78
|
+
)
|
77
79
|
end
|
78
80
|
|
79
81
|
@extend_ruby_version ||= [version, RUBY_VERSIONS[version]]
|
@@ -87,6 +89,7 @@ module Tebako
|
|
87
89
|
end
|
88
90
|
end
|
89
91
|
|
92
|
+
# rubocop:disable Metrics/MethodLength
|
90
93
|
def m_files
|
91
94
|
@m_files ||= case RbConfig::CONFIG["host_os"]
|
92
95
|
when /linux/, /darwin/
|
@@ -94,9 +97,13 @@ module Tebako
|
|
94
97
|
when /msys/
|
95
98
|
"Ninja"
|
96
99
|
else
|
97
|
-
raise
|
100
|
+
raise Tebako::Error.new(
|
101
|
+
"#{RbConfig::CONFIG["host_os"]} is not supported yet, exiting",
|
102
|
+
254
|
103
|
+
)
|
98
104
|
end
|
99
105
|
end
|
106
|
+
# rubocop:enable Metrics/MethodLength
|
100
107
|
|
101
108
|
def output
|
102
109
|
@output ||= File.join(prefix, "output")
|
@@ -120,7 +127,7 @@ module Tebako
|
|
120
127
|
def packaging_error(code)
|
121
128
|
msg = PACKAGING_ERRORS[code]
|
122
129
|
msg = "Unknown packaging error" if msg.nil?
|
123
|
-
raise
|
130
|
+
raise Tebako::Error.new msg, code
|
124
131
|
end
|
125
132
|
|
126
133
|
def prefix
|
data/lib/tebako/error.rb
CHANGED
@@ -27,128 +27,130 @@
|
|
27
27
|
|
28
28
|
# Tebako - an executable packager
|
29
29
|
module Tebako
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
#include "ruby/ruby.h"
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
SUBST
|
75
|
-
}.freeze
|
76
|
-
|
77
|
-
CONFIGURE_PATCH = {
|
78
|
-
"EXTDLDFLAGS=\"-bundle_loader '\\$(BUILTRUBY)'\"" => ""
|
79
|
-
}.freeze
|
80
|
-
|
81
|
-
class << self
|
82
|
-
def get_patch_map(ostype, mount_point, ruby_ver)
|
83
|
-
patch_map = {
|
84
|
-
# ....................................................
|
85
|
-
# It won't install gems with no files defined in spec
|
86
|
-
# However if
|
87
|
-
# -- we are installing a default gem from extension
|
88
|
-
# -- extension is build statically
|
89
|
-
# there may be no files install in addition to spec
|
90
|
-
# Example: io/wait extension (and others)
|
91
|
-
"tool/rbinstall.rb" => TOOL_RBINSTALL_RB_PATCH,
|
30
|
+
module Packager
|
31
|
+
# Ruby patching definitions (pass1)
|
32
|
+
module Pass1
|
33
|
+
TOOL_RBINSTALL_RB_PATCH = {
|
34
|
+
" next if files.empty?" => "# tebako patched next if files.empty?"
|
35
|
+
}.freeze
|
36
|
+
|
37
|
+
RUBYGEM_OPENSSL_RB_PATCH = {
|
38
|
+
'autoload :OpenSSL, "openssl"' => "require \"openssl\"\nautoload :OpenSSL, \"openssl\""
|
39
|
+
}.freeze
|
40
|
+
|
41
|
+
EXT_SETUP_PATCH = {
|
42
|
+
"#option nodynamic" => "option nodynamic"
|
43
|
+
}.freeze
|
44
|
+
|
45
|
+
EXT_BIGDECIMAL_BIGDECIMAL_H_PATCH = {
|
46
|
+
"#include \"ruby/ruby.h\"" => <<~SUBST
|
47
|
+
#include "ruby/ruby.h"
|
48
|
+
|
49
|
+
/* -- Start of tebako patch -- */
|
50
|
+
#ifndef HAVE_RB_SYM2STR
|
51
|
+
#define HAVE_RB_SYM2STR 1
|
52
|
+
#endif
|
53
|
+
|
54
|
+
#ifndef HAVE_RB_ARRAY_CONST_PTR
|
55
|
+
#define HAVE_RB_ARRAY_CONST_PTR 1
|
56
|
+
#endif
|
57
|
+
|
58
|
+
#ifndef HAVE_RB_RATIONAL_NUM
|
59
|
+
#define HAVE_RB_RATIONAL_NUM 1
|
60
|
+
#endif
|
61
|
+
|
62
|
+
#ifndef HAVE_RB_RATIONAL_DEN
|
63
|
+
#define HAVE_RB_RATIONAL_DEN 1
|
64
|
+
#endif
|
65
|
+
|
66
|
+
#ifndef HAVE_RB_COMPLEX_REAL
|
67
|
+
#define HAVE_RB_COMPLEX_REAL
|
68
|
+
#endif
|
69
|
+
|
70
|
+
#ifndef HAVE_RB_COMPLEX_IMAG
|
71
|
+
#define HAVE_RB_COMPLEX_IMAG
|
72
|
+
#endif
|
73
|
+
/* -- End of tebako patch -- */
|
92
74
|
|
75
|
+
SUBST
|
76
|
+
}.freeze
|
77
|
+
|
78
|
+
CONFIGURE_PATCH = {
|
79
|
+
"EXTDLDFLAGS=\"-bundle_loader '\\$(BUILTRUBY)'\"" => ""
|
80
|
+
}.freeze
|
81
|
+
|
82
|
+
class << self
|
83
|
+
def get_patch_map(ostype, mount_point, ruby_ver)
|
84
|
+
patch_map = {
|
85
|
+
# ....................................................
|
86
|
+
# It won't install gems with no files defined in spec
|
87
|
+
# However if
|
88
|
+
# -- we are installing a default gem from extension
|
89
|
+
# -- extension is build statically
|
90
|
+
# there may be no files install in addition to spec
|
91
|
+
# Example: io/wait extension (and others)
|
92
|
+
"tool/rbinstall.rb" => TOOL_RBINSTALL_RB_PATCH,
|
93
|
+
|
94
|
+
# ....................................................
|
95
|
+
# This is something that I cannnot explain
|
96
|
+
# (this patch does not seem related to static compilation)
|
97
|
+
"ext/bigdecimal/bigdecimal.h" => EXT_BIGDECIMAL_BIGDECIMAL_H_PATCH,
|
98
|
+
|
99
|
+
# ....................................................
|
100
|
+
# Allow only packaged gems (from within memfs)
|
101
|
+
"lib/rubygems/path_support.rb" => rubygems_path_support_patch(mount_point),
|
102
|
+
|
103
|
+
# ....................................................
|
104
|
+
# Disable dynamic extensions
|
105
|
+
"ext/Setup" => EXT_SETUP_PATCH
|
106
|
+
}
|
93
107
|
# ....................................................
|
94
|
-
#
|
95
|
-
|
96
|
-
"ext/bigdecimal/bigdecimal.h" => EXT_BIGDECIMAL_BIGDECIMAL_H_PATCH,
|
108
|
+
# Fixing (bypassing) configure script bug where a variable is used before initialization
|
109
|
+
patch_map.store("configure", CONFIGURE_PATCH) if ostype =~ /darwin/
|
97
110
|
|
98
111
|
# ....................................................
|
99
|
-
#
|
100
|
-
|
112
|
+
# autoload :OpenSSL, "openssl"
|
113
|
+
# fails to deal with a default gem from statically linked extension
|
114
|
+
patch_map.store("lib/rubygems/openssl.rb", RUBYGEM_OPENSSL_RB_PATCH) if ruby_ver[0] == "3"
|
101
115
|
|
102
|
-
|
103
|
-
|
104
|
-
"ext/Setup" => EXT_SETUP_PATCH
|
105
|
-
}
|
106
|
-
# ....................................................
|
107
|
-
# Fixing (bypassing) configure script bug where a variable is used before initialization
|
108
|
-
patch_map.store("configure", CONFIGURE_PATCH) if ostype =~ /darwin/
|
109
|
-
|
110
|
-
# ....................................................
|
111
|
-
# autoload :OpenSSL, "openssl"
|
112
|
-
# fails to deal with a default gem from statically linked extension
|
113
|
-
patch_map.store("lib/rubygems/openssl.rb", RUBYGEM_OPENSSL_RB_PATCH) if ruby_ver[0] == "3"
|
114
|
-
|
115
|
-
patch_map
|
116
|
-
end
|
116
|
+
patch_map
|
117
|
+
end
|
117
118
|
|
118
|
-
|
119
|
+
private
|
119
120
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
121
|
+
def rubygems_path_support_patch_one(mount_point)
|
122
|
+
<<~SUBST
|
123
|
+
@home = env["GEM_HOME"] || Gem.default_dir
|
124
|
+
# -- Start of tebako patch --
|
125
|
+
unless env["TEBAKO_PASS_THROUGH"]
|
126
|
+
@home = Gem.default_dir unless @home.index("#{mount_point}") == 0
|
127
|
+
end
|
128
|
+
# -- End of tebako patch --
|
128
129
|
|
129
|
-
|
130
|
-
|
130
|
+
SUBST
|
131
|
+
end
|
131
132
|
|
132
|
-
|
133
|
-
|
133
|
+
def rubygems_path_support_patch_two(mount_point)
|
134
|
+
<<~SUBST
|
134
135
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
136
|
+
@path = split_gem_path env["GEM_PATH"], @home
|
137
|
+
# -- Start of tebako patch --
|
138
|
+
unless env["TEBAKO_PASS_THROUGH"]
|
139
|
+
@path.keep_if do |xpath|
|
140
|
+
xpath.index("#{mount_point}") == 0
|
141
|
+
end
|
140
142
|
end
|
141
|
-
|
142
|
-
# -- End of tebako patch --
|
143
|
+
# -- End of tebako patch --
|
143
144
|
|
144
|
-
|
145
|
-
|
145
|
+
SUBST
|
146
|
+
end
|
146
147
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
148
|
+
def rubygems_path_support_patch(mount_point)
|
149
|
+
{
|
150
|
+
' @home = env["GEM_HOME"] || Gem.default_dir' => rubygems_path_support_patch_one(mount_point),
|
151
|
+
' @path = split_gem_path env["GEM_PATH"], @home' => rubygems_path_support_patch_two(mount_point)
|
152
|
+
}
|
153
|
+
end
|
152
154
|
end
|
153
155
|
end
|
154
156
|
end
|