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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17722a182f3df63283d1b99ede4bb8a3bae7a864eb001412165cbf7e43d2c4d5
4
- data.tar.gz: '029dd9ec847efd8f0002b148e4db1496d6a09c005879b52ae88f088e6333e1ba'
3
+ metadata.gz: 32bc84615f87ea1dba23c659ef4efe66906fd3ff2d913c5bb5710533a7f2e947
4
+ data.tar.gz: 4ee0c2ea6565dd76fd797df814c11c190155eeb90b3beba05e3a94183e4368a5
5
5
  SHA512:
6
- metadata.gz: 4425672dd1e610017539d3c329ab476e6f5080a91b81f9afda7c0aabeb82f6b83fdf29b4e5e1ff9b604c7eb1d20b61b029442ab902736680c33b32ba7c66fb9c
7
- data.tar.gz: 5144425b8ebe468462352db8da92c2ea6483a365bd88e7dd992d3d09dbac1bb0f4f57865e1e298adcc8e66ff3a90f4e21f85b9ffba6ff624fca42a05a1c5f85f
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
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
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 "master")
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 works on Gnu Linux with
699
- Gnu toolchain only (not for LLVM/clang). The feature is exeprimental, we may consider other approach in the future.
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`).
@@ -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
- "-DREMOVE_GLIBC_PRIVATE=#{remove_glibc_private} -DTEBAKO_VERSION:STRING=\"#{Tebako::VERSION}\""
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 ||= options["patchelf"] ? "ON" : "OFF"
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"], ["fmt", "fmt"], ["lz4", "lz4"], ["xz", "lzma"],
40
- ["libyaml", "yaml"], ["boost", "boost_chrono"], ["double-conversion", "double-conversion"]
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", "zstd"].freeze
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 = [
@@ -26,5 +26,5 @@
26
26
  # POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
28
  module Tebako
29
- VERSION = "0.8.6"
29
+ VERSION = "0.8.8"
30
30
  end
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.6
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-02 00:00:00.000000000 Z
11
+ date: 2024-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor