C++ Linux

ROOT v6.16 のビルド

投稿日:

前回 に引き続き。
TFile の LZ4 サポートを求めてビルドを試みるも、
ビルドに際しての変更があったので追記する形で更新。

 

v6.16系の導入

冒頭で述べたように、TFile の圧縮アルゴリズムとして、
高速可逆圧縮の LZ4 を v6.14 からサポートした。
オンラインでのデータ取得に際して、ROOT/TTree での出力を検討していて、
zlib では遅すぎるため LZ4 を試してみる。
他にも TTreeProcessorMT/RDataFrame など TTree の処理の並列化も面白そう。
 

TFile の LZ4 サポート

ただし、ROOT における LZ4 の実装には “corner cases” と呼ばれる、
稀に特定のデータに対して並外れて処理が遅くなる問題を抱えていて、
v6.14 で一度 LZ4 をデフォルトに据えるも、
この問題の発覚で v6.16 では再び従来の zlib がデフォルトに戻されている。

 

TTreeProcessorMT

この辺から。
あとで試してみる予定。

Google Adsense



ビルド

ビルド方法、オプションは基本的には前回を参照。
-Dtable=ON は obsolete なようなので削除。

前回 の v6.10 と同じ環境でのビルドにも関わらず、LZ4サポートを始めとして
ビルドされるライブラリのサポート状況がかなり様子が異なる。
その一つが clad。
そのためビルドに先んじて、以下の作業が必要。
 

openssl のビルド

 

curl のビルド

コンパイル前に configure の出力で TLS-SRP support: enabled を確認しておく。
 

git の socks proxy 設定

特定のレポジトリだけに適用するなら
git config http(s).proxy socks5://localhost:XXXX みたいな感じ。

git の全接続に適用するなら
git config --global ... とするか、~/.gitconfig を編集する。

ネットワーク制限下での socks proxy については、
前回 の "cmake の file(DOWNLOAD ...)" の項を参照。

Google Adsense



openssl/curl/git の解説

ビルド時に clad を "git clone https://github.com/~" で取りに行こうとする。
git の接続設定は上記の通り。
これで通信は通るが、接続は確立されない。
どうやら github がセキュリティの甘い接続をハネているようだ。
git はダウンロード時に内部で curl/libcurl を使っている。
システムの curl は、"curl -V" の Feature に TLS-SRP が入っていない。
--> curl のビルド
curl のビルド時に "TLS-SRP support: enabled" が入らない
--> openssl のビルド と --with-ssl の指定
openssl と curl/libcurl に path を通して、git がこちらを参照するようにする。
 

sqlite3 の対策

前述の通りシステムのライブラリが化石みたいに古いせいか、
sqlite3 周りの関数が変わっていてコンパイルが通らない。
cmake で -Dsqlite=OFF とするか、
[src]/tree/dataframe/src/RSqliteDS.cxx 内の
sqlite3_errstrsqlite3_close_v2 を適当に修正する。
 

Google Adsense

Google Adsense

-C++, Linux
-,

Copyright© HEPtech, 2024 All Rights Reserved.