tebako 0.6.5 → 0.7.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 +29 -37
- data/README.adoc +9 -5
- data/common.env +1 -1
- data/exe/tebako-packager +19 -0
- data/lib/tebako/cli_helpers.rb +1 -1
- data/lib/tebako/cli_rubies.rb +3 -1
- data/lib/tebako/packager/pass1.rb +1 -1
- data/lib/tebako/packager/pass1a.rb +46 -0
- data/lib/tebako/packager/pass2.rb +12 -5
- data/lib/tebako/packager/patch_helpers.rb +13 -2
- data/lib/tebako/packager.rb +21 -5
- data/lib/tebako/stripper.rb +94 -0
- data/lib/tebako/version.rb +1 -1
- data/tools/ci-scripts/patch-fbthrift.sh +3 -56
- data/tools/ci-scripts/patch-folly.sh +52 -10
- data/version.txt +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0c260fa919b77603c20cc5db12e51595c0a0fd0da649dd6f64d2022bebc50dc
|
4
|
+
data.tar.gz: 1bd24a7fa0d74fb44b95f0b5f41f736323553725741327b130cfadc36cb45cb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 145fe0a5fe1cb275c21db9e9d4b9092e7c7b342ee43e232d1a6e61a5bc606c62329c9a6a0082843a8b7c017667fda09317c1faa2f3371687e5e64c4a49a176b2
|
7
|
+
data.tar.gz: 4708ff850fc763b41d7e1d8e84bee81d4c6a17f1653ac6f697f39e7146fe8acb60ca7922ac1ff7693086fae3f5216d82d83bd1cb97b596c9607769ce022c00f0
|
data/CMakeLists.txt
CHANGED
@@ -235,11 +235,11 @@ endif(DWARFS_PRELOAD)
|
|
235
235
|
# Filesystem locations
|
236
236
|
|
237
237
|
# DATA_SRC_DIR folder is used to collect all files that need to be packaged
|
238
|
-
set(DATA_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/
|
238
|
+
set(DATA_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/s)
|
239
239
|
# DATA_PRE_DIR folder is used to build gems that need to be packaged
|
240
|
-
set(DATA_PRE_DIR ${CMAKE_CURRENT_BINARY_DIR}/
|
240
|
+
set(DATA_PRE_DIR ${CMAKE_CURRENT_BINARY_DIR}/r)
|
241
241
|
# DATA_BIN_DIR folder is used to create packaged filesystem
|
242
|
-
set(DATA_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}/
|
242
|
+
set(DATA_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}/p)
|
243
243
|
# DATA_BIN_FILE is packaged filesystem itself
|
244
244
|
set(DATA_BIN_FILE ${DATA_BIN_DIR}/fs.bin)
|
245
245
|
# Target binary directory
|
@@ -360,7 +360,7 @@ else(IS_DARWIN)
|
|
360
360
|
|
361
361
|
if(RB_W32)
|
362
362
|
string(CONCAT RUBY_C_FLAGS ${RUBY_C_FLAGS} " -DRB_W32=1")
|
363
|
-
string(CONCAT RUBY_L_FLAGS ${RUBY_L_FLAGS} " -L${TLIBD}")
|
363
|
+
string(CONCAT RUBY_L_FLAGS ${RUBY_L_FLAGS} " -l:libstdc++.a -L${TLIBD}")
|
364
364
|
endif(RB_W32)
|
365
365
|
endif(IS_DARWIN)
|
366
366
|
|
@@ -388,6 +388,7 @@ ExternalProject_Add(${RUBY_PRJ}
|
|
388
388
|
--prefix=${DATA_SRC_DIR} \
|
389
389
|
${C_FLAGS_DEST}=\"${RUBY_C_FLAGS}\" \
|
390
390
|
LDFLAGS=\"${RUBY_L_FLAGS}\""
|
391
|
+
COMMAND ruby ${EXE}/tebako-packager pass1a ${RUBY_SOURCE_DIR}
|
391
392
|
BUILD_COMMAND make ${RUBY_MAKEFILE} -j${NCORES}
|
392
393
|
INSTALL_COMMAND make ${RUBY_MAKEFILE} install
|
393
394
|
COMMAND ${GNU_BASH} -c "ruby ${EXE}/tebako-packager pass2 ${OSTYPE_TXT} ${RUBY_SOURCE_DIR} ${DEPS_LIB_DIR} ${DATA_SRC_DIR} ${RUBY_STASH_DIR} ${RUBY_VER}"
|
@@ -432,27 +433,31 @@ else (${SETUP_MODE})
|
|
432
433
|
message("Collecting gem from gemspec ${GEMSPEC} and Gemfile")
|
433
434
|
set(FS_ENTRY_POINT "/bin/${FS_ENTRANCE}")
|
434
435
|
add_custom_target(source_filesystem
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
436
|
+
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${FS_ROOT} -DTARGET_DIR=${DATA_PRE_DIR} -P ${CMAKE_SOURCE_DIR}/cmake/copy_dir.cmake
|
437
|
+
COMMAND ${CMAKE_COMMAND} -E make_directory ${TGD}
|
438
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
439
|
+
${TBD}/bundle${BAT_SUFFIX} config set --local build.ffi --disable-system-libffi
|
440
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
441
|
+
${TBD}/bundle${BAT_SUFFIX} config set --local build.nokogiri --use-system-libraries
|
442
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
443
|
+
${TBD}/bundle${BAT_SUFFIX} config set --local force_ruby_platform ${FORCE_RUBY_PLATFORM}
|
444
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
445
|
+
${TBD}/bundle${BAT_SUFFIX} install
|
446
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
447
|
+
${TBD}/bundle${BAT_SUFFIX} exec ${TBD}/gem${CMD_SUFFIX} build ${GEMSPEC}
|
448
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
449
|
+
${TBD}/gem${CMD_SUFFIX} install *.gem --verbose --no-document --install-dir ${TGD}
|
450
|
+
COMMAND test -f ${DATA_SRC_DIR}${FS_ENTRY_POINT} ||
|
446
451
|
(${CMAKE_COMMAND} -E echo "Entry point ${DATA_SRC_DIR}${FS_ENTRY_POINT} does not exist" &&
|
447
452
|
${CMAKE_COMMAND} -E false )
|
448
|
-
|
453
|
+
DEPENDS clean_filesystem
|
449
454
|
)
|
450
455
|
else(GFLENGTH GREATER 0)
|
451
456
|
# Found xxx.gemspec but no Gemfile
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
457
|
+
message("Collecting gem from gemspec ${GEMSPEC}")
|
458
|
+
set(FS_ENTRY_POINT "/bin/${FS_ENTRANCE}")
|
459
|
+
message("Target entry point will be at ${FS_MOUNT_POINT}${FS_ENTRY_POINT}")
|
460
|
+
add_custom_target(source_filesystem
|
456
461
|
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${FS_ROOT} -DTARGET_DIR=${DATA_PRE_DIR} -P ${CMAKE_SOURCE_DIR}/cmake/copy_dir.cmake
|
457
462
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${TGD}
|
458
463
|
COMMAND ${CMAKE_COMMAND} -E chdir ${DATA_PRE_DIR} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
@@ -478,7 +483,9 @@ else (${SETUP_MODE})
|
|
478
483
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${TLD}
|
479
484
|
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${FS_ROOT} -DTARGET_DIR=${TLD} -P ${CMAKE_SOURCE_DIR}/cmake/copy_dir.cmake
|
480
485
|
COMMAND ${CMAKE_COMMAND} -E chdir ${TLD} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
481
|
-
${TBD}/bundle${BAT_SUFFIX} config build.ffi --disable-system-libffi
|
486
|
+
${TBD}/bundle${BAT_SUFFIX} config set --local build.ffi --disable-system-libffi
|
487
|
+
COMMAND ${CMAKE_COMMAND} -E chdir ${TLD} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
488
|
+
${TBD}/bundle${BAT_SUFFIX} config set --local build.nokogiri --use-system-libraries
|
482
489
|
COMMAND ${CMAKE_COMMAND} -E chdir ${TLD} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
483
490
|
${TBD}/bundle${BAT_SUFFIX} config set --local force_ruby_platform ${FORCE_RUBY_PLATFORM}
|
484
491
|
COMMAND ${CMAKE_COMMAND} -E chdir ${TLD} ${CMAKE_COMMAND} -E env --unset=GEM_HOME --unset=GEM_PATH TEBAKO_PASS_THROUGH=1
|
@@ -543,22 +550,7 @@ else (${SETUP_MODE})
|
|
543
550
|
)
|
544
551
|
|
545
552
|
add_custom_target(packaged_filesystem
|
546
|
-
|
547
|
-
# For debugging purposes it is very handy to have it here
|
548
|
-
#
|
549
|
-
COMMAND ${CMAKE_COMMAND} -E rm -rf ${DATA_SRC_DIR}/share ${DATA_SRC_DIR}/include ${DATA_SRC_DIR}/lib/pkgconfig
|
550
|
-
${DATA_SRC_DIR}/bin/bundle${CMD_SUFFIX} ${DATA_SRC_DIR}/bin/bundle
|
551
|
-
${DATA_SRC_DIR}/bin/bundler${CMD_SUFFIX} ${DATA_SRC_DIR}/bin/bundler
|
552
|
-
${DATA_SRC_DIR}/bin/bundle${BAT_SUFFIX} ${DATA_SRC_DIR}/bin/bundler${BAT_SUFFIX}
|
553
|
-
${DATA_SRC_DIR}/bin/erb${CMD_SUFFIX} ${DATA_SRC_DIR}/bin/gem${CMD_SUFFIX}
|
554
|
-
${DATA_SRC_DIR}/bin/irb${CMD_SUFFIX} ${DATA_SRC_DIR}/bin/racc${CMD_SUFFIX}
|
555
|
-
${DATA_SRC_DIR}/bin/racc2y${CMD_SUFFIX} ${DATA_SRC_DIR}/bin/rake${BAT_SUFFIX}
|
556
|
-
${DATA_SRC_DIR}/bin/rake ${DATA_SRC_DIR}/bin/rdoc${CMD_SUFFIX}
|
557
|
-
${DATA_SRC_DIR}/bin/ri${CMD_SUFFIX} ${DATA_SRC_DIR}/bin/y2racc${CMD_SUFFIX}
|
558
|
-
${DATA_SRC_DIR}/bin/ruby${EXE_SUFFIX} ${DATA_SRC_DIR}/bin/ruby${RUBY_SUFFIX}${EXE_SUFFIX}
|
559
|
-
|
560
|
-
COMMAND ${GNU_BASH} -c "rm -f ${DATA_SRC_DIR}/**/*.a"
|
561
|
-
COMMAND ${GNU_BASH} -c "rm -f ${DATA_SRC_DIR}/**/*.o"
|
553
|
+
COMMAND ruby ${EXE}/tebako-packager strip ${OSTYPE_TXT} ${DATA_SRC_DIR}
|
562
554
|
COMMAND ${GNU_BASH} -c "chmod +x ${DEPS_BIN_DIR}/mkdwarfs${EXE_SUFFIX}"
|
563
555
|
# No progress below is critical since in reporting mode mkdwarfs tries to work directly with terminal
|
564
556
|
# and it creates issues for stderr redirects (&2 > 1) used by Ninja and our test srcipts
|
data/README.adoc
CHANGED
@@ -46,7 +46,7 @@ The Tebako packager supports the following versions of Ruby for packaging:
|
|
46
46
|
|
47
47
|
* 2.7.8 (Linux, MacOS)
|
48
48
|
* 3.0.7 (Linux, MacOS)
|
49
|
-
* 3.1.4, 3.1.5 (Linux, MacOS, Windows)
|
49
|
+
* 3.1.4, 3.1.5, 3.1.6 (Linux, MacOS, Windows)
|
50
50
|
* 3.2.3, 3.2.4 (Linux, MacOS, Windows)
|
51
51
|
|
52
52
|
Support of specific version including minor release requires some effort, sometimes extensive
|
@@ -128,10 +128,9 @@ brew install gnu-sed bash pkg-config bison flex binutils libffi gdbm zlib ncurse
|
|
128
128
|
double-conversion boost jemalloc fmt glog libevent libsodium lz4 xz libyaml openssl@3
|
129
129
|
----
|
130
130
|
|
131
|
-
=== Windows (2019, 2022)
|
131
|
+
=== Windows (workstation 10, 11; Server 2019, 2022)
|
132
132
|
|
133
133
|
The simplest approach is to use Ruby development environment provided by RubyInstaller, for example Ruby+Devkit 3.1.4-1.
|
134
|
-
|
135
134
|
Once it is installed use the following commands:
|
136
135
|
|
137
136
|
[source,sh]
|
@@ -142,6 +141,11 @@ Once it is installed use the following commands:
|
|
142
141
|
fmt glog dlfcn gtest autotools ncurses libyaml
|
143
142
|
----
|
144
143
|
|
144
|
+
Please note that on Windows tebako may face issues related by CMake path length limitations.
|
145
|
+
(https://gitlab.kitware.com/cmake/cmake/-/issues/25936)
|
146
|
+
This error may affect not tebako itself but the gems that need to be package and use CMake to build native extensions.
|
147
|
+
There is no workaround for this issue as it lloks like is a limitation of the manifest used to build CMake executable.
|
148
|
+
|
145
149
|
== Installation
|
146
150
|
|
147
151
|
=== General
|
@@ -275,7 +279,7 @@ based on ```tebako setup``` output. Building cache based on ```tebako press``` m
|
|
275
279
|
----
|
276
280
|
tebako setup \
|
277
281
|
[-p |--prefix=<tebako-root-folder>] \
|
278
|
-
[-R |--Ruby=<2.7.8|3.0.7|3.1.4|3.1.5|3.2.3|3.2.4>]
|
282
|
+
[-R |--Ruby=<2.7.8|3.0.7|3.1.4|3.1.5|3.1.6|3.2.3|3.2.4>]
|
279
283
|
----
|
280
284
|
|
281
285
|
Where:
|
@@ -283,7 +287,7 @@ Where:
|
|
283
287
|
* `<tebako-root-folder>`, the Tebako setup folder (optional, defaults to current
|
284
288
|
folder)
|
285
289
|
|
286
|
-
* `Ruby` parameter defines Ruby version that will be packaged (optional, defaults to 3.1.
|
290
|
+
* `Ruby` parameter defines Ruby version that will be packaged (optional, defaults to 3.1.6)
|
287
291
|
|
288
292
|
==== Clean
|
289
293
|
|
data/common.env
CHANGED
data/exe/tebako-packager
CHANGED
@@ -27,6 +27,7 @@
|
|
27
27
|
# POSSIBILITY OF SUCH DAMAGE.
|
28
28
|
|
29
29
|
require_relative "../lib/tebako/packager"
|
30
|
+
require_relative "../lib/tebako/stripper"
|
30
31
|
|
31
32
|
begin
|
32
33
|
unless ARGV.length.positive?
|
@@ -57,6 +58,24 @@ begin
|
|
57
58
|
end
|
58
59
|
|
59
60
|
Tebako::Packager.stash(ARGV[1], ARGV[2])
|
61
|
+
when "strip"
|
62
|
+
# ARGV[0] -- command
|
63
|
+
# ARGV[1] -- OSTYPE
|
64
|
+
# ARGV[2] -- DATA_SRC_DIR
|
65
|
+
unless ARGV.length == 3
|
66
|
+
raise Tebako::Error,
|
67
|
+
"tebako-packager strip command expects 3 arguments, #{ARGV.length} has been provided."
|
68
|
+
end
|
69
|
+
|
70
|
+
Tebako::Stripper.strip(ARGV[1], ARGV[2])
|
71
|
+
when "pass1a"
|
72
|
+
# ARGV[0] -- command
|
73
|
+
# ARGV[1] -- RUBY_SOURCE_DIR
|
74
|
+
unless ARGV.length == 2
|
75
|
+
raise Tebako::Error,
|
76
|
+
"tebako-packager pass1a command expects 2 arguments, #{ARGV.length} has been provided."
|
77
|
+
end
|
78
|
+
Tebako::Packager.pass1a(ARGV[1])
|
60
79
|
when "pass2"
|
61
80
|
# ARGV[0] -- command
|
62
81
|
# ARGV[1] -- OSTYPE
|
data/lib/tebako/cli_helpers.rb
CHANGED
data/lib/tebako/cli_rubies.rb
CHANGED
@@ -42,11 +42,13 @@ module Tebako
|
|
42
42
|
"3.0.7" => "2a3411977f2850431136b0fab8ad53af09fb74df2ee2f4fb7f11b378fe034388",
|
43
43
|
"3.1.4" => "a3d55879a0dfab1d7141fdf10d22a07dbf8e5cdc4415da1bde06127d5cc3c7b6",
|
44
44
|
"3.1.5" => "3685c51eeee1352c31ea039706d71976f53d00ab6d77312de6aa1abaf5cda2c5",
|
45
|
+
"3.1.6" => "0d0dafb859e76763432571a3109d1537d976266be3083445651dc68deed25c22",
|
45
46
|
"3.2.3" => "af7f1757d9ddb630345988139211f1fd570ff5ba830def1cc7c468ae9b65c9ba",
|
46
47
|
"3.2.4" => "c72b3c5c30482dca18b0f868c9075f3f47d8168eaf626d4e682ce5b59c858692"
|
48
|
+
# "3.3.3" => "83c05b2177ee9c335b631b29b8c077b4770166d02fa527f3a9f6a40d13f3cce2"
|
47
49
|
}.freeze
|
48
50
|
|
49
|
-
DEFAULT_RUBY_VERSION = "3.1.
|
51
|
+
DEFAULT_RUBY_VERSION = "3.1.6"
|
50
52
|
|
51
53
|
def version_check(version)
|
52
54
|
return if RUBY_VERSIONS.key?(version)
|
@@ -150,7 +150,7 @@ module Tebako
|
|
150
150
|
# Generate export definitions; use WinMain to build rubyw.exe
|
151
151
|
patch_map.store("cygwin/GNUmakefile.in", get_gnumakefile_in_patch_p1(ruby_ver))
|
152
152
|
# ....................................................
|
153
|
-
# RUBY_EXPORT=1 (shall
|
153
|
+
# RUBY_EXPORT=1 (shall be set for static builds but is missing in openssl extension)
|
154
154
|
patch_map.store("ext/openssl/extconf.rb", OPENSSL_EXTCONF_RB_PATCH)
|
155
155
|
end
|
156
156
|
|
@@ -0,0 +1,46 @@
|
|
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
|
+
require_relative "patch_literals"
|
29
|
+
|
30
|
+
# Tebako - an executable packager
|
31
|
+
module Tebako
|
32
|
+
module Packager
|
33
|
+
# Ruby patching definitions (pass1a)
|
34
|
+
module Pass1A
|
35
|
+
class << self
|
36
|
+
def get_patch_map # rubocop:disable Naming/AccessorMethodName
|
37
|
+
{
|
38
|
+
"gem_prelude.rb" => GEM_PRELUDE_RB_PATCH
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
include Tebako::Packager::PatchLiterals
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -58,7 +58,7 @@ module Tebako
|
|
58
58
|
|
59
59
|
def get_dir_c_patch(ostype)
|
60
60
|
pattern = PatchHelpers.msys?(ostype) ? "/* define system APIs */" : "#ifdef HAVE_GETATTRLIST"
|
61
|
-
dir_c_patch = PatchHelpers.
|
61
|
+
dir_c_patch = PatchHelpers.patch_c_file_pre(pattern)
|
62
62
|
dir_c_patch.merge!(DIR_C_BASE_PATCH)
|
63
63
|
dir_c_patch
|
64
64
|
end
|
@@ -85,11 +85,19 @@ module Tebako
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def get_io_c_patch(ostype, ruby_ver)
|
88
|
-
io_c_patch = PatchHelpers.
|
88
|
+
io_c_patch = PatchHelpers.patch_c_file_pre("/* define system APIs */")
|
89
89
|
io_c_patch.merge!(get_io_c_msys_patch(ruby_ver)) if PatchHelpers.msys?(ostype)
|
90
90
|
io_c_patch
|
91
91
|
end
|
92
92
|
|
93
|
+
def get_util_c_patch(ruby_ver)
|
94
|
+
if PatchHelpers.ruby316?(ruby_ver)
|
95
|
+
PatchHelpers.patch_c_file_post("#endif /* !HAVE_GNU_QSORT_R */")
|
96
|
+
else
|
97
|
+
PatchHelpers.patch_c_file_pre("#ifndef S_ISDIR")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
93
101
|
def get_msys_mkconfig_rb_patches(ruby_ver)
|
94
102
|
{
|
95
103
|
" if fast[name]" => TOOLS_MKCONFIG_RB_SUBST,
|
@@ -115,11 +123,10 @@ module Tebako
|
|
115
123
|
{
|
116
124
|
"template/Makefile.in" => template_makefile_in_patch(ostype, deps_lib_dir, ruby_ver),
|
117
125
|
"tool/mkconfig.rb" => mcrb_subst,
|
118
|
-
"gem_prelude.rb" => GEM_PRELUDE_RB_PATCH,
|
119
126
|
"dir.c" => get_dir_c_patch(ostype), "dln.c" => get_dln_c_patch(ostype, ruby_ver),
|
120
127
|
"io.c" => get_io_c_patch(ostype, ruby_ver), "main.c" => MAIN_C_PATCH,
|
121
|
-
"file.c" => PatchHelpers.
|
122
|
-
"util.c" =>
|
128
|
+
"file.c" => PatchHelpers.patch_c_file_pre("/* define system APIs */"),
|
129
|
+
"util.c" => get_util_c_patch(ruby_ver)
|
123
130
|
}
|
124
131
|
end
|
125
132
|
|
@@ -40,6 +40,7 @@ module Tebako
|
|
40
40
|
puts " ... patching #{fname}"
|
41
41
|
restore_and_save(fname)
|
42
42
|
contents = File.read(fname)
|
43
|
+
|
43
44
|
mapping.each { |pattern, subst| contents.sub!(pattern, subst) }
|
44
45
|
File.open(fname, "w") { |file| file << contents }
|
45
46
|
end
|
@@ -65,12 +66,18 @@ module Tebako
|
|
65
66
|
ostype =~ /msys|cygwin|mingw/
|
66
67
|
end
|
67
68
|
|
68
|
-
def
|
69
|
+
def patch_c_file_pre(pattern)
|
69
70
|
{
|
70
71
|
pattern => "#{PatchLiterals::C_FILE_SUBST}\n#{pattern}"
|
71
72
|
}
|
72
73
|
end
|
73
74
|
|
75
|
+
def patch_c_file_post(pattern)
|
76
|
+
{
|
77
|
+
pattern => "#{pattern}\n\n#{PatchLiterals::C_FILE_SUBST}"
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
74
81
|
def recreate(dirname)
|
75
82
|
FileUtils.rm_rf(dirname, noop: nil, verbose: nil, secure: true)
|
76
83
|
FileUtils.mkdir(dirname)
|
@@ -101,12 +108,16 @@ module Tebako
|
|
101
108
|
ruby3x?(ruby_ver) && ruby_ver[2].to_i >= 1
|
102
109
|
end
|
103
110
|
|
111
|
+
def ruby316?(ruby_ver)
|
112
|
+
ruby3x?(ruby_ver) && ruby_ver[2] == "1" && ruby_ver[4].to_i >= 6
|
113
|
+
end
|
114
|
+
|
104
115
|
def ruby32?(ruby_ver)
|
105
116
|
ruby3x?(ruby_ver) && ruby_ver[2].to_i >= 2
|
106
117
|
end
|
107
118
|
|
108
119
|
def ruby32only?(ruby_ver)
|
109
|
-
ruby3x?(ruby_ver) && ruby_ver[2]
|
120
|
+
ruby3x?(ruby_ver) && ruby_ver[2] == "2"
|
110
121
|
end
|
111
122
|
|
112
123
|
def ruby33?(ruby_ver)
|
data/lib/tebako/packager.rb
CHANGED
@@ -29,6 +29,7 @@ require "fileutils"
|
|
29
29
|
|
30
30
|
require_relative "error"
|
31
31
|
require_relative "packager/pass1"
|
32
|
+
require_relative "packager/pass1a"
|
32
33
|
require_relative "packager/pass2"
|
33
34
|
require_relative "packager/patch_helpers"
|
34
35
|
|
@@ -73,11 +74,8 @@ module Tebako
|
|
73
74
|
class << self
|
74
75
|
# Create implib
|
75
76
|
def create_implib(src_dir, package_src_dir, app_name, ruby_ver)
|
77
|
+
create_def(src_dir, app_name)
|
76
78
|
puts " ... creating Windows import library"
|
77
|
-
File.open(def_fname(src_dir, app_name), "w") do |file|
|
78
|
-
file.puts "LIBRARY #{out_fname(app_name)}"
|
79
|
-
file.puts File.read(File.join(src_dir, "tebako.def"))
|
80
|
-
end
|
81
79
|
params = ["dlltool", "-d", def_fname(src_dir, app_name), "-D", out_fname(app_name),
|
82
80
|
"--output-lib", lib_fname(package_src_dir, ruby_ver)]
|
83
81
|
out, st = Open3.capture2e(*params)
|
@@ -111,13 +109,21 @@ module Tebako
|
|
111
109
|
PatchHelpers.recreate(src_dir)
|
112
110
|
do_patch(Pass1.get_patch_map(ostype, mount_point, ruby_ver), ruby_source_dir)
|
113
111
|
|
114
|
-
# Roll back pass2 patches
|
112
|
+
# Roll back pass1a, pass2 patches
|
115
113
|
# Just in case we are recovering after some error
|
116
114
|
PatchHelpers.restore_and_save_files(FILES_TO_RESTORE, ruby_source_dir)
|
117
115
|
PatchHelpers.restore_and_save_files(FILES_TO_RESTORE_MUSL, ruby_source_dir) if ostype =~ /linux-musl/
|
118
116
|
PatchHelpers.restore_and_save_files(FILES_TO_RESTORE_MSYS, ruby_source_dir) if ostype =~ /msys/
|
119
117
|
end
|
120
118
|
|
119
|
+
# Pass1A
|
120
|
+
# Patch gem_prelude.rb
|
121
|
+
def pass1a(ruby_source_dir)
|
122
|
+
puts "-- Running pass1a script"
|
123
|
+
|
124
|
+
do_patch(Pass1A.get_patch_map, ruby_source_dir)
|
125
|
+
end
|
126
|
+
|
121
127
|
# Pass2
|
122
128
|
# Creates packaging environment, patching ensures that tebako package is linked statically
|
123
129
|
def pass2(ostype, ruby_source_dir, deps_lib_dir, ruby_ver)
|
@@ -146,6 +152,16 @@ module Tebako
|
|
146
152
|
|
147
153
|
private
|
148
154
|
|
155
|
+
def create_def(src_dir, app_name)
|
156
|
+
puts " ... creating Windows def file"
|
157
|
+
File.open(def_fname(src_dir, app_name), "w") do |file|
|
158
|
+
file.puts "LIBRARY #{out_fname(app_name)}"
|
159
|
+
File.readlines(File.join(src_dir, "tebako.def")).each do |line|
|
160
|
+
file.puts line unless line.include?("DllMain")
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
149
165
|
def def_fname(src_dir, app_name)
|
150
166
|
File.join(src_dir, "#{app_name}.def")
|
151
167
|
end
|
@@ -0,0 +1,94 @@
|
|
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
|
+
require "fileutils"
|
29
|
+
require "find"
|
30
|
+
|
31
|
+
# Tebako - an executable packager
|
32
|
+
module Tebako
|
33
|
+
# Tebako packaging support (stripper)
|
34
|
+
module Stripper
|
35
|
+
DELETE_EXTENSIONS = %w[o lo obj a lib].freeze
|
36
|
+
STRIP_EXTENSIONS = %w[dll so].freeze
|
37
|
+
BIN_FILES = %w[
|
38
|
+
bundle bundler rbs erb gem irb racc racc2y rake rdoc ri y2racc rdbg typeprof
|
39
|
+
].freeze
|
40
|
+
CMD_SUFFIX = ".cmd"
|
41
|
+
BAT_SUFFIX = ".bat"
|
42
|
+
|
43
|
+
class << self
|
44
|
+
# Strip
|
45
|
+
# Removes build artefacts, strip shared objects
|
46
|
+
# [TODO] We probably need debug option/flag to say whether we shall delete ruby binaries
|
47
|
+
# from memfs or not. For debugging purposes it is very handy to have it here
|
48
|
+
def strip(ostype, src_dir)
|
49
|
+
puts " ... stripping the output"
|
50
|
+
strip_bs(ostype, src_dir)
|
51
|
+
strip_fi(ostype, src_dir)
|
52
|
+
strip_li(ostype, src_dir)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def get_files(ostype)
|
58
|
+
exe_suffix = ostype =~ /msys/ ? ".exe" : ""
|
59
|
+
files = BIN_FILES.flat_map do |f|
|
60
|
+
[f, "#{f}#{CMD_SUFFIX}", "#{f}#{BAT_SUFFIX}"]
|
61
|
+
end
|
62
|
+
|
63
|
+
files += ["ruby#{exe_suffix}", "rubyw#{exe_suffix}"]
|
64
|
+
files
|
65
|
+
end
|
66
|
+
|
67
|
+
def strip_bs(_ostype, src_dir)
|
68
|
+
FileUtils.rm_rf([
|
69
|
+
File.join(src_dir, "share"),
|
70
|
+
File.join(src_dir, "include"),
|
71
|
+
File.join(src_dir, "lib", "pkgconfig")
|
72
|
+
])
|
73
|
+
end
|
74
|
+
|
75
|
+
def strip_fi(ostype, src_dir)
|
76
|
+
files = get_files(ostype).map { |f| "#{src_dir}/bin/#{f}" }
|
77
|
+
FileUtils.rm(files, force: true)
|
78
|
+
end
|
79
|
+
|
80
|
+
def strip_li(ostype, src_dir)
|
81
|
+
Find.find(src_dir) do |file|
|
82
|
+
next if File.directory?(file)
|
83
|
+
|
84
|
+
extension = File.extname(file).delete_prefix(".").downcase
|
85
|
+
if DELETE_EXTENSIONS.include?(extension)
|
86
|
+
FileUtils.rm(file)
|
87
|
+
elsif STRIP_EXTENSIONS.include?(extension)
|
88
|
+
system("strip \"#{file}\"") unless ostype =~ /darwin/
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
data/lib/tebako/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#! /bin/bash
|
2
|
-
# Copyright (c) 2022, [Ribose Inc](https://www.ribose.com).
|
2
|
+
# Copyright (c) 2022,2024 [Ribose Inc](https://www.ribose.com).
|
3
3
|
# All rights reserved.
|
4
4
|
# This file is a part of tebako
|
5
5
|
#
|
@@ -43,70 +43,17 @@ do_patch_multiline() {
|
|
43
43
|
"$gSed" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1"
|
44
44
|
}
|
45
45
|
|
46
|
-
# ....................................................
|
47
|
-
# Surprise, surprise ... Upstream project shall found boost libraries for fbthrift
|
48
|
-
# https://github.com/facebook/fbthrift/commit/c23af9dee42374d43d2f10e0e07edf1c1c97c328
|
49
|
-
|
50
|
-
|
51
46
|
if [[ "$OSTYPE" == "linux-gnu"* || "$OSTYPE" == "linux-musl"* || "$OSTYPE" == "msys" ]]; then
|
52
47
|
gSed="sed"
|
53
|
-
# shellcheck disable=SC2251
|
54
|
-
! IFS= read -r -d '' sbst << EOM
|
55
|
-
find_package(OpenSSL REQUIRED)
|
56
|
-
# -- Start of tebako patch --
|
57
|
-
find_package(Boost 1.65 REQUIRED COMPONENTS filesystem)
|
58
|
-
include_directories(\${Boost_INCLUDE_DIRS})
|
59
|
-
# -- End of tebako patch --
|
60
|
-
EOM
|
61
|
-
|
62
48
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
63
49
|
gSed="gsed"
|
64
|
-
|
65
|
-
# shellcheck disable=SC2251
|
66
|
-
! IFS= read -r -d '' sbst << EOM
|
67
|
-
find_package(OpenSSL REQUIRED)
|
68
|
-
# -- Start of tebako patch --
|
69
|
-
find_package(Boost 1.65 REQUIRED COMPONENTS filesystem)
|
70
|
-
include_directories(\${Boost_INCLUDE_DIRS})
|
71
|
-
# Suppress superfluous randlib warnings about \"*.a\" having no symbols on MacOSX.
|
72
|
-
set(CMAKE_C_ARCHIVE_CREATE \"<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>\")
|
73
|
-
set(CMAKE_CXX_ARCHIVE_CREATE \"<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>\")
|
74
|
-
set(CMAKE_C_ARCHIVE_FINISH \"<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>\")
|
75
|
-
set(CMAKE_CXX_ARCHIVE_FINISH \"<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>\")
|
76
|
-
# -- End of tebako patch --
|
77
|
-
EOM
|
78
|
-
|
79
50
|
else
|
80
51
|
echo "Unknown OSTYPE=$OSTYPE"
|
81
52
|
exit 1
|
82
53
|
fi
|
83
54
|
|
84
|
-
restore_and_save "$1/CMakeLists.txt"
|
85
|
-
re="find_package(OpenSSL REQUIRED)"
|
86
|
-
"$gSed" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/CMakeLists.txt"
|
87
|
-
|
88
|
-
# GCC 13 compatibility
|
89
|
-
# --- thrift/compiler/lib/cpp2/util.cc ---
|
90
|
-
re="#include <stdexcept>"
|
91
|
-
# shellcheck disable=SC2251
|
92
|
-
! IFS= read -r -d '' sbst << EOM
|
93
|
-
#include <stdexcept>
|
94
|
-
|
95
|
-
\/* -- Start of tebako patch -- *\/
|
96
|
-
#include <cstdint>
|
97
|
-
\/* -- End of tebako patch -- *\/
|
98
|
-
EOM
|
99
|
-
|
100
|
-
do_patch_multiline "$1/thrift/compiler/lib/cpp2/util.cc"
|
101
|
-
|
102
|
-
|
103
55
|
if [[ "$OSTYPE" == "msys" ]]; then
|
104
|
-
re="
|
105
|
-
sbst="
|
106
|
-
do_patch "$1/thrift/compiler/CMakeLists.txt" "$re" "$sbst"
|
107
|
-
|
108
|
-
re="ftruncate(file\.fd(), finalBufferSize);"
|
109
|
-
sbst="folly::portability::unistd::ftruncate(file.fd(), finalBufferSize); \/* tebako patched *\/"
|
56
|
+
re="ftruncate(file\.fd(), finalBufferSize),"
|
57
|
+
sbst="folly::portability::unistd::ftruncate(file.fd(), finalBufferSize), \/* tebako patched *\/"
|
110
58
|
do_patch "$1/thrift/lib/cpp2/frozen/FrozenUtil.h" "$re" "$sbst"
|
111
|
-
|
112
59
|
fi
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#! /bin/bash
|
2
|
-
# Copyright (c) 2022-
|
2
|
+
# Copyright (c) 2022-2024, [Ribose Inc](https://www.ribose.com).
|
3
3
|
# All rights reserved.
|
4
4
|
# This file is a part of tebako
|
5
5
|
#
|
@@ -41,6 +41,7 @@ restore_and_save() {
|
|
41
41
|
|
42
42
|
do_patch() {
|
43
43
|
restore_and_save "$1"
|
44
|
+
# echo "$GNU_SED" -i "s/$2/$3/g" "$1"
|
44
45
|
"$GNU_SED" -i "s/$2/$3/g" "$1"
|
45
46
|
}
|
46
47
|
|
@@ -316,15 +317,6 @@ EOM
|
|
316
317
|
sbst=" \/* tebako patched *\/ folly::portability::unistd::lseek(fd,"
|
317
318
|
do_patch "$1/folly/portability/SysUio.cpp" "$re" "$sbst"
|
318
319
|
|
319
|
-
# --- folly/portability/Unistd.cpp ---
|
320
|
-
re="(lseek(fd,"
|
321
|
-
sbst="( \/* tebako patched *\/ folly::portability::unistd::lseek(fd,"
|
322
|
-
do_patch "$1/folly/portability/Unistd.cpp" "$re" "$sbst"
|
323
|
-
|
324
|
-
re="lseek(fd, 0,"
|
325
|
-
sbst=" \/* tebako patched *\/ folly::portability::unistd::lseek(fd, 0,"
|
326
|
-
"$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.cpp"
|
327
|
-
|
328
320
|
# --- folly/logging/ImmediateFileWriter.h ---
|
329
321
|
re="isatty(file"
|
330
322
|
sbst=" \/* tebako patched *\/ folly::portability::unistd::isatty(file"
|
@@ -402,6 +394,7 @@ EOM
|
|
402
394
|
#ifdef __MINGW32__
|
403
395
|
#include <mswsock.h>
|
404
396
|
using cmsghdr = WSACMSGHDR;
|
397
|
+
#define CMSG_SPACE WSA_CMSG_SPACE
|
405
398
|
#endif
|
406
399
|
\/* -- End of tebako patch -- *\/
|
407
400
|
|
@@ -448,7 +441,55 @@ EOM
|
|
448
441
|
sbst="#if defined(__XROS__) || defined(__MINGW32__) \/* tebako patched *\/"
|
449
442
|
"$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/system/ThreadName.cpp"
|
450
443
|
|
444
|
+
# --- folly/net/NetOps.h ---
|
445
|
+
|
446
|
+
re="#include <WS2tcpip\.h> \/\/ @manual"
|
447
|
+
# shellcheck disable=SC2251
|
448
|
+
! IFS= read -r -d '' sbst << EOM
|
449
|
+
#include <WS2tcpip.h> \/\/ @manual
|
450
|
+
|
451
|
+
\/* -- Start of tebako patch -- *\/
|
452
|
+
#ifdef __MINGW32__
|
453
|
+
#include <memory>
|
454
|
+
#include <mswsock.h>
|
455
|
+
#endif
|
456
|
+
\/* -- End of tebako patch -- *\/
|
457
|
+
EOM
|
458
|
+
do_patch_multiline "$1/folly/net/NetOps.h" "$re" "$sbst"
|
459
|
+
|
460
|
+
# --- folly/Random.cpp ---
|
461
|
+
|
462
|
+
re="#include <folly\/synchronization\/RelaxedAtomic\.h>"
|
463
|
+
# shellcheck disable=SC2251
|
464
|
+
! IFS= read -r -d '' sbst << EOM
|
465
|
+
#include <folly\/synchronization\/RelaxedAtomic.h>
|
466
|
+
|
467
|
+
\/* -- Start of tebako patch -- *\/
|
468
|
+
#include <folly\/portability\/Fcntl.h>
|
469
|
+
\/* -- End of tebako patch -- *\/
|
470
|
+
EOM
|
471
|
+
do_patch_multiline "$1/folly/Random.cpp" "$re" "$sbst"
|
472
|
+
|
473
|
+
# --- folly/Utility.h ---
|
474
|
+
re="T uninit;"
|
475
|
+
sbst="T uninit = 0; \/* tebako patched *\/"
|
476
|
+
do_patch "$1/folly/Utility.h" "$re" "$sbst"
|
477
|
+
|
478
|
+
# --- folly/experimental/io/AsyncBase.cpp ---
|
479
|
+
re="CHECK_ERR(close(pollFd_));"
|
480
|
+
sbst="CHECK_ERR(folly::portability::unistd::close(pollFd_)); \/* tebako patched *\/"
|
481
|
+
do_patch "$1/folly/experimental/io/AsyncBase.cpp" "$re" "$sbst"
|
482
|
+
|
483
|
+
# --- folly/portability/Unistd.cpp ---
|
484
|
+
re="res = lseek64(fd, offset, whence);"
|
485
|
+
sbst="res = folly::portability::unistd::lseek64(fd, offset, whence); \/* tebako patched *\/ "
|
486
|
+
do_patch "$1/folly/portability/Unistd.cpp" "$re" "$sbst"
|
487
|
+
|
488
|
+
re="res = lseek(fd, offset, whence);"
|
489
|
+
sbst="res = folly::portability::unistd::lseek(fd, offset, whence); \/* tebako patched *\/ "
|
490
|
+
"$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.cpp"
|
451
491
|
# ---
|
492
|
+
|
452
493
|
defined_msc_ver_to_win32 "$1/folly/external/farmhash/farmhash.cpp"
|
453
494
|
defined_msc_ver_to_win32 "$1/folly/detail/IPAddressSource.h"
|
454
495
|
defined_msc_ver_to_win32 "$1/folly/portability/Sockets.cpp"
|
@@ -471,5 +512,6 @@ EOM
|
|
471
512
|
# while gettimeofday is provided by MSys, the other two functions are lost
|
472
513
|
defined_n_win32_to_msc_ver "$1/folly/portability/SysTime.h"
|
473
514
|
defined_win32_to_msc_ver "$1/folly/portability/SysTime.cpp"
|
515
|
+
defined_win32_to_msc_ver "$1/folly/lang/Exception.cpp"
|
474
516
|
|
475
517
|
fi
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.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.7.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-
|
11
|
+
date: 2024-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -69,11 +69,13 @@ files:
|
|
69
69
|
- lib/tebako/error.rb
|
70
70
|
- lib/tebako/packager.rb
|
71
71
|
- lib/tebako/packager/pass1.rb
|
72
|
+
- lib/tebako/packager/pass1a.rb
|
72
73
|
- lib/tebako/packager/pass2.rb
|
73
74
|
- lib/tebako/packager/patch_buildsystem.rb
|
74
75
|
- lib/tebako/packager/patch_helpers.rb
|
75
76
|
- lib/tebako/packager/patch_libraries.rb
|
76
77
|
- lib/tebako/packager/patch_literals.rb
|
78
|
+
- lib/tebako/stripper.rb
|
77
79
|
- lib/tebako/version.rb
|
78
80
|
- resources/tebako-fs.cpp.in
|
79
81
|
- resources/tebako-version.h.in
|
@@ -135,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
137
|
- !ruby/object:Gem::Version
|
136
138
|
version: '0'
|
137
139
|
requirements: []
|
138
|
-
rubygems_version: 3.5.
|
140
|
+
rubygems_version: 3.5.11
|
139
141
|
signing_key:
|
140
142
|
specification_version: 4
|
141
143
|
summary: Packager for Ruby executables
|