Android OSをMacでビルドしようと思ったらglob: fcntl: too many open filesって言われた話
そんなにたいした話じゃないです。
MacでAndroid OSをビルドしようと思ったら途中でglob: fcntl: too many open files
って言われて、ビルドが止まってしまったので解消法のメモです。
同時に開けるファイル数の制限
なんでもMac OSだと同時に開けるファイルディスクリプタの数の制限が初期値で256
個とかなり少なめに設定されており、Android OSのビルドの際にそれ以上のファイルを同時に開くようで制限に引っかかって途中で終了してしまいます。
なので、同時に開くことのできるファイルディスクリプタの数を増やしてあげます。
ulimit -n
で現在の制限数を確認できます。
引数を与えてあげると制限の数を変更できます。
ulimit -n 8192
ビルド時の並列実行数にもよると思いますが、執筆時点では、Android OSをビルドする際は8192に設定しておけば大丈夫でした。
余談
ちなみに、MacでAndroid OSをビルドしようとした時に、もう一箇所はまったところがありました。
ファイルシステムが大文字小文字を区別しないフォーマットになっているとビルドできないというものです。
APFSのデフォルトの設定だと大文字小文字を厳格に区別しないらしく
************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************
Case-insensitive filesystems not supported
というような怒られ方をしました。
ディスクユーティリティから新しく大文字小文字を区別するようなボリュームを追加して事なきを得ました。
ちょっと型落ちしたMacでビルドしてたら11時間もかかりました…