スパコンでconda

こういうスパコンを使っている。Redhatを使っているらしい。ソフトウエアが古い。インターネットは外に繋がっている。そこにcondaをセットアップし、python C-APIを使っているコードのビルド&インストールをした。思ったよりトラブルが少なかったけど、もちろんなかったわけではない。その忘備録。

unset _CONDA_PYTHON_SYSCONFIGDATA_NAME

setuptoolsがCCを見てくれるので.oはcondaのgccコンパイルするが、リンクにはシステムのgccを使うため、そこでコケてしまう。LDSHAREDという環境変数がリンクに使われるらしく、gccを置き換えるだけではフラグがないのでこける。フラグはbuildログ(python setup.py build)のシステムのgccでコケたところからコピーで取ってきて、コンパイラ(つまり$CC)と共に全部LDSHAREDに突っ込むことでビルドが無事通った。もちろん一般的な解ではない。

export LDSHARED="/hoge/togo/miniconda/envs/dev/bin/x86_64-conda_cos6-linux-gnu-cc -pthread -shared -Wl,-rpath,/hoge/togo/miniconda/envs/dev/lib -L/hoge/togo/miniconda/envs/dev/lib -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -Wl,-rpath,/hoge/togo/miniconda/envs/dev/lib -L/hoge/togo/miniconda/envs/dev/lib -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -DNDEBUG -D_FORTIFY_SOURCE=2 -O2"