tebako 0.14.0 → 0.15.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4dcc229108a9b5326a4bcb8b0b5759309a1ab5f6811e5a8ab7fd2137ea962039
4
- data.tar.gz: 0efd3f0bbaac72b4baf9e7f738d530a98643657e0d8a40fa9700e06943575d82
3
+ metadata.gz: 4f1af67f13e230840eb812871c10cfc25332cc2479f70ca3653bb57b395705ff
4
+ data.tar.gz: ae23b253616c15efdbf92fdb539626b1854a31281ad92802aa9484cf50985cc6
5
5
  SHA512:
6
- metadata.gz: d182cfef39a103bd9c5b4cd2aaf2dd230bd10c4383d172920948a55f6994673fc53783fe07305fbc27219d2888ff9f3e92ab0d701fd47436ad7510e7f50f4958
7
- data.tar.gz: 1a7bc54186bdece6993acedce77d40e20ab032a01b1d0243d33e39082cfb3ca36704517ca8725dbf8064706d191690942f8ee3f821ae7881bd52d38cdc2af97d
6
+ metadata.gz: d9c722d8e2bf9544337520357fa9a5ec72896ded55f82f9c501e428f2707fae727bf9ffae837ab16e7a7ebe419266f069b74dbf5435ef4135312460a77a9e8b8
7
+ data.tar.gz: 94f7c668de8aaaecd3ec2ac0e80fb98a0fccfa997a8803f4bfbebb15225bb3cf55493590d715e774f0cbb952a06faaf425250d53fc953a50dfe83539c3977397
data/Brewfile CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  brew "zlib"
4
4
  brew "ncurses"
5
- brew "libevent"
6
5
  brew "libsodium"
7
6
  brew "lz4"
8
7
  brew "xz"
@@ -14,10 +13,6 @@ brew "bison"
14
13
  brew "flex"
15
14
  brew "binutils"
16
15
  brew "libffi"
17
- brew "double-conversion"
18
- brew "boost"
19
16
  brew "jemalloc"
20
- brew "fmt"
21
- brew "glog"
22
17
  brew "gnu-sed"
23
18
  brew "bash"
data/CMakeLists.txt CHANGED
@@ -91,7 +91,10 @@ set(IS_MSYS OFF)
91
91
  set(IS_DARWIN OFF)
92
92
  set(RB_W32 OFF)
93
93
  set(RUBY_WITHOUT_EXT "dbm,win32,win32ole,-test-/*")
94
- set(DWARFS_PRELOAD OFF)
94
+ option(DWARFS_PRELOAD "Deploy the prebuilt libtfs package from the GitHub release (OFF builds libtfs from source with the vcpkg toolchain)" ON)
95
+ if(DEFINED ENV{DWARFS_PRELOAD})
96
+ set(DWARFS_PRELOAD $ENV{DWARFS_PRELOAD} CACHE BOOL "Deploy the prebuilt libtfs package from the GitHub release" FORCE)
97
+ endif()
95
98
  set(WITH_PATCHELF OFF)
96
99
 
97
100
  if("${OSTYPE_TXT}" MATCHES "^linux-gnu.*")
@@ -103,7 +106,6 @@ elseif("${OSTYPE_TXT}" MATCHES "^linux-musl.*")
103
106
  set(IS_MUSL ON)
104
107
  elseif("${OSTYPE_TXT}" MATCHES "^msys*" OR "${OSTYPE_TXT}" MATCHES "^cygwin*")
105
108
  set(IS_MSYS ON)
106
- # set(DWARFS_PRELOAD ON)
107
109
  set(RB_W32 ON)
108
110
  set(RUBY_WITHOUT_EXT "dbm,syslog,pty,gdbm,readline,-test-/*")
109
111
  elseif("${OSTYPE_TXT}" MATCHES "^darwin.*")
@@ -168,18 +170,49 @@ set(RUBY_STASH_DIR ${DEPS}/stash_${RUBY_VER})
168
170
  string(SUBSTRING ${RUBY_VER} 0 3 RUBY_VER_BASE)
169
171
  string(CONCAT RUBY_API_VER ${RUBY_VER_BASE} ".0")
170
172
 
171
- #if(DWARFS_PRELOAD)
172
- # def_ext_prj_t(LIBDWARFS_WR "0.5.8" "7bf8e5b4432f35b65f6034f614067c2018995c1bebaf935e8cdddc1a3e045c01")
173
- #
174
- # string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1;\\2;\\3" LIBDWARFS_WR_VER_COMPONENTS ${LIBDWARFS_WR_VER})
175
- #
176
- # list(GET LIBDWARFS_WR_VER_COMPONENTS 0 LIBDWARFS_WR_VER_MAJOR)
177
- # list(GET LIBDWARFS_WR_VER_COMPONENTS 1 LIBDWARFS_WR_VER_MINOR)
178
- # list(GET LIBDWARFS_WR_VER_COMPONENTS 2 LIBDWARFS_WR_VER_PATCH)
179
- # set (LIBDWARFS_WR_VER_M ${LIBDWARFS_WR_VER_MAJOR}.${LIBDWARFS_WR_VER_MINOR}.${LIBDWARFS_WR_VER_PATCH})
180
- #else(DWARFS_PRELOAD)
181
- def_ext_prj_g(DWARFS_WR "v0.11.0")
182
- #endif(DWARFS_PRELOAD)
173
+ # libtfs (former libdwarfs-wr): DWARFS_WR_TAG selects the libtfs git tag for
174
+ # the source build and the matching GitHub release for the prebuilt package
175
+ # NOTE: the env override in def_ext_prj_g (tebako-tools) is currently broken
176
+ # (`if (DEFINED ENV{${TAG})` is missing a closing brace, so the test never
177
+ # fires); this default is the operative tag selection.
178
+ def_ext_prj_g(DWARFS_WR "v0.12.8")
179
+
180
+ # Provisions libtfs (prebuilt package or vcpkg toolchain for the source
181
+ # build), the prebuilt mkdwarfs, and -- for the prebuilt path -- the
182
+ # transitive static dependencies the libtfs package does not ship.
183
+ # Sets LIBTFS_* variables summarized below.
184
+ include(${CMAKE_SOURCE_DIR}/cmake/tebako-libtfs.cmake)
185
+
186
+ # incbin (graphitemaster/incbin): single-header asset embedding used by
187
+ # include/tebako/tebako-fs.h and the codegen templates. It was deployed into
188
+ # ${DEPS_INCLUDE_DIR} by the libdwarfs-wr package; libtfs does not carry it,
189
+ # so tebako provisions it directly. The pin matches common.env INCBIN_TAG
190
+ # (which reaches this file only when the tebako-tools env override works --
191
+ # see the DWARFS_WR note above).
192
+ def_ext_prj_g(INCBIN "6e576cae5ab5810f25e2631f2e0b80cbe7dc8cbf")
193
+ set(INCBIN_HEADER "${DEPS_INCLUDE_DIR}/incbin/incbin.h")
194
+ set(INCBIN_SHA256 "70995329299ec55d414ad6df6929ddcfe0a43a40102cf6c05ff3c74ddd2765cb")
195
+ set(__INCBIN_DOWNLOAD ON)
196
+ if(EXISTS "${INCBIN_HEADER}")
197
+ file(SHA256 "${INCBIN_HEADER}" __INCBIN_CURRENT)
198
+ if(__INCBIN_CURRENT STREQUAL INCBIN_SHA256)
199
+ set(__INCBIN_DOWNLOAD OFF)
200
+ endif()
201
+ endif()
202
+ if(__INCBIN_DOWNLOAD)
203
+ message(STATUS "incbin: fetching incbin.h @ ${INCBIN_TAG}")
204
+ file(MAKE_DIRECTORY "${DEPS_INCLUDE_DIR}/incbin")
205
+ file(DOWNLOAD "https://raw.githubusercontent.com/graphitemaster/incbin/${INCBIN_TAG}/incbin.h"
206
+ "${INCBIN_HEADER}" EXPECTED_HASH "SHA256=${INCBIN_SHA256}"
207
+ STATUS __INCBIN_STATUS)
208
+ list(GET __INCBIN_STATUS 0 __INCBIN_CODE)
209
+ list(GET __INCBIN_STATUS 1 __INCBIN_MSG)
210
+ if(NOT __INCBIN_CODE EQUAL 0)
211
+ file(REMOVE "${INCBIN_HEADER}")
212
+ message(FATAL_ERROR "incbin: failed to download incbin.h: ${__INCBIN_MSG}")
213
+ endif()
214
+ message(STATUS "incbin: SHA256 verified (${INCBIN_SHA256})")
215
+ endif()
183
216
 
184
217
  def_ext_prj_g(PATCHELF "65e14792061c298f1d2bc44becd48a10cbf0bc81")
185
218
 
@@ -192,10 +225,17 @@ message("Configuration summary:")
192
225
  message(STATUS "ruby: v${RUBY_VER} at ${RUBY_SOURCE_DIR}")
193
226
 
194
227
  if(DWARFS_PRELOAD)
195
- message(STATUS "dwarfs with tebako wrapper: deploying v${LIBDWARFS_WR_VER} to ${LIBDWARFS_WR_SOURCE_DIR}")
228
+ message(STATUS "libtfs: v${LIBTFS_VERSION} prebuilt package (${LIBTFS_PLATFORM}) at ${LIBTFS_LIB_DIR}")
196
229
  else(DWARFS_PRELOAD)
197
- message(STATUS "dwarfs with tebako wrapper: @${DWARFS_WR_TAG} at ${DWARFS_WR_SOURCE_DIR}")
230
+ message(STATUS "libtfs: source build @${DWARFS_WR_TAG} at ${DWARFS_WR_SOURCE_DIR}")
198
231
  endif(DWARFS_PRELOAD)
232
+ message(STATUS "libtfs headers: ${LIBTFS_INCLUDE_DIR}")
233
+ message(STATUS "mkdwarfs: ${LIBTFS_MKDWARFS}")
234
+ if(LIBTFS_VCPKG_TRIPLET_DIR)
235
+ message(STATUS "libtfs transitive dependencies (vcpkg): ${LIBTFS_VCPKG_TRIPLET_DIR}")
236
+ else()
237
+ message(STATUS "libtfs transitive dependencies (vcpkg): ${LIBTFS_VCPKG_INSTALLED_DIR}/<triplet> (resolved during the libtfs build)")
238
+ endif()
199
239
 
200
240
  # ...................................................................
201
241
  # Filesystem locations
@@ -241,43 +281,30 @@ message(STATUS "Removing GLIBC_PRIVATE reference: ${WITH_PATCHELF}")
241
281
  message(STATUS "Not building Ruby extensions: ${RUBY_WITHOUT_EXT}")
242
282
 
243
283
  # ...................................................................
244
- # DwarFS with tebako wrapper
284
+ # DwarFS-based tebako filesystem library (libtfs)
245
285
 
246
286
  # ...................................................................
247
- # The libraries that are build by DwarFS project
248
- # libdwarfs libfolly libfsst libxxhash libmetadata_thrift libthrift_light
249
- # These forward-declarations and BUILD_BYPRODICTS are required to support 'Ninja'
287
+ # The libraries provided by libtfs (prebuilt package or source build):
288
+ # libtfs.a plus its pure-C dirent helper. These forward-declarations and
289
+ # BUILD_BYPRODUCTS are required to support 'Ninja'
250
290
  # Otherwise add_dependencies would be enough for 'Unix makefiles' generator
251
291
 
252
- set(__LIBDWARFS_WR "${DEPS_LIB_DIR}/libdwarfs-wr.a")
253
- set(__LIBDWARFS "${DEPS_LIB_DIR}/libdwarfs.a")
254
- set(__LIBFOLLY "${DEPS_LIB_DIR}/libfolly.a")
255
- set(__LIBFSST "${DEPS_LIB_DIR}/libfsst.a")
256
- set(__LIBT_METADATA "${DEPS_LIB_DIR}/libmetadata_thrift.a")
257
- set(__LIBT_LIGHT "${DEPS_LIB_DIR}/libthrift_light.a")
258
- set(__LIBXXHASH "${DEPS_LIB_DIR}/libxxhash.a")
259
- set(__LIBZSTD "${DEPS_LIB_DIR}/libzstd.a")
260
- set(__LIBARCHIVE "${DEPS_LIB_DIR}/libarchive.a")
292
+ set(__LIBTFS "${DEPS_LIB_DIR}/libtfs.a")
293
+ set(__LIBTFS_HELPER "${DEPS_LIB_DIR}/libtebako_dirent_helper_c.a")
261
294
 
262
295
  if(DWARFS_PRELOAD)
263
- ExternalProject_Add(${LIBDWARFS_WR_PRJ}
264
- PREFIX ${DEPS}
265
- URL https://github.com/tamatebako/libdwarfs/releases/download/v${LIBDWARFS_WR_VER}/libdwarfs-wr-${LIBDWARFS_WR_VER_M}-mingw-ucrt64.7z
266
- URL_HASH SHA256=${LIBDWARFS_WR_HASH}
267
- DOWNLOAD_NO_PROGRESS true
268
- SOURCE_DIR ${LIBDWARFS_WR_SOURCE_DIR}
269
- UPDATE_COMMAND ""
270
- CONFIGURE_COMMAND ""
271
- BUILD_COMMAND ""
272
- INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS}
273
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDWARFS_WR_SOURCE_DIR} ${DEPS}
274
- TEST_COMMAND ""
296
+ # Everything for the prebuilt path (download, SHA256 verification,
297
+ # deployment to ${DEPS}, vcpkg transitive dependencies) was done at
298
+ # configure time by cmake/tebako-libtfs.cmake; the target only keeps the
299
+ # dependency graph (ruby, setup) intact.
300
+ add_custom_target(${DWARFS_WR_PRJ}
301
+ COMMAND ${CMAKE_COMMAND} -E echo "libtfs v${LIBTFS_VERSION} prebuilt package [${LIBTFS_PLATFORM}] deployed to ${DEPS}"
275
302
  )
276
303
  else(DWARFS_PRELOAD)
277
304
  ExternalProject_Add(${DWARFS_WR_PRJ}
278
305
  GIT_SHALLOW true
279
306
  PREFIX ${DEPS}
280
- GIT_REPOSITORY https://github.com/tamatebako/libdwarfs.git
307
+ GIT_REPOSITORY https://github.com/tamatebako/libtfs.git
281
308
  GIT_TAG ${DWARFS_WR_TAG}
282
309
  SOURCE_DIR ${DWARFS_WR_SOURCE_DIR}
283
310
  BINARY_DIR ${DWARFS_WR_BINARY_DIR}
@@ -288,13 +315,20 @@ else(DWARFS_PRELOAD)
288
315
  -DWITH_TESTS:BOOL=OFF
289
316
  -DWITH_ASAN:BOOL=OFF
290
317
  -DWITH_COVERAGE:BOOL=OFF
291
- -DTEBAKO_BUILD_SCOPE=MKD
318
+ -DWITH_LEGACY_TEBAKO_API:BOOL=ON
319
+ # SquashFS adapter stays off in tebako builds (LGPL; tebako
320
+ # packages use the dwarfs/zip backends only)
321
+ -DWITH_SQUASHFS:BOOL=OFF
322
+ -DMKDWARFS=${DEPS_BIN_DIR}/mkdwarfs
323
+ -DTEBAKO_BUILD_SCOPE=LIB
292
324
  -DOPENSSL_VERSION=${OPENSSL_VER}
293
325
  -DRB_W32=${RB_W32}
326
+ -DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake
327
+ -DVCPKG_INSTALLED_DIR=${LIBTFS_VCPKG_INSTALLED_DIR}
328
+ ${LIBTFS_VCPKG_EP_TRIPLET_ARG}
294
329
  -GNinja
295
- BUILD_BYPRODUCTS ${__LIBDWARFS_WR}
296
- ${__LIBDWARFS} ${__LIBFSST} ${__LIBFOLLY} ${__LIBT_METADATA}
297
- ${__LIBT_LIGHT} ${__LIBXXHASH} ${__LIBZSTD} ${__LIBARCHIVE}
330
+ BUILD_BYPRODUCTS ${__LIBTFS}
331
+ ${__LIBTFS_HELPER}
298
332
  )
299
333
  endif(DWARFS_PRELOAD)
300
334
 
@@ -319,7 +353,21 @@ endif(IS_GNU)
319
353
  # Ruby
320
354
 
321
355
  set(RUBY_L_FLAGS "-L${DEPS_LIB_DIR} -L${CMAKE_CURRENT_BINARY_DIR}")
356
+ if(LIBTFS_VCPKG_TRIPLET_DIR)
357
+ # Transitive static deps of libtfs (dwarfs reader set, flatbuffers, zip,
358
+ # codecs) live in the vcpkg install tree; referenced as -l:lib<name>.a in
359
+ # the patched ruby MAINLIBS (lib/tebako/packager/patch_libraries.rb)
360
+ string(CONCAT RUBY_L_FLAGS ${RUBY_L_FLAGS} " -L${LIBTFS_VCPKG_TRIPLET_DIR}/lib")
361
+ endif(LIBTFS_VCPKG_TRIPLET_DIR)
322
362
  set(RUBY_C_FLAGS "-fPIC -I${DEPS_INCLUDE_DIR} -I${CMAKE_CURRENT_SOURCE_DIR}/include -Wno-incompatible-pointer-types")
363
+ if(LIBTFS_VCPKG_TRIPLET_DIR)
364
+ # The transitive deps' headers (deployed from the libtfs-deps package or
365
+ # installed by vcpkg) live in the triplet include dir. Baked into rbconfig
366
+ # via the ruby build, this -I lets mkmf-driven gem native extensions
367
+ # (e.g. the brotli gem) resolve headers like <brotli/encode.h> when the
368
+ # packaged build runs gem install.
369
+ string(CONCAT RUBY_C_FLAGS ${RUBY_C_FLAGS} " -I${LIBTFS_VCPKG_TRIPLET_DIR}/include")
370
+ endif(LIBTFS_VCPKG_TRIPLET_DIR)
323
371
 
324
372
  if(${RUBY_VER} VERSION_LESS "3.2.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0" AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
325
373
  string(CONCAT RUBY_C_FLAGS ${RUBY_C_FLAGS} " -std=gnu17")