Gentoo Linux や Arch Linux で、WRFをビルドしようとすると、2つ問題が発生します
【現象】
1≫ ./configure が失敗します
./configure の中で
type ifort 2>/dev/null | awk '{print $NF}' | sed -e 's/(//g;s/)//g'
からコンパイラのフルパスを取得するところがあるのですが
type ifort 2>/dev/null
のところは、localeが日本語だと
ifort は /opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/ifort です
となります。続く処理で、最後のフレーズから()などを取り除いて取得するので
です
となります。なお、localeが英語の場合
type ifort 2>/dev/null
のところは
ifort is /opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/ifort
となるため、正常に動きます
2≫ ./compile em_real >& compile.log が失敗します
ログを見ると、time コマンドがときどき失敗しています
おそらく、mpif90のプロセス終了時に、出力ファイルの
書き出しが完了していないことがあるためと思われます
なぜ time が失敗するとビルドが失敗するのかはわかりませんが
【対策】
A≫ 個別対応
1≫ localeを英語にする
2≫ WRFのコンパイル設定、configure.wrfで
FC = time $(DM_FC)
のところを
FC = $(DM_FC)
と修正する。time はコンパイル時間をログ出力するためのもので
無くても問題ありません
B≫ スクリプトシェルを dash に交換
gentoo でも archlinux でも、dash パッケージがあるので追加インストールし
rm /bin/sh
ln -s /bin/dash /bin/sh
(gentoo)
ln -s /usr/bin/dash /bin/sh
(archlinux)
2021年5月現在、dash では、localeが日本語でも、typeの戻り値が英語で
なぜか2≫の問題も発生しません
Ubuntuでは、ver.6から、ログインシェルはbashのまま、スクリプトシェルはdashです
【確認したバージョン】
gentoo 5.10.27
arch linux 5.12.3
WRF 4.3