某スパコンの話です。RHELらしい。
※追加2022/3/27: CMakeにはOpenSSLなしでコンパイルするオプションがあるそうです1。つまりこの記事の内容はほとんど意味がない。まあ同じ罠を踏む人が出ないことを祈って記事は残しておきます……
CMake入ってないんだ、ふーん……
いつもの
cd $HOME/ulocal/src
git clone -b release https://github.com/kitware/cmake
cd cmake
./bootstrap --prefix=$HOME/ulocal/install/cmake
なんかエラー
(中略)
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
CMake Error at Utilities/cmcurl/CMakeLists.txt:505 (message):
Could not find OpenSSL. Install an OpenSSL development package or
configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.
oh...
OpenSSLをソースビルドで入れる
sudo権限あればapt
/yum
で一発なんですけどね。スパコンなので。苦しい。
OpenSSLはgithubから取れるらしいのでそれを入れます。
configure
のオプションはREADME読みつつ。
cd $HOME/ulocal/src
git clone -b OpenSSL_1_1_0-stable https://github.com/openssl/openssl
cd openssl
./Configure --prefix=$HOME/ulocal/install/openssl --openssldir=$HOME/ulocal/install/openssl '-Wl,-rpath,$(LIBRPATH)' linux-x86_64
make && make install
こんなもの入れたことすら明日には忘れそうなのでmodulefilesに突っ込んでおく
#%Module
set base <ホームディレクトリ>/ulocal/install/openssl
setenv OPENSSL_ROOT_DIR $base
prepend-path PATH $base/bin
prepend-path LIBRARY_PATH $base/lib
prepend-path LD_LIBRARY_PATH $base/lib
prepend-path LD_RUN_PATH $base/lib
prepend-path C_INCLUDE_PATH $base/include
prepend-path CPLUS_INCLUDE_PATH $base/include
prepend-path MAN_PATH $base/share/man
** 2021/4/12追記: MAN_PATH
は$base/share/man
ですね。。修正しました。
CMake的にはsetenv OPENSSL_ROOT_DIR
が重要らしい。
CMake再挑戦
前項のmoduleを読んだ上で再度。
module load $HOME/
cd $HOME/ulocal/src
cd cmake
./bootstrap --prefix=$HOME/ulocal/install/cmake
make && make install
これもmoduleに入れておきましょう
#%Module
#
# dependency
module load openssl/local
#
set base <ホームディレクトリ>/ulocal/install/cmake
setenv CMAKE_INSTALL_DIR $base
prepend-path PATH $base/bin
prepend-path LIBRARY_PATH $base/lib
prepend-path LD_LIBRARY_PATH $base/lib
prepend-path LD_RUN_PATH $base/lib
prepend-path C_INCLUDE_PATH $base/include
prepend-path CPLUS_INCLUDE_PATH $base/include
prepend-path MAN_PATH $base/share
最後に確認
$ module load cmake && cmake --version
cmake version 3.19.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
よかったですね。
(肝心のhorovodが入っていないので何もよくない……)
追記
spack使ったら一発でした。うーん……
(さらに追記) spack使うとログイン直後の.bash_profileが遅くなってストレスフルだったのでconfigureに戻りました。。。