tebako 0.8.6 → 0.8.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|