tebako 0.5.6 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23a76520703c1526cb92a3aaeac6c215a117b5dd6f27f18b286c7dc165d95b98
4
- data.tar.gz: 2078da7a9009225a1d50435dac76b75579068f8683e4f0d5c6f1c80f501a98f8
3
+ metadata.gz: 2b277eb25391af787dab395176c4c8de0ce0946c4051761777819c6ba8dfc85b
4
+ data.tar.gz: fd68af8da0fd9900620627cb769a693953a91936a45f4c1049e233ad2ce250be
5
5
  SHA512:
6
- metadata.gz: f1102354529402a3ac5d30830d602f203d0c89ded810e44d4caeabd407ccda5a7b72bda9a03c15732cf451a5716d9875c6d51ae8dfb669af15d4a0c9f1ae255a
7
- data.tar.gz: ff70d7dfbe6ce10b6689ed97860b87909e18e4a29c44c2d7a0cc1895667121010810b1aa702d2ec6869e844e214ad2be17b66ee67dd58f2fbe8254b984a8fc63
6
+ metadata.gz: b93340ce7093fc7c43f1c7948b1392e73980b76ce88e9b0489d20de33f4262965dadba78fa8805597928088d9a0763074017d37f0cf538735ab4baed03503206
7
+ data.tar.gz: 798727d58f68b36d7ce2f5ce642223680c1a0f76f4f78851da95531c2cdce891eb59badbe782289631bbe9ee301e43c73c685a616582f2a07fd6319809d5606d
data/CMakeLists.txt CHANGED
@@ -177,7 +177,7 @@ elseif("${OSTYPE_TXT}" MATCHES "^darwin.*")
177
177
  else(${RUBY_VER} VERSION_LESS "3.1.0")
178
178
  set(OPENSSL_VER "3")
179
179
  endif(${RUBY_VER} VERSION_LESS "3.1.0")
180
- set(BUILD_OPENSSL_ROOT_DIR "${BUILD_BREW_PREFIX}/opt/openssl@${OPENSSL_VER}")
180
+ set(BUILD_OPENSSL_ROOT_DIR "${BREW_PREFIX}/opt/openssl@${OPENSSL_VER}")
181
181
  endif()
182
182
 
183
183
  if(IS_DARWIN)
@@ -243,7 +243,7 @@ if(IS_MSYS)
243
243
  endif(IS_MSYS)
244
244
 
245
245
  def_ext_prj_g(INCBIN "348e36b")
246
- def_ext_prj_g(DWARFS_WR "v0.4.0")
246
+ def_ext_prj_g(DWARFS_WR "v0.4.3")
247
247
 
248
248
  find_library(_LIBNCURSES "libncurses.a")
249
249
  if(${_LIBNCURSES} STREQUAL "_LIBNCURSES-NOTFOUND")
@@ -428,9 +428,9 @@ endif()
428
428
  set(C_FLAGS_DEST cppflags)
429
429
 
430
430
  if(IS_DARWIN)
431
- string(CONCAT RUBY_C_FLAGS ${RUBY_C_FLAGS} " -I${BUILD_BREW_PREFIX}/opt/openssl@${OPENSSL_VER}/include -I${BUILD_BREW_PREFIX}/opt/zlib/include -I${BUILD_BREW_PREFIX}/include")
432
- string(CONCAT RUBY_L_FLAGS ${RUBY_L_FLAGS} " -L${BUILD_BREW_PREFIX}/opt/openssl@${OPENSSL_VER}/lib -L${BUILD_BREW_PREFIX}/opt/zlib/lib -L${BUILD_BREW_PREFIX}/lib")
433
- set(OPENSSL_RUBY_OPTION "--with-openssl-dir=${BUILD_BREW_PREFIX}/opt/openssl@${OPENSSL_VER}")
431
+ string(CONCAT RUBY_C_FLAGS ${RUBY_C_FLAGS} " -I${BREW_PREFIX}/opt/openssl@${OPENSSL_VER}/include -I${BREW_PREFIX}/opt/zlib/include -I${BREW_PREFIX}/include")
432
+ string(CONCAT RUBY_L_FLAGS ${RUBY_L_FLAGS} " -L${BREW_PREFIX}/opt/openssl@${OPENSSL_VER}/lib -L${BREW_PREFIX}/opt/zlib/lib -L${BREW_PREFIX}/lib")
433
+ set(OPENSSL_RUBY_OPTION "--with-openssl-dir=${BREW_PREFIX}/opt/openssl@${OPENSSL_VER}")
434
434
  set(C_FLAGS_DEST cflags)
435
435
  else(IS_DARWIN)
436
436
  string(CONCAT RUBY_L_FLAGS ${RUBY_L_FLAGS} " -static-libgcc")
data/README.adoc CHANGED
@@ -34,7 +34,7 @@ In the future:
34
34
  The Tebako packager is tested on the following platforms:
35
35
 
36
36
  * Linux: Ubuntu 20.04; Alpine 3.17
37
- * macOS: macOS 11.0 (Monterey)
37
+ * macOS: macOS 11 (Big Sur), 12 (Monterey), 13 (Ventura)
38
38
  * Windows: TBD
39
39
 
40
40
  == Supported Ruby versions
data/common.env CHANGED
@@ -1,5 +1,5 @@
1
1
  BUILD_TYPE=Release
2
2
  DEPS=deps
3
3
  INCBIN_TAG=348e36b
4
- DWARFS_WR_TAG=v0.4.0
4
+ DWARFS_WR_TAG=v0.4.3
5
5
  RUBY_VER=3.1.4
@@ -26,5 +26,5 @@
26
26
  # POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
28
  module Tebako
29
- VERSION = "0.5.6"
29
+ VERSION = "0.5.7"
30
30
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2022, [Ribose Inc](https://www.ribose.com).
1
+ # Copyright (c) 2022-2024, [Ribose Inc](https://www.ribose.com).
2
2
  # All rights reserved.
3
3
  # This file is a part of tebako
4
4
  #
@@ -35,7 +35,7 @@ jobs:
35
35
  shellcheck:
36
36
  runs-on: ubuntu-latest
37
37
  steps:
38
- - uses: actions/checkout@v3
38
+ - uses: actions/checkout@v4
39
39
  - uses: ludeeus/action-shellcheck@master
40
40
  env:
41
41
  SHELLCHECK_OPTS: -x
@@ -0,0 +1,124 @@
1
+ # Copyright (c) 2024, [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
+ name: test
27
+
28
+ on:
29
+ push:
30
+ branches: [ master ]
31
+ pull_request:
32
+ workflow_dispatch:
33
+
34
+ concurrency:
35
+ group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
36
+ cancel-in-progress: true
37
+
38
+ jobs:
39
+ test-setup-librachive:
40
+ name: test setup-librachive on ${{ matrix.os }}
41
+ runs-on: ${{ matrix.os }}
42
+ strategy:
43
+ fail-fast: false
44
+ matrix:
45
+ os: [ ubuntu-20.04, macos-11.0 ]
46
+ steps:
47
+ - name: Checkout
48
+ uses: actions/checkout@v4
49
+
50
+ - name: Run cmake script
51
+ run: |
52
+ cmake -B build/setup-librachive -DROOT=$PWD tests/setup-librachive
53
+ cmake --build build/setup-librachive
54
+
55
+ - name: Test setup-librachive
56
+ run: |
57
+ set -o errexit -o pipefail -o noclobber -o nounset
58
+ test -f build/setup-librachive/deps/lib/pkgconfig/libarchive.pc
59
+ test -f build/setup-librachive/deps/lib/libarchive.so || test -f build/setup-librachive/deps/lib/libarchive.dylib
60
+ test -f build/setup-librachive/deps/lib/libarchive.a
61
+ test -f build/setup-librachive/deps/include/archive.h
62
+ test -f build/setup-librachive/deps/include/archive_entry.h
63
+
64
+ test-setup-libutfcpp:
65
+ name: test setup-libutfcpp on ${{ matrix.os }}
66
+ runs-on: ${{ matrix.os }}
67
+ strategy:
68
+ fail-fast: false
69
+ matrix:
70
+ os: [ ubuntu-20.04, macos-11.0 ]
71
+ steps:
72
+ - name: Checkout
73
+ uses: actions/checkout@v4
74
+
75
+ - name: Run cmake script
76
+ run: |
77
+ cmake -B build/setup-libutfcpp -DROOT=$PWD tests/setup-libutfcpp
78
+ cmake --build build/setup-libutfcpp
79
+
80
+ - name: Test setup-libutfcpp
81
+ run: |
82
+ set -o errexit -o pipefail -o noclobber -o nounset
83
+ test -f build/setup-libutfcpp/deps/include/utf8.h
84
+ test -d build/setup-libutfcpp/deps/include/utf8
85
+
86
+ test-setup-libhowardhinnerdate:
87
+ name: test setup-libhowardhinnerdate on ${{ matrix.os }}
88
+ runs-on: ${{ matrix.os }}
89
+ strategy:
90
+ fail-fast: false
91
+ matrix:
92
+ os: [ ubuntu-20.04, macos-11.0 ]
93
+ steps:
94
+ - name: Checkout
95
+ uses: actions/checkout@v4
96
+
97
+ - name: Run cmake script
98
+ run: |
99
+ cmake -B build/setup-libhowardhinnerdate -DROOT=$PWD tests/setup-libhowardhinnerdate
100
+ cmake --build build/setup-libhowardhinnerdate
101
+
102
+ - name: Test setup-libhowardhinnerdate
103
+ run: |
104
+ set -o errexit -o pipefail -o noclobber -o nounset
105
+ test -f build/setup-libhowardhinnerdate/deps/include/date/date.h
106
+
107
+ test-cross-brew-install:
108
+ name: test arm-brew-setup/install
109
+ runs-on: macos-11.0
110
+ steps:
111
+ - name: Checkout
112
+ uses: actions/checkout@v4
113
+
114
+ - name: Run arm-brew-setup
115
+ run: ci-scripts/arm-brew-setup.sh $PWD
116
+
117
+ - name: Run arm-brew-install
118
+ run: ci-scripts/arm-brew-install.sh $PWD glog
119
+
120
+ - name: Test
121
+ run: |
122
+ set -o errexit -o pipefail -o noclobber -o nounset
123
+ test -f $PWD/arm-homebrew/lib/libgflags.dylib
124
+ test -f $PWD/arm-homebrew/lib/libglog.dylib
data/tools/.gitignore ADDED
@@ -0,0 +1 @@
1
+ build/
data/tools/README.md CHANGED
@@ -1,5 +1,49 @@
1
1
  [![lint](https://github.com/tamatebako/macos-cross-compile/actions/workflows/lint.yml/badge.svg)](https://github.com/tamatebako/macos-cross-compile/actions/workflows/lint.yml)
2
+ [![test](https://github.com/tamatebako/tebako-tools/actions/workflows/test.yml/badge.svg)](https://github.com/tamatebako/tebako-tools/actions/workflows/test.yml)
2
3
 
3
4
  ## Tebako portability tools ##
4
5
 
5
6
  This repository contains cmake, shell scripts and include files aimed to support tebako builds on different platforms.
7
+
8
+ ## Homebrew cross-installation scripts ##
9
+
10
+ Sometimes you need to build MacOS application in a foreign environment. For example, GitHub Actions provides x86 runners only, but you may need to build and package arm64 binary.
11
+ Most of the applications rely on external dependencies, so on MacOS you will require a method to use another instance of homebrew to support the target environment.
12
+
13
+ Among other tools this repository provides a set of simple scripts to cross install homebrew dependencies
14
+
15
+ ### arm64 packages on x86_64 system
16
+
17
+ ```
18
+ arm-brew-install <arm brew parent folder>
19
+ arm-brew-setup <arm brew folder> <formula to install 1> ... <formula to install 1>
20
+ ```
21
+
22
+ For example
23
+
24
+ ```
25
+ arm-brew-install ~/test
26
+ arm-brew-setup ~/test glog gflags
27
+ ```
28
+
29
+ Will create arm brew environment in ~/test/arm-homebrew and install glog and gflags formulae there
30
+
31
+
32
+ ### x86_64 packages on arm system
33
+
34
+ ```
35
+ x86_64-brew-install <x86_64 brew parent folder>
36
+ x86_64-brew-setup <x86_64 brew folder> <formula to install 1> ... <formula to install 1>
37
+ ```
38
+
39
+ For example
40
+
41
+ ```
42
+ x86_64-brew-install ~/test
43
+ x86_64-brew-setup ~/test glog gflags
44
+ ```
45
+
46
+ Will create x86_64 brew environment in ~/test/x86_64-homebrew and install glog and gflags formulae there
47
+
48
+ There are related discussions at https://github.com/orgs/Homebrew/discussions/2843
49
+ and https://stackoverflow.com/questions/70821136/can-i-install-arm64-libraries-on-x86-64-with-homebrew/70822921#70822921
@@ -35,7 +35,12 @@ restore_and_save() {
35
35
 
36
36
  do_patch() {
37
37
  restore_and_save "$1"
38
- sed -i "s/$2/$3/g" "$1"
38
+ "$gSed" -i "s/$2/$3/g" "$1"
39
+ }
40
+
41
+ do_patch_multiline() {
42
+ restore_and_save "$1"
43
+ "$gSed" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1"
39
44
  }
40
45
 
41
46
  # ....................................................
@@ -80,6 +85,21 @@ restore_and_save "$1/CMakeLists.txt"
80
85
  re="find_package(OpenSSL REQUIRED)"
81
86
  "$gSed" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/CMakeLists.txt"
82
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
+
83
103
  if [[ "$OSTYPE" == "msys" ]]; then
84
104
  re="if(WIN32)"
85
105
  sbst="if(MSVC) # tebako patched"
@@ -1,5 +1,5 @@
1
1
  #! /bin/bash
2
- # Copyright (c) 2022, [Ribose Inc](https://www.ribose.com).
2
+ # Copyright (c) 2022-2023, [Ribose Inc](https://www.ribose.com).
3
3
  # All rights reserved.
4
4
  # This file is a part of tebako
5
5
  #
@@ -26,6 +26,12 @@
26
26
 
27
27
  set -o errexit -o pipefail -o noclobber -o nounset
28
28
 
29
+ if [[ "$OSTYPE" == "darwin"* ]]; then
30
+ GNU_SED="gsed"
31
+ else
32
+ GNU_SED="sed"
33
+ fi
34
+
29
35
  # ....................................................
30
36
  restore_and_save() {
31
37
  echo "Patching $1"
@@ -35,12 +41,12 @@ restore_and_save() {
35
41
 
36
42
  do_patch() {
37
43
  restore_and_save "$1"
38
- sed -i "s/$2/$3/g" "$1"
44
+ "$GNU_SED" -i "s/$2/$3/g" "$1"
39
45
  }
40
46
 
41
47
  do_patch_multiline() {
42
48
  restore_and_save "$1"
43
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1"
49
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1"
44
50
  }
45
51
 
46
52
  defined_win32_to_msc_ver() {
@@ -50,7 +56,7 @@ defined_win32_to_msc_ver() {
50
56
 
51
57
  re="#ifdef _WIN32"
52
58
  sbst="#ifdef _MSC_VER \/* tebako patched *\/ "
53
- sed -i "s/$re/$sbst/g" "$1"
59
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
54
60
  }
55
61
 
56
62
  defined_n_win32_to_msc_ver() {
@@ -60,7 +66,7 @@ defined_n_win32_to_msc_ver() {
60
66
 
61
67
  re="#ifndef _WIN32"
62
68
  sbst="#ifndef _MSC_VER \/* tebako patched *\/ "
63
- sed -i "s/$re/$sbst/g" "$1"
69
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
64
70
  }
65
71
 
66
72
  defined_msc_ver_to_win32() {
@@ -70,7 +76,7 @@ defined_msc_ver_to_win32() {
70
76
 
71
77
  re="#ifdef _MSC_VER"
72
78
  sbst="#ifdef _WIN32 \/* tebako patched *\/ "
73
- sed -i "s/$re/$sbst/g" "$1"
79
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
74
80
  }
75
81
 
76
82
  funky_stdio_patch() {
@@ -80,11 +86,11 @@ funky_stdio_patch() {
80
86
 
81
87
  re="FILE\* popen(const char\* name, const char\* mode)"
82
88
  sbst="FILE* _folly_popen(const char* name, const char* mode) \/* tebako patched *\/"
83
- sed -i "s/$re/$sbst/g" "$1"
89
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
84
90
 
85
91
  re="int vasprintf(char\*\* dest, const char\* format, va_list ap)"
86
92
  sbst="int _folly_vasprintf(char** dest, const char* format, va_list ap) \/* tebako patched *\/"
87
- sed -i "s/$re/$sbst/g" "$1"
93
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
88
94
  }
89
95
 
90
96
  funky_sysstat_patch() {
@@ -94,15 +100,15 @@ funky_sysstat_patch() {
94
100
 
95
101
  re="int mkdir(const char\* fn, int mode)"
96
102
  sbst="int _folly_mkdir(const char* fn, int mode) \/* tebako patched *\/"
97
- sed -i "s/$re/$sbst/g" "$1"
103
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
98
104
 
99
105
  re="int mkdir(const char\* fn, int \/\* mode \*\/)"
100
106
  sbst="int _folly_mkdir(const char* fn, int \/* mode *\/) \/* tebako patched *\/"
101
- sed -i "s/$re/$sbst/g" "$1"
107
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
102
108
 
103
109
  re="int umask(int md)"
104
110
  sbst="int _folly_umask(int md) \/* tebako patched *\/"
105
- sed -i "s/$re/$sbst/g" "$1"
111
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
106
112
  }
107
113
 
108
114
  funky_string_patch() {
@@ -112,7 +118,7 @@ funky_string_patch() {
112
118
 
113
119
  re="int strncasecmp(const char\* a, const char\* b, size_t c)"
114
120
  sbst="int _folly_strncasecmp(const char* a, const char* b, size_t c) \/* tebako patched *\/"
115
- sed -i "s/$re/$sbst/g" "$1"
121
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
116
122
  }
117
123
 
118
124
  funky_time_patch() {
@@ -122,11 +128,11 @@ funky_time_patch() {
122
128
 
123
129
  re="tm\* gmtime_r(const time_t\* t, tm\* res)"
124
130
  sbst="tm* _folly_gmtime_r(const time_t* t, tm* res) \/* tebako patched *\/"
125
- sed -i "s/$re/$sbst/g" "$1"
131
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
126
132
 
127
133
  re="tm\* localtime_r(const time_t\* t, tm\* o)"
128
134
  sbst="tm* _folly_localtime_r(const time_t* t, tm* o) \/* tebako patched *\/"
129
- sed -i "s/$re/$sbst/g" "$1"
135
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1"
130
136
  }
131
137
 
132
138
  funky_formatter_patch() {
@@ -138,13 +144,13 @@ funky_formatter_patch() {
138
144
  if [[ "$OSTYPE" == "linux-musl"* ]]; then
139
145
  # https://github.com/facebook/folly/issues/1478
140
146
  re="#elif defined(__FreeBSD__)"
141
- sbst="#else \/* Tebako patched *\/"
147
+ sbst="#elif defined(__FreeBSD__) || defined(__musl__) \/* Tebako patched *\/"
142
148
  do_patch "$1/folly/experimental/symbolizer/Elf.cpp" "$re" "$sbst"
143
149
 
144
150
  restore_and_save "$1/CMake/FollyConfigChecks.cmake"
145
151
  re="FOLLY_HAVE_IFUNC"
146
152
  sbst="FOLLY_HAVE_IFUNC_NOT_PATCHED"
147
- sed -i "s/$re/$sbst/g" "$1/CMake/FollyConfigChecks.cmake"
153
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/CMake/FollyConfigChecks.cmake"
148
154
 
149
155
  re="set(CMAKE_REQUIRED_FLAGS \"\${FOLLY_ORIGINAL_CMAKE_REQUIRED_FLAGS}\")"
150
156
 
@@ -164,7 +170,29 @@ check_cxx_source_runs(\"
164
170
  # -- End of tebako patch --
165
171
  EOM
166
172
 
167
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/CMake/FollyConfigChecks.cmake"
173
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/CMake/FollyConfigChecks.cmake"
174
+
175
+ elif [[ "$OSTYPE" == "darwin"* ]]; then
176
+ re=" set(OPENSSL_ROOT_DIR \"\/usr\/local\/opt\/openssl\" )"
177
+
178
+ # shellcheck disable=SC2251
179
+ ! IFS= read -r -d '' sbst << EOM
180
+ # -- Start of tebako patch --
181
+ if (NOT OPENSSL_ROOT_DIR)
182
+ set(OPENSSL_ROOT_DIR \"\/usr\/local\/opt\/openssl\")
183
+ endif(NOT OPENSSL_ROOT_DIR)
184
+ # -- End of tebako patch --
185
+ EOM
186
+
187
+ do_patch_multiline "$1/CMakeLists.txt" "$re" "$sbst"
188
+
189
+ re="set(OPENSSL_LIBRARIES \"\/usr\/local\/opt\/openssl\/lib\" )"
190
+ sbst="set(OPENSSL_LIBRARIES \"\${OPENSSL_ROOT_DIR}\/lib\") # tebako patched"
191
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/CMakeLists.txt"
192
+
193
+ re="set(OPENSSL_INCLUDE_DIR \"\/usr\/local\/opt\/openssl\/include\" )"
194
+ sbst="set(OPENSSL_INCLUDE_DIR \"\${OPENSSL_ROOT_DIR}\/include\") # tebako patched"
195
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/CMakeLists.txt"
168
196
 
169
197
  elif [[ "$OSTYPE" == "msys"* ]]; then
170
198
  # --- folly/portability/Stdlib.h ---
@@ -184,11 +212,11 @@ elif [[ "$OSTYPE" == "msys"* ]]; then
184
212
 
185
213
  re="using mode_t = unsigned int;"
186
214
  sbst="\/* using mode_t = unsigned int; --- tebako patched *\/"
187
- sed -i "s/$re/$sbst/g" "$1/folly/portability/SysTypes.h"
215
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/SysTypes.h"
188
216
 
189
217
  re="using uid_t = int;"
190
218
  sbst="using uid_t = short; \/* --- tebako patched *\/"
191
- sed -i "s/$re/$sbst/g" "$1/folly/portability/SysTypes.h"
219
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/SysTypes.h"
192
220
 
193
221
  re="using gid_t = int;"
194
222
  # shellcheck disable=SC2251
@@ -196,7 +224,7 @@ elif [[ "$OSTYPE" == "msys"* ]]; then
196
224
  using gid_t = short; \/* --- tebako patched *\/
197
225
  using nlink_t = short; \/* --- tebako patched *\/
198
226
  EOM
199
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysTypes.h"
227
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysTypes.h"
200
228
 
201
229
  # --- folly/portability/SysStat.cpp ---
202
230
  funky_sysstat_patch "$1/folly/portability/SysStat.cpp"
@@ -210,7 +238,7 @@ EOM
210
238
  \/* -- Start of tebako patch --
211
239
  #define S_IXUSR 0
212
240
  EOM
213
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysStat.h"
241
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysStat.h"
214
242
 
215
243
  re="#define S_ISREG(mode) (((mode) & (_S_IFREG)) == (_S_IFREG) ? 1 : 0)"
216
244
  # shellcheck disable=SC2251
@@ -223,7 +251,7 @@ EOM
223
251
 
224
252
  \/* -- End of tebako patch -- *\/
225
253
  EOM
226
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysStat.h"
254
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/portability/SysStat.h"
227
255
 
228
256
  # --- folly/portability/SysTime.h ---
229
257
  re="int gettimeofday(timeval\* tv, folly_port_struct_timezone\*);"
@@ -234,54 +262,54 @@ EOM
234
262
  defined_msc_ver_to_win32 "$1/folly/FileUtil.cpp"
235
263
  re="(open,"
236
264
  sbst="(\/* tebako patched *\/ folly::portability::fcntl::open,"
237
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
265
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
238
266
 
239
267
  re="close(tmpFD)"
240
268
  sbst="\/* tebako patched *\/ folly::portability::unistd::close(tmpFD)"
241
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
269
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
242
270
 
243
271
  re="(close(fd))"
244
272
  sbst="(\/* tebako patched *\/ folly::portability::unistd::close(fd))"
245
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
273
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
246
274
 
247
275
  re="(read,"
248
276
  sbst="(\/* tebako patched *\/ folly::portability::unistd::read,"
249
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
277
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
250
278
 
251
279
  re="(write,"
252
280
  sbst="(\/* tebako patched *\/ folly::portability::unistd::write,"
253
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
281
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
254
282
 
255
283
  re="(dup,"
256
284
  sbst="(\/* tebako patched *\/ folly::portability::unistd::dup,"
257
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
285
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
258
286
 
259
287
  re="(dup2,"
260
288
  sbst="(\/* tebako patched *\/ folly::portability::unistd::dup2,"
261
- sed -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
289
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/FileUtil.cpp"
262
290
 
263
291
  # --- folly/experimental/TestUtil.cpp ---
264
292
  defined_win32_to_msc_ver "$1/folly/experimental/TestUtil.cpp"
265
293
  re="dup("
266
294
  sbst="\/* tebako patched *\/ folly::portability::unistd::dup("
267
- sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
295
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
268
296
 
269
297
  re="dup2("
270
298
  sbst="\/* tebako patched *\/ folly::portability::unistd::dup2("
271
- sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
299
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
272
300
 
273
301
  re="lseek("
274
302
  sbst="\/* tebako patched *\/ folly::portability::unistd::lseek("
275
- sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
303
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
276
304
 
277
305
  re="(close("
278
306
  sbst="(\/* tebako patched *\/ folly::portability::unistd::close("
279
- sed -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
307
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/experimental/TestUtil.cpp"
280
308
 
281
309
  # --- folly/system/MemoryMapping.cpp ---
282
310
  re="0 == ftruncate("
283
311
  sbst="0 == \/* tebako patched *\/ folly::portability::unistd::ftruncate("
284
- sed -i "s/$re/$sbst/g" "$1/folly/system/MemoryMapping.cpp"
312
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/system/MemoryMapping.cpp"
285
313
 
286
314
  # --- folly/portability/SysUio.cpp ---
287
315
  re="lseek(fd,"
@@ -295,7 +323,7 @@ EOM
295
323
 
296
324
  re="lseek(fd, 0,"
297
325
  sbst=" \/* tebako patched *\/ folly::portability::unistd::lseek(fd, 0,"
298
- sed -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.cpp"
326
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.cpp"
299
327
 
300
328
  # --- folly/logging/ImmediateFileWriter.h ---
301
329
  re="isatty(file"
@@ -314,11 +342,11 @@ EOM
314
342
 
315
343
  re="int getuid();"
316
344
  sbst="uid_t getuid(); \/* tebako patched *\/"
317
- sed -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.h"
345
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.h"
318
346
 
319
347
  re="int getgid();"
320
348
  sbst="gid_t getgid(); \/* tebako patched *\/"
321
- sed -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.h"
349
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/Unistd.h"
322
350
 
323
351
  # --- folly/portability/Fcntl.cpp ---
324
352
  re="#include <folly\/portability\/Windows\.h>"
@@ -352,7 +380,7 @@ EOM
352
380
  #ifndef __MINGW32__ \/* -- Tebako patched -- *\/
353
381
  __try {
354
382
  EOM
355
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/net/detail/SocketFileDescriptorMap.cpp"
383
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/net/detail/SocketFileDescriptorMap.cpp"
356
384
 
357
385
  re="\/\/ We're at the core, we don't get the luxery of SCOPE_EXIT because"
358
386
  # shellcheck disable=SC2251
@@ -360,7 +388,7 @@ EOM
360
388
  #endif \/* -- Tebako patched -- *\/
361
389
  \/\/ We're at the core, we don't get the luxery of SCOPE_EXIT because
362
390
  EOM
363
- sed -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/net/detail/SocketFileDescriptorMap.cpp"
391
+ "$GNU_SED" -i "s/$re/${sbst//$'\n'/"\\n"}/g" "$1/folly/net/detail/SocketFileDescriptorMap.cpp"
364
392
 
365
393
  # --- folly/portability/Sockets.h ---
366
394
  restore_and_save "$1/folly/portability/Sockets.h"
@@ -378,14 +406,14 @@ EOM
378
406
  \/* -- End of tebako patch -- *\/
379
407
 
380
408
  EOM
381
- sed -i -i "0,/$re/s||${sbst//$'\n'/"\\n"}|g" "$1/folly/portability/Sockets.h"
409
+ "$GNU_SED" -i -i "0,/$re/s||${sbst//$'\n'/"\\n"}|g" "$1/folly/portability/Sockets.h"
382
410
 
383
411
  # --- folly/portability/Time.cpp ---
384
412
  funky_time_patch "$1/folly/portability/Time.cpp"
385
413
 
386
414
  re="(asctime_s(tmpBuf, tm))"
387
415
  sbst="(asctime_s(tmpBuf, 64\/* tebako patched *\/, tm))"
388
- sed -i "s/$re/$sbst/g" "$1/folly/portability/Time.cpp"
416
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/portability/Time.cpp"
389
417
 
390
418
  # ---
391
419
  re="#if (defined(USE_JEMALLOC) || FOLLY_USE_JEMALLOC) && !FOLLY_SANITIZE"
@@ -418,7 +446,7 @@ EOM
418
446
 
419
447
  re="#if defined(__XROS__)"
420
448
  sbst="#if defined(__XROS__) || defined(__MINGW32__) \/* tebako patched *\/"
421
- sed -i "s/$re/$sbst/g" "$1/folly/system/ThreadName.cpp"
449
+ "$GNU_SED" -i "s/$re/$sbst/g" "$1/folly/system/ThreadName.cpp"
422
450
 
423
451
  # ---
424
452
  defined_msc_ver_to_win32 "$1/folly/external/farmhash/farmhash.cpp"
@@ -0,0 +1,63 @@
1
+ #!/bin/bash
2
+ # Copyright (c) 2023, [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
+ : "${LOCAL_BUILDS:=/tmp/local_builds}"
30
+ : "${LOCAL_INSTALLS:=/opt}"
31
+ : "${CMAKE_VERSION:=3.26.5}"
32
+ : "${LIBARCHIVE_VERSION:=3.6.2}"
33
+ : "${ARCH:=linux-x86_64}"
34
+
35
+ install_cmake() {
36
+ echo "Running install_cmake version ${CMAKE_VERSION} for ${ARCH}"
37
+ local cmake_install="${LOCAL_BUILDS}/cmake"
38
+ mkdir -p "${cmake_install}"
39
+ pushd "${cmake_install}"
40
+ wget "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-${ARCH}.sh"
41
+ chmod +x "cmake-${CMAKE_VERSION}-${ARCH}.sh"
42
+ "./cmake-${CMAKE_VERSION}-${ARCH}.sh" --skip-license --prefix=/usr
43
+ popd
44
+ rm -rf "${cmake_install}"
45
+ }
46
+
47
+ build_and_install_libarchive() {
48
+ echo "Running build_and_install_libarchive version $LIBARCHIVE_VERSION"
49
+ local libarchive_build="$LOCAL_BUILDS/libarchive"
50
+ mkdir -p "$libarchive_build"
51
+ pushd "$libarchive_build"
52
+ wget "https://github.com/libarchive/libarchive/releases/download/v$LIBARCHIVE_VERSION/libarchive-$LIBARCHIVE_VERSION.tar.xz"
53
+ tar xf "libarchive-$LIBARCHIVE_VERSION.tar.xz"
54
+ cd "libarchive-$LIBARCHIVE_VERSION"
55
+ ./configure --prefix="$LOCAL_INSTALLS" --without-iconv --without-xml2 --without-expat
56
+ make -j8
57
+ make install
58
+ popd
59
+ rm -rf "$libarchive_build"
60
+ }
61
+
62
+ # shellcheck disable=SC2068
63
+ $@
@@ -24,27 +24,23 @@
24
24
  # POSSIBILITY OF SUCH DAMAGE.
25
25
  #
26
26
 
27
- set(GNU_BASH "bash")
28
-
29
27
  if (CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
30
- # If we are cross compiling TARGET_HOMEBREW will point to homebrew environment for target
31
- # If we are not cross-compiling it will be empty
32
- # Note that below for Bison, Flex and bash we are using host homebrew environment (just 'brew')
33
- # while other packages refer target environment potentially specified by BREW_BIN
34
28
  execute_process(
35
29
  COMMAND brew --prefix
36
30
  RESULT_VARIABLE BREW_PREFIX_RES
37
- OUTPUT_VARIABLE BUILD_BREW_PREFIX
31
+ OUTPUT_VARIABLE BREW_PREFIX
38
32
  OUTPUT_STRIP_TRAILING_WHITESPACE
39
33
  )
40
- if(NOT (BREW_PREFIX_RES EQUAL 0 AND EXISTS ${BUILD_BREW_PREFIX}))
34
+ if(NOT (BREW_PREFIX_RES EQUAL 0 AND EXISTS ${BREW_PREFIX}))
41
35
  message(FATAL "Could not find build brew setup")
42
36
  endif()
43
37
 
44
- message("Using build brew environment at ${BUILD_BREW_PREFIX}")
45
- # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.me
46
- set(BUILD_OPENSSL_ROOT_DIR "${BUILD_BREW_PREFIX}/opt/openssl@1.1")
47
- set(BUILD_CMAKE_PREFIX_PATH "${BUILD_BREW_PREFIX}")
38
+ message(STATUS "Using brew environment at ${BREW_PREFIX}")
39
+ # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.me
40
+ set(OPENSSL_ROOT_DIR "${BREW_PREFIX}/opt/openssl@3")
41
+ set(CMAKE_PREFIX_PATH "${BREW_PREFIX}")
42
+ include_directories("${OPENSSL_ROOT_DIR}/include")
43
+ include_directories("${TARGET_BREW_PREFIX}/include")
48
44
 
49
45
  # https://stackoverflow.com/questions/53877344/cannot-configure-cmake-to-look-for-homebrew-installed-version-of-bison
50
46
  execute_process(
@@ -80,25 +76,6 @@ if (CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
80
76
  set(GNU_BASH "${BREW_BASH_PREFIX}/bin/bash")
81
77
  endif()
82
78
 
83
- if(NOT TARGET_HOMEBREW)
84
- set(TARGET_BREW_PREFIX ${BUILD_BREW_PREFIX} )
85
- else()
86
- execute_process(
87
- COMMAND "${TARGET_HOMEBREW}/bin/brew" --prefix
88
- RESULT_VARIABLE BREW_PREFIX_RES
89
- OUTPUT_VARIABLE TARGET_BREW_PREFIX
90
- OUTPUT_STRIP_TRAILING_WHITESPACE
91
- )
92
- if(NOT (BREW_PREFIX_RES EQUAL 0 AND EXISTS ${TARGET_BREW_PREFIX}))
93
- message(FATAL "Could not find target brew setup")
94
- endif()
95
- endif()
96
-
97
- message("Using target brew environment at ${TARGET_BREW_PREFIX}")
98
- set(OPENSSL_ROOT_DIR "${TARGET_BREW_PREFIX}/opt/openssl@1.1")
99
- set(CMAKE_PREFIX_PATH "${TARGET_BREW_PREFIX}")
100
- include_directories("${TARGET_BREW_PREFIX}/include")
101
-
102
79
  # Suppress superfluous randlib warnings about "*.a" having no symbols on MacOSX.
103
80
  set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
104
81
  set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
@@ -0,0 +1,92 @@
1
+ # Copyright (c) 2022-2024 [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
+ def_ext_prj_t(LIBARCHIVE "3.6.2" "9e2c1b80d5fbe59b61308fdfab6c79b5021d7ff4ff2489fb12daf0a96a83551d")
27
+
28
+ message(STATUS "Collecting libarchive - " v${LIBARCHIVE_VER} " at " ${LIBARCHIVE_SOURCE_DIR})
29
+
30
+ set(CMAKE_ARGUMENTS -DCMAKE_INSTALL_PREFIX=${DEPS}
31
+ -DCMAKE_BUILD_TYPE=Release
32
+ -DBUILD_SHARED_LIBS:BOOL=OFF
33
+ -DENABLE_ACL:BOOL=OFF
34
+ -DENABLE_CNG:BOOL=OFF
35
+ -DENABLE_ICONV:BOOL=OFF
36
+ -DENABLE_LIBXML2:BOOL=OFF
37
+ -DENABLE_BZip2:BOOL=OFF
38
+ -DENABLE_CPIO:BOOL=OFF
39
+ -DENABLE_CAT:BOOL=OFF
40
+ -DENABLE_TAR:BOOL=OFF
41
+ -DENABLE_TEST:BOOL=OFF
42
+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
43
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
44
+ )
45
+
46
+ if(TEBAKO_BUILD_TARGET)
47
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_C_FLAGS=--target=${TEBAKO_BUILD_TARGET})
48
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_EXE_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
49
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_SHARED_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
50
+ endif(TEBAKO_BUILD_TARGET)
51
+
52
+ # ...................................................................
53
+ # libarchive is the module that creates the real pain here
54
+ # Its shared version looks around to find other shared libraries which
55
+ # can do the real work. For example, if liblzma.so is found then libarchive
56
+ # supports lzma encoding.
57
+ # Static libary is compiled against predefined set of static archive libraries
58
+ # at the time when binary distribution created. This is not necessarily the
59
+ # set of libraries which is present at the system where this script is
60
+ # executed.
61
+ #
62
+ # There are two options to fix it:
63
+ #
64
+ # 1) Build local version of libarchive.a
65
+ #
66
+ # 2) Use LIBARCHIVE_STATIC_LIBRARIES and LIBARCHIVE_STATIC_LDFLAGS that are
67
+ # set by pkg_check_modules(LIBARCHIVE IMPORTED_TARGET libarchive>=3.1.2)
68
+ #
69
+ # Method #1 is implemented here.
70
+ # ...................................................................
71
+
72
+ if(${IS_MSYS})
73
+ set(__LIBARCHIVE "${DEPS}/lib/libarchive_static.a")
74
+ else(${IS_MSYS})
75
+ set(__LIBARCHIVE "${DEPS}/lib/libarchive.a")
76
+ endif(${IS_MSYS})
77
+
78
+ ExternalProject_Add(${LIBARCHIVE_PRJ}
79
+ PREFIX "${DEPS}"
80
+ URL http://www.libarchive.org/downloads/libarchive-${LIBARCHIVE_VER}.tar.xz
81
+ URL_HASH SHA256=${LIBARCHIVE_HASH}
82
+ DOWNLOAD_NO_PROGRESS true
83
+ UPDATE_COMMAND ""
84
+ CMAKE_ARGS ${CMAKE_ARGUMENTS}
85
+ SOURCE_DIR ${LIBARCHIVE_SOURCE_DIR}
86
+ BINARY_DIR ${LIBARCHIVE_BINARY_DIR}
87
+ BUILD_BYPRODUCTS ${__LIBARCHIVE}
88
+ )
89
+
90
+ add_library(_LIBARCHIVE STATIC IMPORTED)
91
+ set_target_properties(_LIBARCHIVE PROPERTIES IMPORTED_LOCATION ${__LIBARCHIVE})
92
+ add_dependencies(_LIBARCHIVE ${LIBARCHIVE_PRJ})
@@ -0,0 +1,55 @@
1
+ # Copyright (c) 2024 [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
+ def_ext_prj_t(LIBHOWARDHINNANTDATE "3.0.1" "7a390f200f0ccd207e8cff6757e04817c1a0aec3e327b006b7eb451c57ee3538")
27
+
28
+ message(STATUS "Collecting libutfcpp - " v${LIBHOWARDHINNANTDATE_VER} " at " ${LIBHOWARDHINNANTDATE_SOURCE_DIR})
29
+
30
+ set(CMAKE_ARGUMENTS -DCMAKE_INSTALL_PREFIX=${DEPS}
31
+ -DUTF8_INSTALL=OFF
32
+ -DUTF8_SAMPLES=OFF
33
+ -DUTF8_TESTS=OFF
34
+ -DCMAKE_BUILD_TYPE=Release
35
+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
36
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
37
+ )
38
+
39
+ if(TEBAKO_BUILD_TARGET)
40
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_C_FLAGS=--target=${TEBAKO_BUILD_TARGET})
41
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_EXE_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
42
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_SHARED_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
43
+ endif(TEBAKO_BUILD_TARGET)
44
+
45
+ ExternalProject_Add(${LIBHOWARDHINNANTDATE_PRJ}
46
+ PREFIX "${DEPS}"
47
+ URL https://github.com/HowardHinnant/date/archive/refs/tags/v${LIBHOWARDHINNANTDATE_VER}.tar.gz
48
+ URL_HASH SHA256=${LIBHOWARDHINNANTDATE_HASH}
49
+ DOWNLOAD_NO_PROGRESS true
50
+ UPDATE_COMMAND ""
51
+ CMAKE_ARGS ${CMAKE_ARGUMENTS}
52
+ SOURCE_DIR ${LIBHOWARDHINNANTDATE_SOURCE_DIR}
53
+ BINARY_DIR ${LIBHOWARDHINNANTDATE_BINARY_DIR}
54
+ BUILD_BYPRODUCTS ${__LIBHOWARDHINNANTDATE}
55
+ )
@@ -0,0 +1,56 @@
1
+ # Copyright (c) 2022-2024 [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
+ def_ext_prj_t(LIBUTFCPP "3.2.5" "14fd1b3c466814cb4c40771b7f207b61d2c7a0aa6a5e620ca05c00df27f25afd")
27
+
28
+ message(STATUS "Collecting libutfcpp - " v${LIBUTFCPP_VER} " at " ${LIBUTFCPP_SOURCE_DIR})
29
+
30
+ set(CMAKE_ARGUMENTS -DCMAKE_INSTALL_PREFIX=${DEPS}
31
+ -DUTF8_INSTALL=OFF
32
+ -DUTF8_SAMPLES=OFF
33
+ -DUTF8_TESTS=OFF
34
+ -DCMAKE_BUILD_TYPE=Release
35
+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
36
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
37
+ )
38
+
39
+ if(TEBAKO_BUILD_TARGET)
40
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_C_FLAGS=--target=${TEBAKO_BUILD_TARGET})
41
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_EXE_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
42
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_SHARED_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
43
+ endif(TEBAKO_BUILD_TARGET)
44
+
45
+ ExternalProject_Add(${LIBUTFCPP_PRJ}
46
+ PREFIX "${DEPS}"
47
+ URL https://github.com/nemtrif/utfcpp/archive/refs/tags/v${LIBUTFCPP_VER}.tar.gz
48
+ URL_HASH SHA256=${LIBUTFCPP_HASH}
49
+ DOWNLOAD_NO_PROGRESS true
50
+ UPDATE_COMMAND ""
51
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBUTFCPP_SOURCE_DIR}/source ${DEPS_INCLUDE_DIR}
52
+ CMAKE_ARGS ${CMAKE_ARGUMENTS}
53
+ SOURCE_DIR ${LIBUTFCPP_SOURCE_DIR}
54
+ BINARY_DIR ${LIBUTFCPP_BINARY_DIR}
55
+ BUILD_BYPRODUCTS ${__LIBUTFCPP}
56
+ )
@@ -1,5 +1,4 @@
1
- #! /bin/bash
2
- # Copyright (c) 2022, [Ribose Inc](https://www.ribose.com).
1
+ # Copyright (c) 2024, [Ribose Inc](https://www.ribose.com).
3
2
  # All rights reserved.
4
3
  # This file is a part of tebako
5
4
  #
@@ -24,36 +23,13 @@
24
23
  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
24
  # POSSIBILITY OF SUCH DAMAGE.
26
25
 
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
26
+ cmake_minimum_required(VERSION 3.24.0)
27
+ project(setup-libhowardhinnerdate-test)
30
28
 
31
- set -o errexit -o pipefail -o noclobber -o nounset
29
+ include(ExternalProject)
32
30
 
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
- }
31
+ set(ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..)
32
+ set(DEPS ${CMAKE_CURRENT_BINARY_DIR}/deps)
39
33
 
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
34
+ include(${ROOT}/cmake-scripts/def-external-project.cmake)
35
+ include(${ROOT}/cmake-scripts/setup-libhowardhinnerdate.cmake)
@@ -0,0 +1,35 @@
1
+ # Copyright (c) 2024, [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
+ cmake_minimum_required(VERSION 3.24.0)
27
+ project(setup-librachive-test)
28
+
29
+ include(ExternalProject)
30
+
31
+ set(ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..)
32
+ set(DEPS ${CMAKE_CURRENT_BINARY_DIR}/deps)
33
+
34
+ include(${ROOT}/cmake-scripts/def-external-project.cmake)
35
+ include(${ROOT}/cmake-scripts/setup-libarchive.cmake)
@@ -0,0 +1,36 @@
1
+ # Copyright (c) 2024, [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
+ cmake_minimum_required(VERSION 3.24.0)
27
+ project(setup-libutfcpp-test)
28
+
29
+ include(ExternalProject)
30
+
31
+ set(ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..)
32
+ set(DEPS ${CMAKE_CURRENT_BINARY_DIR}/deps)
33
+ set(DEPS_INCLUDE_DIR ${DEPS}/include)
34
+
35
+ include(${ROOT}/cmake-scripts/def-external-project.cmake)
36
+ include(${ROOT}/cmake-scripts/setup-libutfcpp.cmake)
data/version.txt CHANGED
@@ -1 +1 @@
1
- 0.5.6
1
+ 0.5.7
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.5.6
4
+ version: 0.5.7
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-01-26 00:00:00.000000000 Z
11
+ date: 2024-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -78,21 +78,29 @@ files:
78
78
  - tebako.gemspec
79
79
  - tools/.gitattributes
80
80
  - tools/.github/workflows/lint.yml
81
+ - tools/.github/workflows/test.yml
82
+ - tools/.gitignore
81
83
  - tools/README.md
82
84
  - tools/ci-scripts/arm-brew-install.sh
83
85
  - tools/ci-scripts/arm-brew-setup.sh
84
86
  - tools/ci-scripts/level-up.sh
85
87
  - tools/ci-scripts/patch-fbthrift.sh
86
88
  - tools/ci-scripts/patch-folly.sh
87
- - tools/ci-scripts/patch-system-includes.sh
89
+ - tools/ci-scripts/tools.sh
88
90
  - tools/ci-scripts/x86-brew-install.sh
89
91
  - tools/ci-scripts/x86-brew-setup.sh
90
92
  - tools/cmake-scripts/def-external-project.cmake
91
93
  - tools/cmake-scripts/macos-environment.cmake
92
94
  - tools/cmake-scripts/msys-environment.cmake
95
+ - tools/cmake-scripts/setup-libarchive.cmake
96
+ - tools/cmake-scripts/setup-libhowardhinnerdate.cmake
97
+ - tools/cmake-scripts/setup-libutfcpp.cmake
93
98
  - tools/cmake-scripts/setup-openssl.cmake
94
99
  - tools/cmake-scripts/version.cmake
95
100
  - tools/include/pro-statvfs.h
101
+ - tools/tests/setup-libhowardhinnerdate/CMakeLists.txt
102
+ - tools/tests/setup-librachive/CMakeLists.txt
103
+ - tools/tests/setup-libutfcpp/CMakeLists.txt
96
104
  - version.txt
97
105
  homepage: https://github.com/tamatebako/tebako
98
106
  licenses: