#37 (close 済み) から分離。元の [P4+P8+P10] のうちの P8。
進捗 (2026-05-14 時点)
背景
現状の構成:
FetchContent に移行すれば:
cmake -S . -B build && cmake --build build だけで完結 → bootstrap*.sh を削除可能
バージョン宣言が Dockerfile / git submodule ではなく CMake で明示 され、再現性が上がる
CI の Build third-party (...) ステップが消える (FetchContent の内部 caching に置き換わる)
提案
cmake/ThirdParty.cmake 等にまとめる:
include (FetchContent )
FetchContent_Declare (mimalloc
GIT_REPOSITORY https://github.com/microsoft/mimalloc.git
GIT_TAG v2.3.2)
FetchContent_MakeAvailable (mimalloc)
add_library (ccbench::mimalloc ALIAS mimalloc-static )
FetchContent_Declare (googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.17.0)
FetchContent_MakeAvailable (googletest)
# masstree は明示 tag が無いので commit SHA で pin
FetchContent_Declare (masstree
GIT_REPOSITORY https://github.com/...
GIT_TAG b3c5d054b66b08374d7a6ff5a0faeaf28b041a38) # 現 submodule の commit
# masstree は CMake project ではないので Populate のみして手動で add_library
注意点 (重要)
ccbench は性能比較のための研究ベンチマークなので、以下を強く確認すべき:
mimalloc の性能特性は allocator の挙動に直結する 。現 submodule の v2.3.2 と FetchContent で取得するバージョンで「全プロトコルの YCSB / TPC-C / BoMB 数値が変わらない」ことを実測で確認 (= 性能 regression がないこと)。v2.1.7 のような古い tag に下げるなら更に慎重に。
masstree は upstream の Kohler の repo に明示的な version tag がない (master 追従の submodule)。FetchContent でも commit SHA で pin する形で固定し、勝手に master 追従しないようにする。
third_party/spdlog は third_party: 未使用の spdlog submodule を除去 (#64 の一部) #71 で調査済み・除去済み。調査の結果、参照元は include/logger.h 1 ファイルのみで、その logger.h 自体がどこからも #include されていない dead code だった (submodule もそもそも init されていなかった)。CMake / CI / Dockerfile / build_tools からの参照は 0 件。third_party: 未使用の spdlog submodule を除去 (#64 の一部) #71 で .gitmodules の spdlog セクション削除 + gitlink 削除を実施済みのため、FetchContent 移行対象には含めない 。
bootstrap_tbb.sh は third_party/tbb を参照しているが、tbb は submodule に登録されていない (CLAUDE.md の言及あり)。FetchContent 移行のついでに、tbb 関連の dead な bootstrap script も削除候補。
To-do
完了条件
cmake -B build && cmake --build build がスクリプトなしで成功する
bootstrap*.sh 系が削除されている
CI で Build third-party (...) 系ステップが消えている
全プロトコルのビルドが通る
全プロトコルの YCSB/TPC-C/BoMB 数値が submodule 版と一致する (性能 regression なし)
優先度
高 (構造改善) だが工数大。性能 regression 検証 が地味に時間がかかる (x86_64 Linux 実機が必要)。devcontainer の QEMU では数値検証できない点に注意。
備考: #71 のスコープ外として残った follow-up
#71 (spdlog submodule 除去) は submodule の除去のみを行い、以下 2 点はスコープ外として残している。本 issue の論点 (FetchContent 移行) とは別なので、別 issue で整理するのが望ましい:
include/logger.h が dead code として残存している (どこからも #include されておらず削除候補)。
docs/architecture_{ja,en}.md の submodule 一覧記述に spdlog がまだ残っている (現状と不整合)。
Related
#37 (close 済み) から分離。元の
[P4+P8+P10]のうちの P8。進捗 (2026-05-14 時点)
背景
現状の構成:
third_party/{masstree,mimalloc,googletest}(spdlogは third_party: 未使用の spdlog submodule を除去 (#64 の一部) #71 で除去済み)build_tools/bootstrap{,_mimalloc,_googletest,_apt,_tbb}.shを手動実行 (./build_tools/bootstrap.sh等)build.ymlでBuild third-party (masstree/mimalloc/googletest)のステップを毎回走らせている (cache hit があれば skip)FetchContent に移行すれば:
cmake -S . -B build && cmake --build buildだけで完結 → bootstrap*.sh を削除可能Dockerfile/git submoduleではなく CMake で明示 され、再現性が上がるBuild third-party (...)ステップが消える (FetchContent の内部 caching に置き換わる)提案
cmake/ThirdParty.cmake等にまとめる:注意点 (重要)
ccbench は性能比較のための研究ベンチマークなので、以下を強く確認すべき:
v2.3.2と FetchContent で取得するバージョンで「全プロトコルの YCSB / TPC-C / BoMB 数値が変わらない」ことを実測で確認 (= 性能 regression がないこと)。v2.1.7のような古い tag に下げるなら更に慎重に。master追従の submodule)。FetchContent でも commit SHA で pin する形で固定し、勝手にmaster追従しないようにする。third_party/spdlogは third_party: 未使用の spdlog submodule を除去 (#64 の一部) #71 で調査済み・除去済み。調査の結果、参照元はinclude/logger.h1 ファイルのみで、そのlogger.h自体がどこからも#includeされていない dead code だった (submodule もそもそも init されていなかった)。CMake / CI / Dockerfile / build_tools からの参照は 0 件。third_party: 未使用の spdlog submodule を除去 (#64 の一部) #71 で.gitmodulesの spdlog セクション削除 + gitlink 削除を実施済みのため、FetchContent 移行対象には含めない。bootstrap_tbb.shはthird_party/tbbを参照しているが、tbb は submodule に登録されていない (CLAUDE.md の言及あり)。FetchContent 移行のついでに、tbb 関連の dead な bootstrap script も削除候補。To-do
spdlogの利用箇所を確認 → 未使用なら submodule からも外す (third_party: 未使用の spdlog submodule を除去 (#64 の一部) #71 で完了)cmake/ThirdParty.cmake等にFetchContent_Declareをまとめるbootstrap_mimalloc.sh/bootstrap_googletest.sh/bootstrap.sh(masstree 用) /bootstrap_tbb.shを削除または非推奨化build_tools/ubuntu.depsから関連 apt deps を削除可能か確認.github/workflows/build.ymlからBuild third-party (...)系ステップを削除 (FetchContent の内部 cache に置き換わる).github/workflows/devcontainer-image.ymlで third_party をビルド済みで image に焼く部分も整理 (現状は触っていないかも)docs/build.mdをcmake -B buildだけのフローに更新.devcontainer/Dockerfileの bootstrap 関連の言及があれば削除 (今はおそらく無いが念のため)完了条件
cmake -B build && cmake --build buildがスクリプトなしで成功するbootstrap*.sh系が削除されているBuild third-party (...)系ステップが消えている優先度
高 (構造改善) だが工数大。性能 regression 検証 が地味に時間がかかる (x86_64 Linux 実機が必要)。devcontainer の QEMU では数値検証できない点に注意。
備考: #71 のスコープ外として残った follow-up
#71 (spdlog submodule 除去) は submodule の除去のみを行い、以下 2 点はスコープ外として残している。本 issue の論点 (FetchContent 移行) とは別なので、別 issue で整理するのが望ましい:
include/logger.hが dead code として残存している (どこからも#includeされておらず削除候補)。docs/architecture_{ja,en}.mdの submodule 一覧記述にspdlogがまだ残っている (現状と不整合)。Related