tebako 0.7.4 → 0.8.0
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 +13 -17
- data/README.adoc +656 -174
- data/common.env +1 -1
- data/lib/tebako/cli_rubies.rb +3 -5
- data/lib/tebako/packager/pass1.rb +7 -4
- data/lib/tebako/packager/pass2.rb +14 -16
- data/lib/tebako/packager/patch_buildsystem.rb +41 -7
- data/lib/tebako/packager/patch_helpers.rb +0 -4
- data/lib/tebako/packager/patch_libraries.rb +82 -62
- data/lib/tebako/packager/patch_literals.rb +15 -17
- data/lib/tebako/version.rb +1 -1
- data/src/tebako-main.cpp +7 -0
- data/version.txt +1 -1
- metadata +2 -2
data/common.env
CHANGED
data/lib/tebako/cli_rubies.rb
CHANGED
@@ -40,12 +40,10 @@ module Tebako
|
|
40
40
|
RUBY_VERSIONS = {
|
41
41
|
"2.7.8" => "c2dab63cbc8f2a05526108ad419efa63a67ed4074dbbcf9fc2b1ca664cb45ba0",
|
42
42
|
"3.0.7" => "2a3411977f2850431136b0fab8ad53af09fb74df2ee2f4fb7f11b378fe034388",
|
43
|
-
"3.1.4" => "a3d55879a0dfab1d7141fdf10d22a07dbf8e5cdc4415da1bde06127d5cc3c7b6",
|
44
|
-
"3.1.5" => "3685c51eeee1352c31ea039706d71976f53d00ab6d77312de6aa1abaf5cda2c5",
|
45
43
|
"3.1.6" => "0d0dafb859e76763432571a3109d1537d976266be3083445651dc68deed25c22",
|
46
|
-
"3.2.
|
47
|
-
"3.
|
48
|
-
|
44
|
+
"3.2.4" => "c72b3c5c30482dca18b0f868c9075f3f47d8168eaf626d4e682ce5b59c858692",
|
45
|
+
"3.3.3" => "83c05b2177ee9c335b631b29b8c077b4770166d02fa527f3a9f6a40d13f3cce2",
|
46
|
+
"3.3.4" => "fe6a30f97d54e029768f2ddf4923699c416cdbc3a6e96db3e2d5716c7db96a34"
|
49
47
|
}.freeze
|
50
48
|
|
51
49
|
DEFAULT_RUBY_VERSION = "3.1.6"
|
@@ -178,13 +178,16 @@ module Tebako
|
|
178
178
|
"$(WINMAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@ # tebako patched",
|
179
179
|
|
180
180
|
"--output-exp=$(RUBY_EXP) \\" =>
|
181
|
-
|
181
|
+
"--output-exp=$(RUBY_EXP) --output-lib=$(LIBRUBY) --output-def=tebako.def \\",
|
182
182
|
|
183
|
-
"
|
184
|
-
"# tebako patched
|
183
|
+
"--export-all $(LIBRUBY_A) $(LIBS) -o $(PROGRAM)" =>
|
184
|
+
"--export-all $(LIBRUBY_A) $(LIBS) -o program-stub.exe # tebako patched",
|
185
|
+
|
186
|
+
"@rm -f $(PROGRAM)" =>
|
187
|
+
"@rm -f program-stub.exe # tebako patched",
|
185
188
|
|
186
189
|
" $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.o $(SOLIBS) -o $(PROGRAM)" =>
|
187
|
-
|
190
|
+
"# tebako patched $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.o $(SOLIBS) -o $(PROGRAM)",
|
188
191
|
|
189
192
|
"RUBYDEF = $(DLL_BASE_NAME).def" => GNUMAKEFILE_IN_WINMAIN_SUBST
|
190
193
|
}
|
@@ -38,23 +38,26 @@ module Tebako
|
|
38
38
|
class << self
|
39
39
|
def get_patch_map(ostype, deps_lib_dir, ruby_ver)
|
40
40
|
patch_map = get_patch_map_base(ostype, deps_lib_dir, ruby_ver)
|
41
|
-
|
42
41
|
patch_map.store("thread_pthread.c", LINUX_MUSL_THREAD_PTHREAD_PATCH) if ostype =~ /linux-musl/
|
43
|
-
|
44
42
|
if PatchHelpers.msys?(ostype)
|
45
43
|
patch_map.merge!(get_msys_patches(ruby_ver))
|
46
44
|
elsif PatchHelpers.ruby3x?(ruby_ver)
|
47
|
-
# [TODO] Do we really need it for platforms other then Windows ??
|
48
45
|
patch_map.store("common.mk", COMMON_MK_PATCH)
|
49
46
|
end
|
50
|
-
|
51
|
-
patch_map
|
47
|
+
extend_patch_map_r33(patch_map, ostype, deps_lib_dir, ruby_ver)
|
52
48
|
end
|
53
49
|
|
54
50
|
private
|
55
51
|
|
56
52
|
include Tebako::Packager::PatchBuildsystem
|
57
53
|
include Tebako::Packager::PatchLiterals
|
54
|
+
def extend_patch_map_r33(patch_map, ostype, deps_lib_dir, ruby_ver)
|
55
|
+
if PatchHelpers.ruby33?(ruby_ver) || PatchHelpers.msys?(ostype)
|
56
|
+
patch_map.store("config.status",
|
57
|
+
get_config_status_patch(ostype, deps_lib_dir, ruby_ver))
|
58
|
+
end
|
59
|
+
patch_map
|
60
|
+
end
|
58
61
|
|
59
62
|
def get_dir_c_patch(ostype)
|
60
63
|
pattern = PatchHelpers.msys?(ostype) ? "/* define system APIs */" : "#ifdef HAVE_GETATTRLIST"
|
@@ -91,21 +94,17 @@ module Tebako
|
|
91
94
|
end
|
92
95
|
|
93
96
|
def get_util_c_patch(ruby_ver)
|
94
|
-
if PatchHelpers.
|
97
|
+
if PatchHelpers.ruby31?(ruby_ver)
|
95
98
|
PatchHelpers.patch_c_file_post("#endif /* !HAVE_GNU_QSORT_R */")
|
96
99
|
else
|
97
100
|
PatchHelpers.patch_c_file_pre("#ifndef S_ISDIR")
|
98
101
|
end
|
99
102
|
end
|
100
103
|
|
101
|
-
def
|
104
|
+
def get_tool_mkconfig_rb_patch(ostype)
|
105
|
+
subst = PatchHelpers.msys?(ostype) ? TOOL_MKCONFIG_RB_SUBST_MSYS : TOOL_MKCONFIG_RB_SUBST
|
102
106
|
{
|
103
|
-
" if fast[name]" =>
|
104
|
-
"when /RUBYGEMS/; next" =>
|
105
|
-
"when /RUBYGEMS/; next\n\n" \
|
106
|
-
"# Start of tebako patch\n" \
|
107
|
-
"when /MAINLIBS/; val = #{PatchLibraries.msys_base_libs(ruby_ver)}\n" \
|
108
|
-
"# End of tebako patch"
|
107
|
+
" if fast[name]" => subst
|
109
108
|
}
|
110
109
|
end
|
111
110
|
|
@@ -119,10 +118,9 @@ module Tebako
|
|
119
118
|
end
|
120
119
|
|
121
120
|
def get_patch_map_base(ostype, deps_lib_dir, ruby_ver)
|
122
|
-
mcrb_subst = PatchHelpers.msys?(ostype) ? get_msys_mkconfig_rb_patches(ruby_ver) : TOOL_MKCONFIG_RB_PATCH
|
123
121
|
{
|
124
122
|
"template/Makefile.in" => template_makefile_in_patch(ostype, deps_lib_dir, ruby_ver),
|
125
|
-
"tool/mkconfig.rb" =>
|
123
|
+
"tool/mkconfig.rb" => get_tool_mkconfig_rb_patch(ostype),
|
126
124
|
"dir.c" => get_dir_c_patch(ostype), "dln.c" => get_dln_c_patch(ostype, ruby_ver),
|
127
125
|
"io.c" => get_io_c_patch(ostype, ruby_ver), "main.c" => MAIN_C_PATCH,
|
128
126
|
"file.c" => PatchHelpers.patch_c_file_pre("/* define system APIs */"),
|
@@ -135,7 +133,7 @@ module Tebako
|
|
135
133
|
{
|
136
134
|
"MAINLIBS = #{yjit_libs}@MAINLIBS@" =>
|
137
135
|
"# -- Start of tebako patch -- \n" \
|
138
|
-
"MAINLIBS = #{yjit_libs}#{PatchLibraries.mlibs(ostype, deps_lib_dir, ruby_ver)}" \
|
136
|
+
"MAINLIBS = #{yjit_libs}#{PatchLibraries.mlibs(ostype, deps_lib_dir, ruby_ver, true)}\n" \
|
139
137
|
"# -- End of tebako patch -- \n"
|
140
138
|
}
|
141
139
|
end
|
@@ -57,10 +57,14 @@ module Tebako
|
|
57
57
|
"$(EXTOBJS) $(LIBRUBYARG_STATIC) $(OUTFLAG)$@\n" \
|
58
58
|
"# -- End of tebako patch --"
|
59
59
|
|
60
|
-
|
60
|
+
TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_3 =
|
61
61
|
"\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) " \
|
62
62
|
"$(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@"
|
63
63
|
|
64
|
+
TEMPLATE_MAKEFILE_IN_BASE_PATTERN =
|
65
|
+
"\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) " \
|
66
|
+
"$(LIBRUBYARG) $(MAINLIBS) $(EXTLIBS) $(OUTFLAG)$@"
|
67
|
+
|
64
68
|
TEMPLATE_MAKEFILE_IN_BASE_PATCH =
|
65
69
|
"# -- Start of tebako patch --\n" \
|
66
70
|
"\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(MAINOBJ) " \
|
@@ -73,13 +77,23 @@ module Tebako
|
|
73
77
|
"$(EXTOBJS) $(LIBRUBYARG_STATIC) $(OUTFLAG)$@\n" \
|
74
78
|
"# -- End of tebako patch --"
|
75
79
|
|
76
|
-
def
|
80
|
+
def template_makefile_in_subst(ostype, ruby_ver)
|
77
81
|
if PatchHelpers.msys?(ostype)
|
78
|
-
|
79
|
-
elsif PatchHelpers.ruby31?(ruby_ver)
|
80
|
-
|
82
|
+
TEMPLATE_MAKEFILE_IN_BASE_PATCH_MSYS
|
83
|
+
elsif !PatchHelpers.ruby31?(ruby_ver)
|
84
|
+
TEMPLATE_MAKEFILE_IN_BASE_PATCH_PRE_3_1
|
85
|
+
else
|
86
|
+
TEMPLATE_MAKEFILE_IN_BASE_PATCH
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def template_makefile_in_patch_two(ostype, ruby_ver)
|
91
|
+
if !PatchHelpers.ruby31?(ruby_ver)
|
92
|
+
{ TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_1 => template_makefile_in_subst(ostype, ruby_ver) }
|
93
|
+
elsif !PatchHelpers.ruby33?(ruby_ver)
|
94
|
+
{ TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_3 => template_makefile_in_subst(ostype, ruby_ver) }
|
81
95
|
else
|
82
|
-
{
|
96
|
+
{ TEMPLATE_MAKEFILE_IN_BASE_PATTERN => template_makefile_in_subst(ostype, ruby_ver) }
|
83
97
|
end
|
84
98
|
end
|
85
99
|
|
@@ -94,10 +108,30 @@ module Tebako
|
|
94
108
|
# End of tebako patch
|
95
109
|
SUBST
|
96
110
|
|
111
|
+
def get_config_status_pattern(ostype)
|
112
|
+
case ostype
|
113
|
+
when /linux-/
|
114
|
+
"S[\"MAINLIBS\"]=\"-lz -lrt -lrt -ldl -lcrypt -lm -lpthread \""
|
115
|
+
when /darwin/
|
116
|
+
"S[\"MAINLIBS\"]=\"-ldl -lobjc -lpthread \""
|
117
|
+
when /msys/
|
118
|
+
"S[\"MAINLIBS\"]=\"-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt \""
|
119
|
+
else
|
120
|
+
raise Tebako::Error, "Unknown ostype #{ostype}"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def get_config_status_patch(ostype, deps_lib_dir, ruby_ver)
|
125
|
+
{
|
126
|
+
get_config_status_pattern(ostype) =>
|
127
|
+
"S[\"MAINLIBS\"]=\"#{PatchLibraries.mlibs(ostype, deps_lib_dir, ruby_ver, false)}\""
|
128
|
+
}
|
129
|
+
end
|
130
|
+
|
97
131
|
# Other MSYS (GNUMakefile) specific patches
|
98
132
|
# - The same issue with libraries as for Makefile above
|
99
133
|
# - 'Kill' ruby.exp regeneration on pass2
|
100
|
-
# since we want to use
|
134
|
+
# since we want to use output from pass1 for implib generation
|
101
135
|
# [VERY UGLY HACK]
|
102
136
|
# - Introduce LIBRUBY dependency on static extensions
|
103
137
|
# This is an addition to COMMON_MK_PATCH specified above
|
@@ -116,10 +116,6 @@ module Tebako
|
|
116
116
|
ruby3x?(ruby_ver) && ruby_ver[2].to_i >= 1
|
117
117
|
end
|
118
118
|
|
119
|
-
def ruby316?(ruby_ver)
|
120
|
-
ruby3x?(ruby_ver) && ruby_ver[2] == "1" && ruby_ver[4].to_i >= 6
|
121
|
-
end
|
122
|
-
|
123
119
|
def ruby32?(ruby_ver)
|
124
120
|
ruby3x?(ruby_ver) && ruby_ver[2].to_i >= 2
|
125
121
|
end
|
@@ -47,24 +47,94 @@ module Tebako
|
|
47
47
|
|
48
48
|
DARWIN_BREW_LIBS_31 = [["openssl@3", "ssl"], ["openssl@3", "crypto"]].freeze
|
49
49
|
|
50
|
-
|
50
|
+
DARWIN_DEP_LIBS_1 = ["folly", "fsst", "metadata_thrift", "thrift_light", "xxhash", "zstd"].freeze
|
51
|
+
DARWIN_DEP_LIBS_2 = ["glog", "gflags", "brotlienc", "brotlidec", "brotlicommon"].freeze
|
51
52
|
# rubocop:enable Style/WordArray
|
52
53
|
|
54
|
+
COMMON_LINUX_LIBRARIES = [
|
55
|
+
"-l:libdwarfs-wr.a", "-l:libtebako-fs.a", "-l:libdwarfs.a", "LIBCOMPRESSION",
|
56
|
+
"-l:libfolly.a", "-l:libfsst.a", "-l:libmetadata_thrift.a", "-l:libthrift_light.a",
|
57
|
+
"-l:libxxhash.a", "-l:libfmt.a", "-l:libdouble-conversion.a", "-l:libglog.a",
|
58
|
+
"-l:libgflags.a", "-l:libevent.a"
|
59
|
+
].freeze
|
60
|
+
|
61
|
+
COMMON_ARCHIEVE_LIBRARIES = [
|
62
|
+
"-l:libarchive.a", "-l:liblz4.a", "-l:libz.a", "-l:libzstd.a",
|
63
|
+
"-l:libbrotlienc.a", "-l:libbrotlidec.a", "-l:libbrotlicommon.a", "-l:liblzma.a"
|
64
|
+
].freeze
|
65
|
+
|
66
|
+
LINUX_GNU_LIBRARIES = [
|
67
|
+
"-l:libiberty.a", "-l:libacl.a", "-l:libssl.a", "-l:libcrypto.a",
|
68
|
+
"-l:libgdbm.a", "-l:libreadline.a", "-l:libtinfo.a", "-l:libffi.a",
|
69
|
+
"-l:libncurses.a", "-l:libjemalloc.a", "-l:libcrypt.a", "-l:libanl.a",
|
70
|
+
"LIBYAML", "-l:libboost_system.a", "-l:libboost_chrono.a", "-l:libutil.a",
|
71
|
+
"-l:libstdc++.a", "-lgcc_eh", "-l:libunwind.a", "-l:liblzma.a",
|
72
|
+
"-l:librt.a", "-ldl", "-lpthread", "-lm"
|
73
|
+
].freeze
|
74
|
+
|
75
|
+
LINUX_MUSL_LIBRARIES = [
|
76
|
+
"-l:libiberty.a", "-l:libacl.a", "-l:libssl.a", "-l:libcrypto.a",
|
77
|
+
"-l:libreadline.a", "-l:libgdbm.a", "-l:libffi.a", "-l:libncurses.a",
|
78
|
+
"-l:libjemalloc.a", "-l:libcrypt.a", "LIBYAML", "-l:libboost_system.a",
|
79
|
+
"-l:libboost_chrono.a", "-l:librt.a", "-l:libstdc++.a", "-lgcc_eh",
|
80
|
+
" -l:libunwind.a", "-l:liblzma.a", "-ldl", "-lpthread"
|
81
|
+
].freeze
|
82
|
+
|
83
|
+
MSYS_LIBRARIES = [
|
84
|
+
"-l:liblz4.a", "-l:libz.a", "-l:libzstd.a", "-l:liblzma.a",
|
85
|
+
"-l:libncurses.a", "-l:libunwind.a", "-l:liblzma.a", "-l:libiberty.a",
|
86
|
+
"LIBYAML", "-l:libffi.a", "-l:libboost_system-mt.a", "-l:libboost_chrono-mt.a",
|
87
|
+
"-l:libstdc++.a", "-l:libdl.a", "-static-libgcc", "-static-libstdc++",
|
88
|
+
"-l:libssl.a", "-l:libcrypto.a", "-l:libz.a", "-l:libwinpthread.a",
|
89
|
+
"-lcrypt32", "-lshlwapi", "-lwsock32", "-liphlpapi",
|
90
|
+
"-limagehlp", "-lbcrypt", "-lole32", "-loleaut32",
|
91
|
+
"-luuid", "-lws2_32"
|
92
|
+
].freeze
|
93
|
+
|
94
|
+
def linux_gnu_libraries(ruby_ver, with_compression)
|
95
|
+
libraries = COMMON_LINUX_LIBRARIES + COMMON_ARCHIEVE_LIBRARIES + LINUX_GNU_LIBRARIES
|
96
|
+
linux_libraries(libraries, ruby_ver, with_compression)
|
97
|
+
end
|
98
|
+
|
99
|
+
def linux_musl_libraries(ruby_ver, with_compression)
|
100
|
+
libraries = COMMON_LINUX_LIBRARIES + COMMON_ARCHIEVE_LIBRARIES + LINUX_MUSL_LIBRARIES
|
101
|
+
linux_libraries(libraries, ruby_ver, with_compression)
|
102
|
+
end
|
103
|
+
|
104
|
+
def linux_libraries(libraries, ruby_ver, with_compression)
|
105
|
+
libraries.map! do |lib|
|
106
|
+
if lib == "LIBYAML"
|
107
|
+
PatchHelpers.yaml_reference(ruby_ver)
|
108
|
+
elsif lib == "LIBCOMPRESSION"
|
109
|
+
with_compression ? "-Wl,--push-state,--whole-archive -l:libdwarfs_compression.a -Wl,--pop-state" : ""
|
110
|
+
else
|
111
|
+
lib
|
112
|
+
end
|
113
|
+
end
|
114
|
+
libraries.join(" ")
|
115
|
+
end
|
116
|
+
|
117
|
+
def msys_libraries(ruby_ver, with_compression)
|
118
|
+
libraries = with_compression ? ["-Wl,-Bstatic"] : []
|
119
|
+
libraries = libraries + COMMON_LINUX_LIBRARIES + MSYS_LIBRARIES
|
120
|
+
linux_libraries(libraries, ruby_ver, with_compression)
|
121
|
+
end
|
122
|
+
|
53
123
|
def process_brew_libs!(libs, brew_libs)
|
54
124
|
brew_libs.each { |lib| libs << "#{PatchHelpers.get_prefix_macos(lib[0]).chop}/lib/lib#{lib[1]}.a " }
|
55
125
|
end
|
56
126
|
|
57
|
-
def
|
127
|
+
def darwin_libraries(deps_lib_dir, ruby_ver, with_compression)
|
58
128
|
libs = String.new
|
59
129
|
|
130
|
+
DARWIN_DEP_LIBS_1.each { |lib| libs << "#{deps_lib_dir}/lib#{lib}.a " }
|
60
131
|
process_brew_libs!(libs, PatchHelpers.ruby31?(ruby_ver) ? DARWIN_BREW_LIBS_31 : DARWIN_BREW_LIBS_PRE_31)
|
61
132
|
process_brew_libs!(libs, DARWIN_BREW_LIBS)
|
62
133
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
SUBST
|
134
|
+
DARWIN_DEP_LIBS_2.each { |lib| libs << "#{deps_lib_dir}/lib#{lib}.a " }
|
135
|
+
|
136
|
+
compression_lib = with_compression ? "-force_load #{deps_lib_dir}/libdwarfs_compression.a" : ""
|
137
|
+
"-ltebako-fs -ldwarfs-wr -ldwarfs #{compression_lib} #{libs} -ljemalloc -lc++ -lc++abi"
|
68
138
|
end
|
69
139
|
|
70
140
|
# .....................................................
|
@@ -79,66 +149,16 @@ module Tebako
|
|
79
149
|
# This is fixed by ext/extmk.rb patch [TODO ?]
|
80
150
|
# .....................................................
|
81
151
|
|
82
|
-
def
|
83
|
-
<<~SUBST
|
84
|
-
-l:libtebako-fs.a -l:libdwarfs-wr.a -l:libdwarfs.a -Wl,--push-state,--whole-archive -l:libdwarfs_compression.a -Wl,--pop-state -l:libfolly.a -l:libfsst.a \\
|
85
|
-
-l:libmetadata_thrift.a -l:libthrift_light.a -l:libxxhash.a -l:libfmt.a -l:libdouble-conversion.a -l:libglog.a -l:libgflags.a -l:libevent.a \\
|
86
|
-
SUBST
|
87
|
-
end
|
88
|
-
|
89
|
-
def common_enc_libs
|
90
|
-
"-l:liblz4.a -l:libz.a -l:libzstd.a -l:libbrotlienc.a -l:libbrotlidec.a -l:libbrotlicommon.a -l:liblzma.a"
|
91
|
-
end
|
92
|
-
|
93
|
-
def linux_gnu_libs(ruby_ver)
|
94
|
-
<<~SUBST
|
95
|
-
#{linux_common_libs} \
|
96
|
-
-l:libarchive.a -l:libiberty.a -l:libacl.a -l:libssl.a -l:libcrypto.a #{common_enc_libs} \\
|
97
|
-
-l:libgdbm.a -l:libreadline.a -l:libtinfo.a -l:libffi.a -l:libncurses.a -l:libjemalloc.a -l:libcrypt.a -l:libanl.a #{PatchHelpers.yaml_reference(ruby_ver)} \\
|
98
|
-
-l:libboost_system.a -l:libboost_chrono.a -l:libutil.a -l:libstdc++.a -lgcc_eh -l:libunwind.a -l:liblzma.a -l:librt.a -ldl -lpthread -lm
|
99
|
-
SUBST
|
100
|
-
end
|
101
|
-
|
102
|
-
def linux_musl_libs(ruby_ver)
|
103
|
-
<<~SUBST
|
104
|
-
#{linux_common_libs} \
|
105
|
-
-l:libiberty.a -l:libacl.a -l:libssl.a -l:libcrypto.a #{common_enc_libs} -l:libreadline.a \\
|
106
|
-
-l:libgdbm.a -l:libffi.a -l:libncurses.a -l:libjemalloc.a -l:libcrypt.a #{PatchHelpers.yaml_reference(ruby_ver)} -l:libboost_system.a -l:libboost_chrono.a \\
|
107
|
-
-l:librt.a -l:libstdc++.a -lgcc_eh -l:libunwind.a -l:liblzma.a -ldl -lpthread
|
108
|
-
SUBST
|
109
|
-
end
|
110
|
-
|
111
|
-
# Used for mkconfig.rb
|
112
|
-
def msys_base_libs(ruby_ver)
|
113
|
-
<<~SUBST
|
114
|
-
"-l:libtebako-fs.a -l:libdwarfs-wr.a -l:libdwarfs.a -l:libdwarfs_compression.a -l:libfolly.a -l:libfsst.a " \\
|
115
|
-
"-l:libmetadata_thrift.a -l:libthrift_light.a -l:libxxhash.a -l:libfmt.a -l:libdouble-conversion.a -l:libglog.a -l:libgflags.a -l:libevent.a " \\
|
116
|
-
"-l:liblz4.a -l:libz.a -l:libzstd.a -l:liblzma.a -l:libncurses.a -l:libunwind.a -l:liblzma.a -l:libiberty.a #{PatchHelpers.yaml_reference(ruby_ver)} " \\
|
117
|
-
"-l:libffi.a -l:libboost_system-mt.a -l:libboost_chrono-mt.a -l:libstdc++.a -l:libdl.a -static-libgcc -static-libstdc++ -l:libssl.a -l:libcrypto.a " \\
|
118
|
-
"-l:libz.a -l:libwinpthread.a -lcrypt32 -lshlwapi -lwsock32 -liphlpapi -limagehlp -lbcrypt -lole32 -loleaut32 -luuid"
|
119
|
-
SUBST
|
120
|
-
end
|
121
|
-
|
122
|
-
# Used in Makefile
|
123
|
-
def msys_libs(ruby_ver)
|
124
|
-
<<~SUBST
|
125
|
-
-Wl,-Bstatic #{linux_common_libs} \
|
126
|
-
-l:liblz4.a -l:libz.a -l:libzstd.a -l:liblzma.a -l:libncurses.a -l:libunwind.a -l:liblzma.a -l:libiberty.a #{PatchHelpers.yaml_reference(ruby_ver)} \\
|
127
|
-
-l:libffi.a -l:libboost_system-mt.a -l:libboost_chrono-mt.a -l:libstdc++.a -l:libdl.a -static-libgcc -static-libstdc++ -l:libssl.a -l:libcrypto.a -l:libz.a \\
|
128
|
-
-l:libwinpthread.a -lcrypt32 -lshlwapi -lwsock32 -liphlpapi -limagehlp -lshlwapi -lbcrypt -lws2_32 -lole32 -loleaut32 -luuid
|
129
|
-
SUBST
|
130
|
-
end
|
131
|
-
|
132
|
-
def mlibs(ostype, deps_lib_dir, ruby_ver) # rubocop:disable Metrics/MethodLength
|
152
|
+
def mlibs(ostype, deps_lib_dir, ruby_ver, with_compression) # rubocop:disable Metrics/MethodLength
|
133
153
|
case ostype
|
134
154
|
when /linux-gnu/
|
135
|
-
|
155
|
+
linux_gnu_libraries(ruby_ver, with_compression)
|
136
156
|
when /linux-musl/
|
137
|
-
|
157
|
+
linux_musl_libraries(ruby_ver, with_compression)
|
138
158
|
when /darwin/
|
139
|
-
|
159
|
+
darwin_libraries(deps_lib_dir, ruby_ver, with_compression)
|
140
160
|
when /msys/
|
141
|
-
|
161
|
+
msys_libraries(ruby_ver, with_compression)
|
142
162
|
else
|
143
163
|
raise Tebako::Error, "Unknown ostype #{ostype}"
|
144
164
|
end
|
@@ -30,25 +30,23 @@ module Tebako
|
|
30
30
|
module Packager
|
31
31
|
# Ruby patching literals (pass2)
|
32
32
|
module PatchLiterals
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
if v_head_comp == v[0...(v_head_comp.length)]
|
38
|
-
v = "\#{v[0...(v_head_comp.length)]}'/__tebako_memfs__'
|
39
|
-
"
|
40
|
-
end
|
41
|
-
v_head_comp = " CONFIG[\\"RUBY_EXEC_PREFIX\\"] \#{eq} "
|
42
|
-
if v_head_comp == v[0...(v_head_comp.length)]
|
33
|
+
TOOL_MKCONFIG_RB_SUBST = <<~SUBST
|
34
|
+
# -- Start of tebako patch --
|
35
|
+
v_head_comp = " CONFIG[\\"prefix\\"] \#{eq} "
|
36
|
+
if v_head_comp == v[0...(v_head_comp.length)]
|
43
37
|
v = "\#{v[0...(v_head_comp.length)]}'/__tebako_memfs__'
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
38
|
+
"
|
39
|
+
end
|
40
|
+
v_head_comp = " CONFIG[\\"RUBY_EXEC_PREFIX\\"] \#{eq} "
|
41
|
+
if v_head_comp == v[0...(v_head_comp.length)]
|
42
|
+
v = "\#{v[0...(v_head_comp.length)]}'/__tebako_memfs__'
|
43
|
+
"
|
44
|
+
end
|
45
|
+
# -- End of tebako patch --
|
46
|
+
if fast[name]
|
47
|
+
SUBST
|
50
48
|
|
51
|
-
|
49
|
+
TOOL_MKCONFIG_RB_SUBST_MSYS = <<~SUBST
|
52
50
|
# -- Start of tebako patch --
|
53
51
|
v_head_comp = " CONFIG[\\"prefix\\"] \#{eq} "
|
54
52
|
if v_head_comp == v[0...(v_head_comp.length)]
|
data/lib/tebako/version.rb
CHANGED
data/src/tebako-main.cpp
CHANGED
@@ -156,3 +156,10 @@ extern "C" const char* tebako_mount_point(void) {
|
|
156
156
|
extern "C" int tebako_is_running_miniruby(void) {
|
157
157
|
return running_miniruby;
|
158
158
|
}
|
159
|
+
|
160
|
+
#ifdef RB_W32_PRE_33
|
161
|
+
extern "C" ssize_t rb_w32_pread(int /* fd */, void* /* buf */, size_t /* size */, size_t /* offset */)
|
162
|
+
{
|
163
|
+
return -1;
|
164
|
+
}
|
165
|
+
#endif
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tebako
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|