brew: Error: maximum tree depth (10) exceeded calculating gcc@5 dependency tree!

brew config output

HOMEBREW_VERSION: 3.5.10-49-gb2ddb34
ORIGIN: https://github.com/Homebrew/brew
HEAD: b2ddb341a0489834dbbfcb57544d87c4089926c1
Last commit: 5 hours ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: df7d60056bc310daabb1b45757aaf63fd0eaaca8
Core tap last commit: 4 hours ago
Core tap branch: master
HOMEBREW_PREFIX: /home/linuxbrew/.linuxbrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_CURLRC: set
HOMEBREW_CURL_VERBOSE: set
HOMEBREW_EDITOR: vi
HOMEBREW_FORCE_BREWED_CA_CERTIFICATES: set
HOMEBREW_FORCE_BREWED_CURL: set
HOMEBREW_FORCE_BREWED_GIT: set
HOMEBREW_FORCE_VENDOR_RUBY: set
HOMEBREW_MAKE_JOBS: 18
HOMEBREW_NO_ANALYTICS: set
HOMEBREW_NO_ENV_HINTS: set
Homebrew Ruby: 2.6.8 => /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.8_1/bin/ruby
CPU: 18-core 64-bit haswell
Clang: N/A
Git: 2.37.2 => /home/linuxbrew/.linuxbrew/opt/git/bin/git
Curl: 7.84.0 => /home/linuxbrew/.linuxbrew/opt/curl/bin/curl
Kernel: Linux 3.10.0-862.6.3.el7.x86_64 x86_64 GNU/Linux
OS: Red Hat Enterprise Linux Server release 7.5 (Maipo)
Host glibc: 2.17
/usr/bin/gcc: 4.8.5
/usr/bin/ruby: N/A
Error: maximum tree depth (10) exceeded calculating gcc@5 dependency tree!

brew doctor output

Your system is ready to brew.

Verification

  • I ran brew update and am still able to reproduce my issue.
  • I have resolved all warnings from brew doctor and that did not fix my problem.

What were you trying to do (and why)?

brew install / deps / config fails with this exception. Error: maximum tree depth (10) exceeded calculating gcc@5 dependency tree!

What happened (include all command output)?

└─▪ brew deps --tree git --debug
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/git.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/glibc.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/linux-headers@5.15.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/rsync.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/lz4.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/shims/shared/git --version
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/openssl@1.1.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/popt.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/xxhash.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/zstd.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/zlib.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ca-certificates.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/cmake.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/xz.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/glibc@2.13.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ncurses.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/linux-headers@4.4.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/pkg-config.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gpatch.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gcc@5.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gmp.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/isl@0.18.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/libmpc.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/mpfr.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/binutils.rb
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/m4.rb
Error: maximum tree depth (10) exceeded calculating gcc@5 dependency tree!
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/extend/os/linux/dependency_collector.rb:63:in `block in init_global_dep_tree_if_needed!'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/extend/os/linux/dependency_collector.rb:51:in `each'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/extend/os/linux/dependency_collector.rb:51:in `init_global_dep_tree_if_needed!'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dependency_collector.rb:32:in `initialize'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/software_spec.rb:41:in `new'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/software_spec.rb:41:in `initialize'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formula.rb:2935:in `new'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formula.rb:2935:in `stable'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formula.rb:2838:in `url'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/git.rb:4:in `<class:Git>'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/git.rb:1:in `block in load_formula'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:90:in `module_eval'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:90:in `block in load_formula'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:102:in `load_formula'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:122:in `load_formula_from_path'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:320:in `load_file'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:310:in `klass'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:305:in `get_formula'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/formulary.rb:551:in `factory'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/cli/parser.rb:626:in `block in formulae'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/cli/parser.rb:622:in `map'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/cli/parser.rb:622:in `formulae'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/cli/parser.rb:307:in `parse'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/cmd/deps.rb:80:in `deps'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'

What did you expect to happen?

Not to fail with an exception.

Looking at the code in Library/Homebrew/extend/os/linux/dependency_collector.rb maximum_tree_depth = 10 is described as an “arbitrary” number… I bumped it to 15 and so far everything is working.

    global_deps.each do |global_dep_name|
      # This is an arbitrary number picked based on testing the current tree
      # depth and just to ensure that this doesn't loop indefinitely if we
      # introduce a circular dependency by mistake.
      maximum_tree_depth = 10

Step-by-step reproduction instructions (by running brew commands)

I reset my homebrew install on RHEL release 7.5 (Maipo) machine completely.
And noticed this error trying to install git

brew install git 

failed with: Error: maximum tree depth (10) exceeded calculating gcc@5 dependency tree!

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 16 (7 by maintainers)

Commits related to this issue

Most upvoted comments

There was a circular dependency gettext onto itself via Python, fixed via: https://github.com/Homebrew/homebrew-core/pull/109189 and https://github.com/Homebrew/homebrew-core/pull/109173.

gettext should also have not been in the GCC dependency tree so https://github.com/Homebrew/homebrew-core/pull/109186 would have also covered it as well.

We’ve since then added measures to prevent it happening again with improved CI coverage: https://github.com/Homebrew/brew/pull/13777 and https://github.com/Homebrew/homebrew-test-bot/pull/824.

@Bo98 So what’s the fix: brew install gcc or remove the glibc dependency from gcc@5?

brew update or any operation which triggers an update of Homebrew. It was fixed on our side.

maximum_tree_depth was recently bumped from 10 to 20 in https://github.com/Homebrew/brew/pull/13761 to fix errors affecting me and others. (11 was actually enough to fix it for me.)

But it’s now happening again in a fresh install:

 ~ ★ brew deps gcc@5
Error: maximum tree depth (20) exceeded calculating gcc@5 dependency tree!
 ~ ★ brew deps z [z has no dependencies]
Error: maximum tree depth (20) exceeded calculating gcc@5 dependency tree!
 ~ ★ brew info z
Error: maximum tree depth (20) exceeded calculating gcc@5 dependency tree!

Editing maximum_tree_depth to 40 didn’t fix it. 100 was too slow to wait for. Full info & examples in gist.

I’m not sure why gcc@5 is even involved? It shouldn’t be needed for a lot of the things I’ve tried. It’s certainly not needed for e.g. brew info z.

However, after a successful brew install gcc (i.e. gcc 12), the error goes away:

ad-user-ads-11 ~ ★ brew install gcc
...
==> Installing gcc
==> Pouring gcc--12.2.0.x86_64_linux.bottle.1.tar.gz
==> Creating the GCC specs file: /data/shared/lusers/jacktose/.linuxbrew/Cellar/gcc/12.2.0/bin/../lib/gcc/current/gcc/x86_64-pc-linux-gnu/12/specs
🍺  /data/shared/lusers/jacktose/.linuxbrew/Cellar/gcc/12.2.0: 1,631 files, 306.3MB
...
ad-user-ads-11 ~ ★ brew list
==> Formulae
binutils  gcc  gmp  isl  isl@0.18  libmpc  lz4  mpfr  xz  zlib  zstd
ad-user-ads-11 ~ ★ brew deps gcc@5
binutils
gmp
isl@0.18
libmpc
mpfr
zlib

An issue doesn’t seem that useful. A Linux build was attempted at https://github.com/Homebrew/homebrew-core/pull/109124, but no bottles were published because the test failed. See https://github.com/Homebrew/homebrew-core/runs/8061347335?check_suite_focus=true#step:7:38.

It would be better to investigate why the test is failing and fix that. You could try opening an issue for it, but experience shows that those usually just go stale and get closed.