tebako 0.8.6 → 0.8.8
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 +2 -6
- data/README.adoc +77 -3
- data/lib/tebako/cli_helpers.rb +8 -2
- data/lib/tebako/packager/patch_libraries.rb +4 -4
- data/lib/tebako/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 32bc84615f87ea1dba23c659ef4efe66906fd3ff2d913c5bb5710533a7f2e947
|
|
4
|
+
data.tar.gz: 4ee0c2ea6565dd76fd797df814c11c190155eeb90b3beba05e3a94183e4368a5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7a96e28c1eed3205db11cc6dd16c91ca13a01959fb792ed5f504d057bd252e0618b1d0eb2d787ddc6a7ca6627743b8187dc6c060c6d34bcabf64343a176dcb2f
|
|
7
|
+
data.tar.gz: 5e94107188ab47055ae4dc07bd3acea650288ed4964e16a2752962bc9306c6b29ecf4303b03f74df9b01f2560110a1e6a432c8fd53bbea5fe01a5683ffdf88a6
|
data/CMakeLists.txt
CHANGED
|
@@ -127,11 +127,7 @@ set(WITH_PATCHELF OFF)
|
|
|
127
127
|
if("${OSTYPE_TXT}" MATCHES "^linux-gnu.*")
|
|
128
128
|
set(IS_GNU ON)
|
|
129
129
|
if(REMOVE_GLIBC_PRIVATE)
|
|
130
|
-
|
|
131
|
-
set(WITH_PATCHELF ON)
|
|
132
|
-
else()
|
|
133
|
-
message(WARNING "Elf file patching is supported for GNU toolchain only. 'patchelf' setting ignored")
|
|
134
|
-
endif()
|
|
130
|
+
set(WITH_PATCHELF ON)
|
|
135
131
|
endif(REMOVE_GLIBC_PRIVATE)
|
|
136
132
|
elseif("${OSTYPE_TXT}" MATCHES "^linux-musl.*")
|
|
137
133
|
set(IS_MUSL ON)
|
|
@@ -216,7 +212,7 @@ string(CONCAT RUBY_API_VER ${RUBY_VER_BASE} ".0")
|
|
|
216
212
|
def_ext_prj_g(DWARFS_WR "v0.5.9")
|
|
217
213
|
#endif(DWARFS_PRELOAD)
|
|
218
214
|
|
|
219
|
-
def_ext_prj_g(PATCHELF "
|
|
215
|
+
def_ext_prj_g(PATCHELF "65e14792061c298f1d2bc44becd48a10cbf0bc81")
|
|
220
216
|
|
|
221
217
|
set(LIBYAML_RUBY_OPTION "")
|
|
222
218
|
if(${RUBY_VER} VERSION_LESS "3.2.0")
|
data/README.adoc
CHANGED
|
@@ -9,6 +9,9 @@ image:https://github.com/tamatebako/tebako/actions/workflows/windows-msys.yml/ba
|
|
|
9
9
|
Platform tests on Cirrus:
|
|
10
10
|
image:https://api.cirrus-ci.com/github/tamatebako/tebako.svg?branch=main&task=ubuntu-aarch64["Ubuntu aarch64", link="https://cirrus-ci.com/github/tamatebako/tebako"]
|
|
11
11
|
|
|
12
|
+
Tools tests on GitHub:
|
|
13
|
+
image:https://github.com/tamatebako/tebako-ci-containers/actions/workflows/build-containers.yml/badge.svg["Tebako cobtainers", link="https://github.com/tamatebako/tebako-ci-containers/actions/workflows/build-containers.yml"]
|
|
14
|
+
|
|
12
15
|
Quality:
|
|
13
16
|
image:https://github.com/tamatebako/tebako/actions/workflows/lint-and-rspec.yml/badge.svg["lint and rspec", link="https://github.com/tamatebako/tebako/actions/workflows/lint-and-rspec.yml"]
|
|
14
17
|
image:https://codecov.io/gh/tamatebako/tebako/graph/badge.svg?token=XD3emQ5qsY["Tebako cli rspec coverage", link="https://codecov.io/gh/tamatebako/tebako"]
|
|
@@ -95,6 +98,78 @@ with debug information unstripped. You can opt to run 'strip -S' manually, it mo
|
|
|
95
98
|
|
|
96
99
|
NOTE: Our goal is to support all maintained Ruby releases, including minor versions.
|
|
97
100
|
|
|
101
|
+
|
|
102
|
+
== Package portability
|
|
103
|
+
|
|
104
|
+
=== General
|
|
105
|
+
|
|
106
|
+
Tebako packages are designed to be "forward portable" across different operating
|
|
107
|
+
systems and architectures to allow for easy distribution and deployment.
|
|
108
|
+
|
|
109
|
+
Forward portability means that a package created on a specific platform can be
|
|
110
|
+
executed on a newer version of the same platform.
|
|
111
|
+
|
|
112
|
+
=== macOS
|
|
113
|
+
|
|
114
|
+
macOS packages are forward portable across different macOS versions.
|
|
115
|
+
|
|
116
|
+
[example]
|
|
117
|
+
A Tebako executable package built on macOS 12 (Monterey) can be executed on
|
|
118
|
+
macOS 14 (Sonoma), but not vice versa.
|
|
119
|
+
|
|
120
|
+
`x86_64` macOS packages can be run on Apple M (ARM) systems.
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
=== Linux distributions using `musl`
|
|
124
|
+
|
|
125
|
+
Packages built for the
|
|
126
|
+
https://musl.libc.org[`musl` implementation of the C standard library]
|
|
127
|
+
(such as https://alpinelinux.org[Alpine Linux]) are forward portable.
|
|
128
|
+
|
|
129
|
+
[example]
|
|
130
|
+
A Tebako executable package built on Alpine 3.17 can be executed on Alpine 3.19.
|
|
131
|
+
|
|
132
|
+
Usage of the
|
|
133
|
+
https://github.com/tamatebako/tebako-ci-containers[Tebako Docker containers] for
|
|
134
|
+
packaging is encouraged since it eliminates the effort needed for toolchain
|
|
135
|
+
setup and configuration.
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
=== Linux distributions using `glibc`
|
|
139
|
+
|
|
140
|
+
Packages built for the
|
|
141
|
+
https://sourceware.org/glibc[`glibc` implementation of the C standard library]
|
|
142
|
+
are forward portable if the `--patchelf` experimental option is enabled.
|
|
143
|
+
|
|
144
|
+
The `--patchelf` option allows these packages to be portable to Linux GNU
|
|
145
|
+
distributions with GLIBC version 2.31 and above.
|
|
146
|
+
|
|
147
|
+
[example]
|
|
148
|
+
A Tebako executable package built on Ubuntu 20.04 with `--patchelf` option can
|
|
149
|
+
be executed on Rocky Linux 9.
|
|
150
|
+
|
|
151
|
+
Usage of the
|
|
152
|
+
https://github.com/tamatebako/tebako-ci-containers[Tebako Docker containers] for
|
|
153
|
+
packaging is encouraged since it eliminates the effort needed for toolchain
|
|
154
|
+
setup and configuration.
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
.Minimum versions of GLIBC Linux distributions that support Tebako packages with forward portability
|
|
158
|
+
[cols="3", options="header"]
|
|
159
|
+
|===
|
|
160
|
+
| Distribution | Minimal supported version | GLIBC version
|
|
161
|
+
|
|
162
|
+
| Ubuntu | 20.04 (Focal Fossa) | GLIBC 2.31
|
|
163
|
+
| Debian | 11 (Bullseye) | GLIBC 2.31
|
|
164
|
+
| Rocky Linux | 9 | GLIBC 2.34
|
|
165
|
+
| Fedora | 33 | GLIBC 2.32
|
|
166
|
+
| CentOS | 9 | GLIBC 2.34
|
|
167
|
+
| Red Hat Enterprise Linux (RHEL) | 9 | GLIBC 2.34
|
|
168
|
+
| Oracle Linux | 9 | GLIBC 2.34
|
|
169
|
+
|
|
170
|
+
|===
|
|
171
|
+
|
|
172
|
+
|
|
98
173
|
== Future plans
|
|
99
174
|
|
|
100
175
|
* Downloading new DwarFS images to be stored in the local home directory
|
|
@@ -102,7 +177,6 @@ NOTE: Our goal is to support all maintained Ruby releases, including minor versi
|
|
|
102
177
|
* Supporting a COW mechanism that the newly written files are stored
|
|
103
178
|
in a separate image that can be loaded on top of the read-only file systems.
|
|
104
179
|
|
|
105
|
-
|
|
106
180
|
== FAQ
|
|
107
181
|
|
|
108
182
|
=== Why use Tebako?
|
|
@@ -695,8 +769,8 @@ packaging consistency checks are relaxed.
|
|
|
695
769
|
|
|
696
770
|
`patchelf`::
|
|
697
771
|
flag that removal a reference to GLIBC_PRIVATE version of libpthread from tebako package. This allows Linux Gnu packages to run against versions of
|
|
698
|
-
libpthread that differ from the version used for packaging. For example, package created at Ubuntu 20 system can be used on Ubuntu 22. This option
|
|
699
|
-
|
|
772
|
+
libpthread that differ from the version used for packaging. For example, package created at Ubuntu 20 system can be used on Ubuntu 22. This option makes
|
|
773
|
+
sense and works on Gnu Linux only. The feature is exeprimental, we may consider other approach in the future.
|
|
700
774
|
|
|
701
775
|
`tebafile`::
|
|
702
776
|
the tebako configuration file (optional, defaults to `$PWD/.tebako.yml`).
|
data/lib/tebako/cli_helpers.rb
CHANGED
|
@@ -56,7 +56,7 @@ module Tebako
|
|
|
56
56
|
@cfg_options ||=
|
|
57
57
|
"-DCMAKE_BUILD_TYPE=Release -DRUBY_VER:STRING=\"#{ruby_ver}\" -DRUBY_HASH:STRING=\"#{ruby_hash}\" " \
|
|
58
58
|
"-DDEPS:STRING=\"#{deps}\" -G \"#{m_files}\" -B \"#{output_folder}\" -S \"#{source}\" " \
|
|
59
|
-
"
|
|
59
|
+
"#{remove_glibc_private} -DTEBAKO_VERSION:STRING=\"#{Tebako::VERSION}\""
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def clean_cache
|
|
@@ -87,6 +87,7 @@ module Tebako
|
|
|
87
87
|
merged_env = ENV.to_h.merge(b_env)
|
|
88
88
|
Tebako.packaging_error(103) unless system(merged_env, cfg_cmd)
|
|
89
89
|
Tebako.packaging_error(104) unless system(merged_env, build_cmd)
|
|
90
|
+
true
|
|
90
91
|
end
|
|
91
92
|
|
|
92
93
|
def do_setup
|
|
@@ -95,6 +96,7 @@ module Tebako
|
|
|
95
96
|
merged_env = ENV.to_h.merge(b_env)
|
|
96
97
|
Tebako.packaging_error(101) unless system(merged_env, cfg_cmd)
|
|
97
98
|
Tebako.packaging_error(102) unless system(merged_env, build_cmd)
|
|
99
|
+
true
|
|
98
100
|
end
|
|
99
101
|
|
|
100
102
|
def ensure_version_file
|
|
@@ -175,7 +177,11 @@ module Tebako
|
|
|
175
177
|
end
|
|
176
178
|
|
|
177
179
|
def remove_glibc_private
|
|
178
|
-
@remove_glibc_private ||=
|
|
180
|
+
@remove_glibc_private ||= if RUBY_PLATFORM.end_with?("linux") || RUBY_PLATFORM.end_with?("linux-gnu")
|
|
181
|
+
"-DREMOVE_GLIBC_PRIVATE=#{options["patchelf"] ? "ON" : "OFF"}"
|
|
182
|
+
else
|
|
183
|
+
""
|
|
184
|
+
end
|
|
179
185
|
end
|
|
180
186
|
|
|
181
187
|
def handle_nil_prefix
|
|
@@ -36,16 +36,16 @@ module Tebako
|
|
|
36
36
|
# rubocop:disable Style/WordArray
|
|
37
37
|
DARWIN_BREW_LIBS = [
|
|
38
38
|
["zlib", "z"], ["gdbm", "gdbm"], ["readline", "readline"], ["libffi", "ffi"],
|
|
39
|
-
["ncurses", "ncurses"], ["
|
|
40
|
-
["
|
|
39
|
+
["ncurses", "ncurses"], ["lz4", "lz4"], ["xz", "lzma"], ["libyaml", "yaml"],
|
|
40
|
+
["boost", "boost_chrono"], ["double-conversion", "double-conversion"]
|
|
41
41
|
].freeze
|
|
42
42
|
|
|
43
43
|
DARWIN_BREW_LIBS_PRE_31 = [["openssl@1.1", "ssl"], ["openssl@1.1", "crypto"]].freeze
|
|
44
44
|
|
|
45
45
|
DARWIN_BREW_LIBS_31 = [["openssl@3", "ssl"], ["openssl@3", "crypto"]].freeze
|
|
46
46
|
|
|
47
|
-
DARWIN_DEP_LIBS_1 = ["folly", "fsst", "metadata_thrift", "thrift_light", "xxhash",
|
|
48
|
-
DARWIN_DEP_LIBS_2 = ["glog", "gflags", "brotlienc", "brotlidec", "brotlicommon"].freeze
|
|
47
|
+
DARWIN_DEP_LIBS_1 = ["folly", "fsst", "metadata_thrift", "thrift_light", "xxhash", "zstd"].freeze
|
|
48
|
+
DARWIN_DEP_LIBS_2 = ["glog", "gflags", "brotlienc", "brotlidec", "brotlicommon", "fmt"].freeze
|
|
49
49
|
# rubocop:enable Style/WordArray
|
|
50
50
|
|
|
51
51
|
COMMON_LINUX_LIBRARIES = [
|
data/lib/tebako/version.rb
CHANGED
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.8.
|
|
4
|
+
version: 0.8.8
|
|
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-09-
|
|
11
|
+
date: 2024-09-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|