CERN ROOT のmacOS 10.15 catalinaへのインストールでのトラブル

# 概要: macOS catalinaにCERN のROOTをインストールする
CERNの開発しているROOTという高エネルギー物理学でそこそこよく使われるデータ解析ツールがあります。ROOTをmacOS catalinaにソースからbuildしてインストールしようとしたらうまくできなかったので、記事にしておきます。
もうすぐ新学期で各地の研究室が新しいmacを導入する頃ですが、macOS catalinaでCERNのROOTをインストールする際にはご注意ください。

#トラブル
ソースコードをダウンロードしてcmakeでbuildしている際に、76%ぐらいのところで

```ld: cannot link directly with dylib/framework, your binary is not an allowed client of /usr/lib/libcrypto.dylib for architecture x86_64
```

のエラーが出ました。
# 結論: 
https://gist.github.com/llbbl/c54f44d028d014514d5d837f64e60bac
に書かれている方法で/usr/local/libに必要なファイルをインストールすることで回避できるようです。(Homebrewを使っている場合)

手順としては
https://gist.github.com/llbbl/c54f44d028d014514d5d837f64e60bac
の内容のshell scriptを作り、実行します。
このshell scriptはHomebrewをアップデートしてopensslをいれ、opensslのファイルを/usr/local/libにコピーしてリンクを貼るというものです。ちなみに、私の場合、
cd /usr/local/Cellar/openssl/1.0.2t/lib
の部分の1.0.2t/を1.0.2j/に書き換える必要がありました。
そして、
build用のディレクトリの中身を一旦全て消して、全く初めから再度
root-6.20.00/README/INSTALLにある説明通り
```
$mkdir (build dir)
$cd (build dir)
$cmake ../root-6.20.00/
$cmake --build . -j 2
```
を実行するとうまくいきました。

#関連のコメント
私はブラウザからソースファイルをダウンロードして解凍してコンパイルしました。
ただ、環境の準備が面倒とかエラーとかコンパイルが面倒とかの理由で、コンパイル済みのバイナリファイルをダウンロードする際にはmacOS 10.15 catalinaでは注意が必要です。cernのダウンロードサイトには、

```For macOS 10.15, please download the binaries with curl in a terminal, until we have set up signing of the package. ROOT downloaded with a browser will be blocked by macOS and cannot be run.```

と書いてあります。バイナリファイルをダウンロードするときには、terminalを開いてcurlコマンドを使いましょう。

#以下詳細:
もし興味があれば見てください。
### 私の環境
先に私の環境についてまとめておきます。
OS: macOS 10.15.3 catalina
必要なソフトについて:
Xcodeなどの必要なソフトはApp storeからインストール。(xcode 11.3.1)
ちなみに、xcode-select --installを打つと何故かuse "Software Update" to install updatesと出てきました。仕様変わった???
パッケージ管理はHomebrewでやってます。ROOTのインストールに必要なcmakeもbrewで入れました。
cmake: version 3.16.4
インストールするROOT: ROOT 6.20.00 

ただし、基本的にはTime machineで過去のMacのデータをそのまま引き継いだので、クリーンインストールとは少し違うかもしれません。(私がmac book 初級者なのでそこらへんはわからない。)
###CERN ROOTのmacOS 10.15 catalinaへのインストール時のトラブル
さて、本題です。
Mac bookでCERNのROOTを使う人が多い研究室なら周知の事実かもしれませんが、macOS 10.15でROOTを使おうとするとトラブルが多いようです。
私はbuildするところで失敗しました。

root-6.20.00/README/INSTALLにある説明通り

```$cmake ../root-6.20.00/
$cmake --build . -j 2
```

のように実行したのですが、以下のエラーが76%ぐらいのところで出ました。

```ld: cannot link directly with dylib/framework, your binary is not an allowed client of /usr/lib/libcrypto.dylib for architecture x86_64
```

###常套手段　まずROOTフォーラムなどで調べる
基本に忠実に対処しましょう。トラブルが起きたらまず詳しい人に聞くか、英語で調べる。残念ながら、研究室の中にはトラブルに出会った人がいないので、webで調べました。

いくつか類似のトラブルが出てきました。
https://root-forum.cern.ch/t/problems-after-moving-to-catalina/36710
https://stackoverflow.com/questions/58446253/xcode-11-ld-error-your-binary-is-not-an-allowed-client-of-usr-lib-libcrypto-dy
https://stackoverflow.com/questions/58272830/python-crashing-on-macos-10-15-beta-19a582a-with-usr-lib-libcrypto-dylib
どうやらmacOS 10.15 catalinaに由来するトラブルのようです。
###とりあえず、試してみた
A. /usr/local/lib にlibcrypto.dylibを入れて対処 => うまくいかなかった。
https://gist.github.com/llbbl/c54f44d028d014514d5d837f64e60bac
の方法を試してみました。ちなみに、私の場合、brewでいれたopensslのディレクトリは/usr/local/Cellar/openssl/1.0.2t/libではなく、openssl/1.0.2j/libでした。
これを行なってからcmake --buildを再度実行しましたがうまくいきませんでした。
B. DYLD_LIBRARY_PATHで/usr/local/opt/opensslにパスを通す => うまくいかなかった。
https://stackoverflow.com/questions/58272830/python-crashing-on-macos-10-15-beta-19a582a-with-usr-lib-libcrypto-dylib
の方法を試してみました。
同様にパスを通してからcmake --buildを再度実行しましたがうまくいきませんでした。

ここまで、AとBでは時間短縮のために以前のcmake --buildで作られたファイルを残してcmake --buildしていたのですが、念のためいったんbuild用のディレクトリのファイルを全て消して再度
$cmake ../root-6.20.00/
$cmake --build . -j 2
を実行しました。
あ、うまくいった。
私が全部消してcmake ../root-6.20.00/から開始するのをサボったせいでうまくいっていなかっただけでした。CMakeCacheが残っていたから??初級者なのでよくわからない。
でも、これでは何が改善の決定打になったのかがわからないので、BのDYLD_LIBRARY_PATHの設定を消して、cmake ../root-6.20.00/からもう一度やってみました。その結果、うまくbuildできました。つまり、Aの解決策が決定打になったようです。

つまり、この問題に出会った際は、
Aの方法で/usr/local/libを整えた後、一度コンパイル途中のファイルを全て消して、
$mkdir (build dir)
$cd (build dir)
$cmake ../root-6.20.00/
$cmake --build . 
とすると良いようです。

###結論
この問題の解決策としては、
https://gist.github.com/llbbl/c54f44d028d014514d5d837f64e60bac
のページに書かれている方法が最適なようです。