「そうだ、プログラミング言語Xで書かれたプロジェクトをビルドするサポートスクリプトをXで書けば依存関係が増えないぞ!」
「わかる」
「XのコンパイラをビルドするためのサポートスクリプトもXで書くぞ!」
「ん?」
「ちなみにXのコンパイラ自身もXで書かれているぞ!」
「ブートストラップ問題!」
なお、「GradleをビルドするにはGradleとKotlinが必要です。一方、KotlinをビルドするにはGradleとKotlinが必要です」という頭を抱えたくなる実例がThe 5th Bootstrappable Builds Summitで報告されている。
https://guix.gnu.org/en/blog/2019/reproducible-builds-summit-5th-edition/
「Xの言語処理系がXで書かれている」問題は「Xの言語処理系を解釈するのに十分なXのサブセットをX以外の言語で書く」といういくらか手間がかかる作業で解決できるのですが、ふたつの言語がお互いと自分自身に依存するとそれが更に面倒くさくなる