tebako 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,447 @@
|
|
1
|
+
#! /bin/bash
|
2
|
+
# Copyright (c) 2022, [Ribose Inc](https://www.ribose.com).
|
3
|
+
# All rights reserved.
|
4
|
+
# This file is a part of tebako
|
5
|
+
#
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
7
|
+
# modification, are permitted provided that the following conditions
|
8
|
+
# are met:
|
9
|
+
# 1. Redistributions of source code must retain the above copyright
|
10
|
+
# notice, this list of conditions and the following disclaimer.
|
11
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
12
|
+
# notice, this list of conditions and the following disclaimer in the
|
13
|
+
# documentation and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
16
|
+
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
17
|
+
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
18
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
|
19
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
20
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
21
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
22
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
23
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
24
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
25
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
|
27
|
+
set -o errexit -o pipefail -o noclobber -o nounset
|
28
|
+
|
29
|
+
# ....................................................
|
30
|
+
restore_and_save() {
|
31
|
+
echo "Patching $1"
|
32
|
+
test -e "$1.old" && cp -f "$1.old" "$1"
|
33
|
+
cp -f "$1" "$1.old"
|
34
|
+
}
|
35
|
+
|
36
|
+
do_patch() {
|
37
|
+
restore_and_save "$1"
|
38
|
+
sed -i "s/$2/$3/g" "$1"
|
39
|
+
}
|
40
|
+
|
41
|
+
do_patch_multiline() {
|
42
|
+
restore_and_save "$1"
|
43
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1"
|
44
|
+
}
|
45
|
+
|
46
|
+
defined_win32_to_msc_ver() {
|
47
|
+
re="defined(_WIN32)"
|
48
|
+
sbst="defined(_MSC_VER) \/* tebako patched *\/ "
|
49
|
+
do_patch "$1" "$re" "$sbst"
|
50
|
+
|
51
|
+
re="#ifdef _WIN32"
|
52
|
+
sbst="#ifdef _MSC_VER \/* tebako patched *\/ "
|
53
|
+
sed -i "s/$re/$sbst/g" "$1"
|
54
|
+
}
|
55
|
+
|
56
|
+
defined_n_win32_to_msc_ver() {
|
57
|
+
re="!defined(_WIN32)"
|
58
|
+
sbst="!defined(_MSC_VER) \/* tebako patched *\/ "
|
59
|
+
do_patch "$1" "$re" "$sbst"
|
60
|
+
|
61
|
+
re="#ifndef _WIN32"
|
62
|
+
sbst="#ifndef _MSC_VER \/* tebako patched *\/ "
|
63
|
+
sed -i "s/$re/$sbst/g" "$1"
|
64
|
+
}
|
65
|
+
|
66
|
+
defined_msc_ver_to_win32() {
|
67
|
+
re="defined(_MSC_VER)"
|
68
|
+
sbst="defined(_WIN32) \/* tebako patched *\/ "
|
69
|
+
do_patch "$1" "$re" "$sbst"
|
70
|
+
|
71
|
+
re="#ifdef _MSC_VER"
|
72
|
+
sbst="#ifdef _WIN32 \/* tebako patched *\/ "
|
73
|
+
sed -i "s/$re/$sbst/g" "$1"
|
74
|
+
}
|
75
|
+
|
76
|
+
funky_stdio_patch() {
|
77
|
+
re="int pclose(FILE\* f)"
|
78
|
+
sbst="int _folly_pclose(FILE* f) \/* tebako patched *\/"
|
79
|
+
do_patch "$1" "$re" "$sbst"
|
80
|
+
|
81
|
+
re="FILE\* popen(const char\* name, const char\* mode)"
|
82
|
+
sbst="FILE* _folly_popen(const char* name, const char* mode) \/* tebako patched *\/"
|
83
|
+
sed -i "s/$re/$sbst/g" "$1"
|
84
|
+
|
85
|
+
re="int vasprintf(char\*\* dest, const char\* format, va_list ap)"
|
86
|
+
sbst="int _folly_vasprintf(char** dest, const char* format, va_list ap) \/* tebako patched *\/"
|
87
|
+
sed -i "s/$re/$sbst/g" "$1"
|
88
|
+
}
|
89
|
+
|
90
|
+
funky_sysstat_patch() {
|
91
|
+
re="int chmod(char const\* fn, int am)"
|
92
|
+
sbst="int _folly_chmod(char const* fn, int am) \/* tebako patched *\/"
|
93
|
+
do_patch "$1" "$re" "$sbst"
|
94
|
+
|
95
|
+
re="int mkdir(const char\* fn, int mode)"
|
96
|
+
sbst="int _folly_mkdir(const char* fn, int mode) \/* tebako patched *\/"
|
97
|
+
sed -i "s/$re/$sbst/g" "$1"
|
98
|
+
|
99
|
+
re="int mkdir(const char\* fn, int \/\* mode \*\/)"
|
100
|
+
sbst="int _folly_mkdir(const char* fn, int \/* mode *\/) \/* tebako patched *\/"
|
101
|
+
sed -i "s/$re/$sbst/g" "$1"
|
102
|
+
|
103
|
+
re="int umask(int md)"
|
104
|
+
sbst="int _folly_umask(int md) \/* tebako patched *\/"
|
105
|
+
sed -i "s/$re/$sbst/g" "$1"
|
106
|
+
}
|
107
|
+
|
108
|
+
funky_string_patch() {
|
109
|
+
re="int strcasecmp(const char\* a, const char\* b)"
|
110
|
+
sbst="int _folly_strcasecmp(const char* a, const char* b) \/* tebako patched *\/"
|
111
|
+
do_patch "$1" "$re" "$sbst"
|
112
|
+
|
113
|
+
re="int strncasecmp(const char\* a, const char\* b, size_t c)"
|
114
|
+
sbst="int _folly_strncasecmp(const char* a, const char* b, size_t c) \/* tebako patched *\/"
|
115
|
+
sed -i "s/$re/$sbst/g" "$1"
|
116
|
+
}
|
117
|
+
|
118
|
+
funky_time_patch() {
|
119
|
+
re="char\* asctime_r(const tm\* tm, char\* buf)"
|
120
|
+
sbst="char* _folly_asctime_r(const tm* tm, char* buf) \/* tebako patched *\/"
|
121
|
+
do_patch "$1" "$re" "$sbst"
|
122
|
+
|
123
|
+
re="tm\* gmtime_r(const time_t\* t, tm\* res)"
|
124
|
+
sbst="tm* _folly_gmtime_r(const time_t* t, tm* res) \/* tebako patched *\/"
|
125
|
+
sed -i "s/$re/$sbst/g" "$1"
|
126
|
+
|
127
|
+
re="tm\* localtime_r(const time_t\* t, tm\* o)"
|
128
|
+
sbst="tm* _folly_localtime_r(const time_t* t, tm* o) \/* tebako patched *\/"
|
129
|
+
sed -i "s/$re/$sbst/g" "$1"
|
130
|
+
}
|
131
|
+
|
132
|
+
funky_formatter_patch() {
|
133
|
+
re="if (!localtime_r(&unixTimestamp, <ime)) {"
|
134
|
+
sbst="if (!_folly_localtime_r(\&unixTimestamp, \<ime)) { \/* tebako patched *\/"
|
135
|
+
do_patch "$1" "$re" "$sbst"
|
136
|
+
}
|
137
|
+
|
138
|
+
if [[ "$OSTYPE" == "linux-musl"* ]]; then
|
139
|
+
# https://github.com/facebook/folly/issues/1478
|
140
|
+
re="#elif defined(__FreeBSD__)"
|
141
|
+
sbst="#else \/* Tebako patched *\/"
|
142
|
+
do_patch "$1/folly/experimental/symbolizer/Elf.cpp" "$re" "$sbst"
|
143
|
+
|
144
|
+
restore_and_save "$1/CMake/FollyConfigChecks.cmake"
|
145
|
+
re="FOLLY_HAVE_IFUNC"
|
146
|
+
sbst="FOLLY_HAVE_IFUNC_NOT_PATCHED"
|
147
|
+
sed -i "s/$re/$sbst/g" "$1/CMake/FollyConfigChecks.cmake"
|
148
|
+
|
149
|
+
re="set(CMAKE_REQUIRED_FLAGS \"\${FOLLY_ORIGINAL_CMAKE_REQUIRED_FLAGS}\")"
|
150
|
+
|
151
|
+
# shellcheck disable=SC2251
|
152
|
+
! IFS= read -r -d '' sbst << EOM
|
153
|
+
set(CMAKE_REQUIRED_FLAGS \"\${FOLLY_ORIGINAL_CMAKE_REQUIRED_FLAGS}\")
|
154
|
+
|
155
|
+
# -- Start of tebako patch --
|
156
|
+
check_cxx_source_runs(\"
|
157
|
+
#pragma GCC diagnostic error \\\"-Wattributes\\\"
|
158
|
+
extern \\\"C\\\" int resolved_ifunc(void) { return 0; }
|
159
|
+
extern \\\"C\\\" int (*test_ifunc(void))() { return resolved_ifunc; }
|
160
|
+
int func() __attribute__((ifunc(\\\"test_ifunc\\\")));
|
161
|
+
int main() { return func(); }\"
|
162
|
+
FOLLY_HAVE_IFUNC
|
163
|
+
)
|
164
|
+
# -- End of tebako patch --
|
165
|
+
EOM
|
166
|
+
|
167
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/CMake/FollyConfigChecks.cmake"
|
168
|
+
|
169
|
+
elif [[ "$OSTYPE" == "msys"* ]]; then
|
170
|
+
# --- folly/portability/Stdlib.h ---
|
171
|
+
re="#define PATH_MAX _MAX_PATH"
|
172
|
+
sbst="\/* #define PATH_MAX _MAX_PATH --- tebako patched *\/"
|
173
|
+
do_patch "$1/folly/portability/Stdlib.h" "$re" "$sbst"
|
174
|
+
|
175
|
+
# --- folly/portability/Stdlib.cpp ---
|
176
|
+
re="ret = mkdir(ptr, 0700);"
|
177
|
+
sbst="ret = _folly_mkdir(ptr, 0700); \/* tebako patched *\/"
|
178
|
+
do_patch "$1/folly/portability/Stdlib.cpp" "$re" "$sbst"
|
179
|
+
|
180
|
+
# --- folly/portability/SysTypes.h ---
|
181
|
+
re="using pid_t = int;"
|
182
|
+
sbst="\/* using pid_t = int; --- tebako patched *\/"
|
183
|
+
do_patch "$1/folly/portability/SysTypes.h" "$re" "$sbst"
|
184
|
+
|
185
|
+
re="using mode_t = unsigned int;"
|
186
|
+
sbst="\/* using mode_t = unsigned int; --- tebako patched *\/"
|
187
|
+
sed -i "s/$re/$sbst/g" "$1/folly/portability/SysTypes.h"
|
188
|
+
|
189
|
+
re="using uid_t = int;"
|
190
|
+
sbst="using uid_t = short; \/* --- tebako patched *\/"
|
191
|
+
sed -i "s/$re/$sbst/g" "$1/folly/portability/SysTypes.h"
|
192
|
+
|
193
|
+
re="using gid_t = int;"
|
194
|
+
# shellcheck disable=SC2251
|
195
|
+
! IFS= read -r -d '' sbst << EOM
|
196
|
+
using gid_t = short; \/* --- tebako patched *\/
|
197
|
+
using nlink_t = short; \/* --- tebako patched *\/
|
198
|
+
EOM
|
199
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysTypes.h"
|
200
|
+
|
201
|
+
# --- folly/portability/SysStat.cpp ---
|
202
|
+
funky_sysstat_patch "$1/folly/portability/SysStat.cpp"
|
203
|
+
|
204
|
+
# --- folly/portability/SysStat.h ---
|
205
|
+
funky_sysstat_patch "$1/folly/portability/SysStat.h"
|
206
|
+
|
207
|
+
re="#define S_IXUSR 0"
|
208
|
+
# shellcheck disable=SC2251
|
209
|
+
! IFS= read -r -d '' sbst << EOM
|
210
|
+
\/* -- Start of tebako patch --
|
211
|
+
#define S_IXUSR 0
|
212
|
+
EOM
|
213
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysStat.h"
|
214
|
+
|
215
|
+
re="#define S_ISREG(mode) (((mode) & (_S_IFREG)) == (_S_IFREG) ? 1 : 0)"
|
216
|
+
# shellcheck disable=SC2251
|
217
|
+
! IFS= read -r -d '' sbst << EOM
|
218
|
+
#define S_ISREG(mode) (((mode) \& (_S_IFREG)) == (_S_IFREG) ? 1 : 0)
|
219
|
+
*\/
|
220
|
+
#define _S_IFLNK 0xA000
|
221
|
+
#define S_IFLNK _S_IFLNK
|
222
|
+
#define S_ISLNK(mode) (((mode) \& (_S_IFLNK)) == (_S_IFLNK) ? 1 : 0)
|
223
|
+
|
224
|
+
\/* -- End of tebako patch -- *\/
|
225
|
+
EOM
|
226
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysStat.h"
|
227
|
+
|
228
|
+
# --- folly/portability/SysTime.h ---
|
229
|
+
re="int gettimeofday(timeval\* tv, folly_port_struct_timezone\*);"
|
230
|
+
sbst="\/* int gettimeofday(timeval* tv, folly_port_struct_timezone*); --- tebako patched *\/"
|
231
|
+
do_patch "$1/folly/portability/SysTime.h" "$re" "$sbst"
|
232
|
+
|
233
|
+
# --- folly/FileUtil.cpp ---
|
234
|
+
defined_msc_ver_to_win32 "$1/folly/FileUtil.cpp"
|
235
|
+
re="(open,"
|
236
|
+
sbst="(\/* tebako patched *\/ folly::portability::fcntl::open,"
|
237
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
238
|
+
|
239
|
+
re="close(tmpFD)"
|
240
|
+
sbst="\/* tebako patched *\/ folly::portability::unistd::close(tmpFD)"
|
241
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
242
|
+
|
243
|
+
re="(close(fd))"
|
244
|
+
sbst="(\/* tebako patched *\/ folly::portability::unistd::close(fd))"
|
245
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
246
|
+
|
247
|
+
re="(read,"
|
248
|
+
sbst="(\/* tebako patched *\/ folly::portability::unistd::read,"
|
249
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
250
|
+
|
251
|
+
re="(write,"
|
252
|
+
sbst="(\/* tebako patched *\/ folly::portability::unistd::write,"
|
253
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
254
|
+
|
255
|
+
re="(dup,"
|
256
|
+
sbst="(\/* tebako patched *\/ folly::portability::unistd::dup,"
|
257
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
258
|
+
|
259
|
+
re="(dup2,"
|
260
|
+
sbst="(\/* tebako patched *\/ folly::portability::unistd::dup2,"
|
261
|
+
sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
|
262
|
+
|
263
|
+
# --- folly/experimental/TestUtil.cpp ---
|
264
|
+
defined_win32_to_msc_ver "$1/folly/experimental/TestUtil.cpp"
|
265
|
+
re="dup("
|
266
|
+
sbst="\/* tebako patched *\/ folly::portability::unistd::dup("
|
267
|
+
sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
|
268
|
+
|
269
|
+
re="dup2("
|
270
|
+
sbst="\/* tebako patched *\/ folly::portability::unistd::dup2("
|
271
|
+
sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
|
272
|
+
|
273
|
+
re="lseek("
|
274
|
+
sbst="\/* tebako patched *\/ folly::portability::unistd::lseek("
|
275
|
+
sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
|
276
|
+
|
277
|
+
re="(close("
|
278
|
+
sbst="(\/* tebako patched *\/ folly::portability::unistd::close("
|
279
|
+
sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
|
280
|
+
|
281
|
+
# --- folly/system/MemoryMapping.cpp ---
|
282
|
+
re="0 == ftruncate("
|
283
|
+
sbst="0 == \/* tebako patched *\/ folly::portability::unistd::ftruncate("
|
284
|
+
sed -i "s/$re/$sbst/g" "$1/folly/system/MemoryMapping.cpp"
|
285
|
+
|
286
|
+
# --- folly/portability/SysUio.cpp ---
|
287
|
+
re="lseek(fd,"
|
288
|
+
sbst=" \/* tebako patched *\/ folly::portability::unistd::lseek(fd,"
|
289
|
+
do_patch "$1/folly/portability/SysUio.cpp" "$re" "$sbst"
|
290
|
+
|
291
|
+
# --- folly/portability/Unistd.cpp ---
|
292
|
+
re="(lseek(fd,"
|
293
|
+
sbst="( \/* tebako patched *\/ folly::portability::unistd::lseek(fd,"
|
294
|
+
do_patch "$1/folly/portability/Unistd.cpp" "$re" "$sbst"
|
295
|
+
|
296
|
+
re="lseek(fd, 0,"
|
297
|
+
sbst=" \/* tebako patched *\/ folly::portability::unistd::lseek(fd, 0,"
|
298
|
+
sed -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.cpp"
|
299
|
+
|
300
|
+
# --- folly/logging/ImmediateFileWriter.h ---
|
301
|
+
re="isatty(file"
|
302
|
+
sbst=" \/* tebako patched *\/ folly::portability::unistd::isatty(file"
|
303
|
+
do_patch "$1/folly/logging/ImmediateFileWriter.h" "$re" "$sbst"
|
304
|
+
|
305
|
+
# --- folly/logging/AsyncFileWriter.cpp ---
|
306
|
+
re="isatty(file"
|
307
|
+
sbst=" \/* tebako patched *\/ folly::portability::unistd::isatty(file"
|
308
|
+
do_patch "$1/folly/logging/AsyncFileWriter.cpp" "$re" "$sbst"
|
309
|
+
|
310
|
+
# --- folly/portability/Unistd.h ---
|
311
|
+
re="#define X_OK F_OK"
|
312
|
+
sbst="#define X_OK 1 \/* tebako patched *\/"
|
313
|
+
do_patch "$1/folly/portability/Unistd.h" "$re" "$sbst"
|
314
|
+
|
315
|
+
re="int getuid();"
|
316
|
+
sbst="uid_t getuid(); \/* tebako patched *\/"
|
317
|
+
sed -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.h"
|
318
|
+
|
319
|
+
re="int getgid();"
|
320
|
+
sbst="gid_t getgid(); \/* tebako patched *\/"
|
321
|
+
sed -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.h"
|
322
|
+
|
323
|
+
# --- folly/portability/Fcntl.cpp ---
|
324
|
+
re="#include <folly\/portability\/Windows\.h>"
|
325
|
+
|
326
|
+
# shellcheck disable=SC2251
|
327
|
+
! IFS= read -r -d '' sbst << EOM
|
328
|
+
#include <folly\/portability\/Windows.h>
|
329
|
+
\/* -- Start of tebako patch -- *\/
|
330
|
+
#include <share.h>
|
331
|
+
\/* -- End of tebako patch -- *\/
|
332
|
+
EOM
|
333
|
+
do_patch_multiline "$1/folly/portability/Fcntl.cpp" "$re" "$sbst"
|
334
|
+
|
335
|
+
# --- folly/net/detail/SocketFileDescriptorMap.cpp --
|
336
|
+
re="#include <fcntl\.h>"
|
337
|
+
|
338
|
+
# shellcheck disable=SC2251
|
339
|
+
! IFS= read -r -d '' sbst << EOM
|
340
|
+
#include <fcntl.h>
|
341
|
+
|
342
|
+
\/* -- Start of tebako patch -- *\/
|
343
|
+
#include <mutex>
|
344
|
+
\/* -- End of tebako patch -- *\/
|
345
|
+
|
346
|
+
EOM
|
347
|
+
do_patch_multiline "$1/folly/net/detail/SocketFileDescriptorMap.cpp" "$re" "$sbst"
|
348
|
+
|
349
|
+
re=" __try {"
|
350
|
+
# shellcheck disable=SC2251
|
351
|
+
! IFS= read -r -d '' sbst << EOM
|
352
|
+
#ifndef __MINGW32__ \/* -- Tebako patched -- *\/
|
353
|
+
__try {
|
354
|
+
EOM
|
355
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/net/detail/SocketFileDescriptorMap.cpp"
|
356
|
+
|
357
|
+
re="\/\/ We're at the core, we don't get the luxery of SCOPE_EXIT because"
|
358
|
+
# shellcheck disable=SC2251
|
359
|
+
! IFS= read -r -d '' sbst << EOM
|
360
|
+
#endif \/* -- Tebako patched -- *\/
|
361
|
+
\/\/ We're at the core, we don't get the luxery of SCOPE_EXIT because
|
362
|
+
EOM
|
363
|
+
sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/net/detail/SocketFileDescriptorMap.cpp"
|
364
|
+
|
365
|
+
# --- folly/portability/Sockets.h ---
|
366
|
+
restore_and_save "$1/folly/portability/Sockets.h"
|
367
|
+
re="#ifdef _WIN32"
|
368
|
+
|
369
|
+
# shellcheck disable=SC2251
|
370
|
+
! IFS= read -r -d '' sbst << EOM
|
371
|
+
#ifdef _WIN32
|
372
|
+
|
373
|
+
\/* -- Start of tebako patch -- *\/
|
374
|
+
#ifdef __MINGW32__
|
375
|
+
#include <mswsock.h>
|
376
|
+
using cmsghdr = WSACMSGHDR;
|
377
|
+
#endif
|
378
|
+
\/* -- End of tebako patch -- *\/
|
379
|
+
|
380
|
+
EOM
|
381
|
+
sed -i -i "0,/$re/s||${sbst//$'\n'/"\\n"}|g" "$1/folly/portability/Sockets.h"
|
382
|
+
|
383
|
+
# --- folly/portability/Time.cpp ---
|
384
|
+
funky_time_patch "$1/folly/portability/Time.cpp"
|
385
|
+
|
386
|
+
re="(asctime_s(tmpBuf, tm))"
|
387
|
+
sbst="(asctime_s(tmpBuf, 64\/* tebako patched *\/, tm))"
|
388
|
+
sed -i "s/$re/$sbst/g" "$1/folly/portability/Time.cpp"
|
389
|
+
|
390
|
+
# ---
|
391
|
+
re="#if (defined(USE_JEMALLOC) || FOLLY_USE_JEMALLOC) && !FOLLY_SANITIZE"
|
392
|
+
# shellcheck disable=SC2251
|
393
|
+
! IFS= read -r -d '' sbst << EOM
|
394
|
+
\/* -- Start of tebako patch -- *\/
|
395
|
+
#if defined(FOLLY_ASSUME_NO_JEMALLOC)
|
396
|
+
#undef USE_JEMALLOC
|
397
|
+
#undef FOLLY_USE_JEMALLOC
|
398
|
+
#endif
|
399
|
+
\/* -- End of tebako patch -- *\/
|
400
|
+
#if (defined(USE_JEMALLOC) || defined(FOLLY_USE_JEMALLOC)) \&\& !FOLLY_SANITIZE \/* tebako patched *\/
|
401
|
+
EOM
|
402
|
+
do_patch_multiline "$1/folly/portability/Malloc.h" "$re" "$sbst"
|
403
|
+
|
404
|
+
# ---
|
405
|
+
re="#include <folly\/Portability\.h>"
|
406
|
+
# shellcheck disable=SC2251
|
407
|
+
! IFS= read -r -d '' sbst << EOM
|
408
|
+
#include <folly\/Portability.h>
|
409
|
+
\/* -- Start of tebako patch -- *\/
|
410
|
+
#include <folly\/portability\/Malloc.h>
|
411
|
+
\/* -- End of tebako patch -- *\/
|
412
|
+
|
413
|
+
EOM
|
414
|
+
do_patch_multiline "$1/folly/memory/detail/MallocImpl.h" "$re" "$sbst"
|
415
|
+
|
416
|
+
# --- folly/system/ThreadName.cpp ---
|
417
|
+
defined_win32_to_msc_ver "$1/folly/system/ThreadName.cpp"
|
418
|
+
|
419
|
+
re="#if defined(__XROS__)"
|
420
|
+
sbst="#if defined(__XROS__) || defined(__MINGW32__) \/* tebako patched *\/"
|
421
|
+
sed -i "s/$re/$sbst/g" "$1/folly/system/ThreadName.cpp"
|
422
|
+
|
423
|
+
# ---
|
424
|
+
defined_msc_ver_to_win32 "$1/folly/external/farmhash/farmhash.cpp"
|
425
|
+
defined_msc_ver_to_win32 "$1/folly/detail/IPAddressSource.h"
|
426
|
+
defined_msc_ver_to_win32 "$1/folly/portability/Sockets.cpp"
|
427
|
+
|
428
|
+
defined_n_win32_to_msc_ver "$1/folly/portability/Dirent.h"
|
429
|
+
defined_win32_to_msc_ver "$1/folly/portability/Dirent.cpp"
|
430
|
+
|
431
|
+
funky_stdio_patch "$1/folly/portability/Stdio.h"
|
432
|
+
funky_stdio_patch "$1/folly/portability/Stdio.cpp"
|
433
|
+
funky_string_patch "$1/folly/portability/String.h"
|
434
|
+
funky_string_patch "$1/folly/portability/String.cpp"
|
435
|
+
funky_time_patch "$1/folly/portability/Time.h"
|
436
|
+
funky_formatter_patch "$1/folly/logging/CustomLogFormatter.cpp"
|
437
|
+
funky_formatter_patch "$1/folly/logging/GlogStyleFormatter.cpp"
|
438
|
+
|
439
|
+
# Note: the patch below comments out
|
440
|
+
# int gettimeofday(timeval* tv, folly_port_struct_timezone*);
|
441
|
+
# void timeradd(timeval* a, timeval* b, timeval* res);
|
442
|
+
# void timersub(timeval* a, timeval* b, timeval* res);
|
443
|
+
# while gettimeofday is provided by MSys, the other two functions are lost
|
444
|
+
defined_n_win32_to_msc_ver "$1/folly/portability/SysTime.h"
|
445
|
+
defined_win32_to_msc_ver "$1/folly/portability/SysTime.cpp"
|
446
|
+
|
447
|
+
fi
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#! /bin/bash
|
2
|
+
# Copyright (c) 2022, [Ribose Inc](https://www.ribose.com).
|
3
|
+
# All rights reserved.
|
4
|
+
# This file is a part of tebako
|
5
|
+
#
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
7
|
+
# modification, are permitted provided that the following conditions
|
8
|
+
# are met:
|
9
|
+
# 1. Redistributions of source code must retain the above copyright
|
10
|
+
# notice, this list of conditions and the following disclaimer.
|
11
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
12
|
+
# notice, this list of conditions and the following disclaimer in the
|
13
|
+
# documentation and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
16
|
+
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
17
|
+
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
18
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
|
19
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
20
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
21
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
22
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
23
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
24
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
25
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
|
27
|
+
# Alpine headers define malloc and other memory functions without nothrow attribute
|
28
|
+
# while jemalloc and folly have nothrow
|
29
|
+
# clang (as opposed to gcc) considers it syntax error and there is no easier workaround
|
30
|
+
|
31
|
+
set -o errexit -o pipefail -o noclobber -o nounset
|
32
|
+
|
33
|
+
# ....................................................
|
34
|
+
restore_and_save() {
|
35
|
+
echo "Patching $1"
|
36
|
+
test -e "$1.old" && cp -f "$1.old" "$1"
|
37
|
+
cp -f "$1" "$1.old"
|
38
|
+
}
|
39
|
+
|
40
|
+
patch() {
|
41
|
+
echo "Processing $2"
|
42
|
+
re="$2"
|
43
|
+
sbst="__attribute__((nothrow)) \/*Tebako patched *\/ $2"
|
44
|
+
sed -i "s/$re/$sbst/g" "$1"
|
45
|
+
}
|
46
|
+
|
47
|
+
f_stdlib=( "\*malloc" "\*calloc" "\*realloc" "free" "\*aligned_alloc" "posix_memalign" "\*valloc" "\*memalign" )
|
48
|
+
restore_and_save "/usr/include/stdlib.h"
|
49
|
+
for f in "${f_stdlib[@]}"
|
50
|
+
do
|
51
|
+
patch "/usr/include/stdlib.h" "$f"
|
52
|
+
done
|
53
|
+
|
54
|
+
f_sched=( "\*calloc" "free" )
|
55
|
+
restore_and_save "/usr/include/sched.h"
|
56
|
+
for f in "${f_sched[@]}"
|
57
|
+
do
|
58
|
+
patch "/usr/include/sched.h" "$f"
|
59
|
+
done
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#! /bin/bash
|
2
|
+
#
|
3
|
+
# Copyright (c) 2022, [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
|
+
set -o errexit -o pipefail -o noclobber -o nounset
|
29
|
+
|
30
|
+
# for zsh
|
31
|
+
# https://stackoverflow.com/questions/6715388/variable-expansion-is-different-in-zsh-from-that-in-bash
|
32
|
+
# setopt sh_word_split
|
33
|
+
|
34
|
+
DIR0="$( cd "$1" && pwd )"
|
35
|
+
DIR1="$DIR0/x86-homebrew"
|
36
|
+
|
37
|
+
for bottle in "${@:2}"
|
38
|
+
do
|
39
|
+
echo "Installing $bottle"
|
40
|
+
response=$("$DIR1/bin/brew" fetch --force --bottle-tag=x86_64_big_sur "$bottle" | grep "Downloaded to")
|
41
|
+
IFS=" " read -r -a parsed <<< "$response"
|
42
|
+
"$DIR1/bin/brew" install "${parsed[2]}"
|
43
|
+
done
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#! /bin/bash
|
2
|
+
#
|
3
|
+
# Copyright (c) 2022, [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
|
+
set -o errexit -o pipefail -o noclobber -o nounset
|
29
|
+
|
30
|
+
DIR0="$( cd "$1" && pwd )"
|
31
|
+
DIR1="$DIR0/x86-homebrew"
|
32
|
+
mkdir "$DIR1"
|
33
|
+
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "$DIR1"
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# Copyright (c) 2021-2022 [Ribose Inc](https://www.ribose.com).
|
2
|
+
# All rights reserved.
|
3
|
+
# This file is a part of tebako
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions
|
7
|
+
# are met:
|
8
|
+
# 1. Redistributions of source code must retain the above copyright
|
9
|
+
# notice, this list of conditions and the following disclaimer.
|
10
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
11
|
+
# notice, this list of conditions and the following disclaimer in the
|
12
|
+
# documentation and/or other materials provided with the distribution.
|
13
|
+
#
|
14
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
15
|
+
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
16
|
+
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
17
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
|
18
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
19
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
20
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
21
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
22
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
23
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
24
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
|
27
|
+
# ...................................................................
|
28
|
+
# DEF_EXT_PRJ_T
|
29
|
+
# This function defines version number and archieve hash for
|
30
|
+
# external project that is build from tarball
|
31
|
+
# For external project XXX this function will set the following variables:
|
32
|
+
# XXX_VER -- package version
|
33
|
+
# XXX_HASH -- tarball hash
|
34
|
+
# Version and hash value come from environment variables (GHA case)
|
35
|
+
# If environment variables are not set then default values are used
|
36
|
+
# XXX_NAME = xxx (lowercase)
|
37
|
+
# XXX_PRJ = _xxx (lowercase) -- CMake ExternalProject name
|
38
|
+
# XXX_SOURCE_DIR = ${DEPS}/src/_xxx -- Source folder for ExternalProject_Add
|
39
|
+
# XXX_BINARY_DIR = ${DEPS}/src/_xxx-build -- Build folder for ExternalProject_Add
|
40
|
+
|
41
|
+
function(DEF_EXT_PRJ_T NAME DEFAULT_VER DEFAULT_HASH)
|
42
|
+
set(VER ${NAME}_VER)
|
43
|
+
if (DEFINED ENV{${VER}})
|
44
|
+
set(${VER} $ENV{${VER}} PARENT_SCOPE)
|
45
|
+
else ()
|
46
|
+
set(${VER} ${DEFAULT_VER} PARENT_SCOPE)
|
47
|
+
endif()
|
48
|
+
|
49
|
+
set(HASH ${NAME}_HASH)
|
50
|
+
if (DEFINED ENV{${HASH})
|
51
|
+
set(${HASH} $ENV{${HASH}} PARENT_SCOPE)
|
52
|
+
else()
|
53
|
+
set(${HASH} ${DEFAULT_HASH} PARENT_SCOPE)
|
54
|
+
endif()
|
55
|
+
|
56
|
+
set(R_NAME ${NAME}_NAME)
|
57
|
+
string(TOLOWER ${NAME} TMP)
|
58
|
+
set(${R_NAME} ${TMP} PARENT_SCOPE)
|
59
|
+
set(R_PRJ ${NAME}_PRJ)
|
60
|
+
set(${R_PRJ} _${TMP} PARENT_SCOPE)
|
61
|
+
set(R_DIR ${NAME}_SOURCE_DIR)
|
62
|
+
set(${R_DIR} ${DEPS}/src/_${TMP} PARENT_SCOPE)
|
63
|
+
set(R_DIR ${NAME}_BINARY_DIR)
|
64
|
+
set(${R_DIR} ${DEPS}/src/_${TMP}-build PARENT_SCOPE)
|
65
|
+
endfunction()
|
66
|
+
|
67
|
+
# ...................................................................
|
68
|
+
# DEF_EXT_PRJ_G
|
69
|
+
# This function defines git tag for external project that is build from git
|
70
|
+
# For external project XXX this function will set the following variables:
|
71
|
+
# XXX_TAG -- git tag
|
72
|
+
# Version and tag come from environment variables (GHA case)
|
73
|
+
# If environment variables are not set then default values are used
|
74
|
+
# XXX_NAME = xxx (lowercase)
|
75
|
+
# XXX_PRJ = _xxx (lowercase) -- CMake ExternalProject name
|
76
|
+
# XXX_SOURCE_DIR = ${DEPS}/src/_xxx -- Source folder for ExternalProject_Add
|
77
|
+
# XXX_BINARY_DIR = ${DEPS}/src/_xxx-build -- Build folder for ExternalProject_Add
|
78
|
+
|
79
|
+
function(DEF_EXT_PRJ_G NAME DEFAULT_TAG)
|
80
|
+
set(TAG ${NAME}_TAG)
|
81
|
+
if (DEFINED ENV{${TAG})
|
82
|
+
set(${TAG} $ENV{${TAG}} PARENT_SCOPE)
|
83
|
+
else()
|
84
|
+
set(${TAG} ${DEFAULT_TAG} PARENT_SCOPE)
|
85
|
+
endif()
|
86
|
+
|
87
|
+
set(R_NAME ${NAME}_NAME)
|
88
|
+
string(TOLOWER ${NAME} TMP)
|
89
|
+
set(${R_NAME} ${TMP} PARENT_SCOPE)
|
90
|
+
set(R_PRJ ${NAME}_PRJ)
|
91
|
+
set(${R_PRJ} _${TMP} PARENT_SCOPE)
|
92
|
+
set(R_DIR ${NAME}_SOURCE_DIR)
|
93
|
+
set(${R_DIR} ${DEPS}/src/_${TMP} PARENT_SCOPE)
|
94
|
+
set(R_DIR ${NAME}_BINARY_DIR)
|
95
|
+
set(${R_DIR} ${DEPS}/src/_${TMP}-build PARENT_SCOPE)
|
96
|
+
endfunction()
|