4

I notice Homebrew does a poor job of listing the actual list of dependencies of a package:

$ brew info ffmpeg
ffmpeg: stable 5.0.1 (bottled), HEAD
Play, record, convert, and stream audio and video
https://ffmpeg.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/ffmpeg.rb
License: GPL-2.0-or-later
==> Dependencies
Build: nasm ✘, pkg-config ✘
Required: aom ✘, dav1d ✘, fontconfig ✘, freetype ✘, frei0r ✘, gnutls ✘, lame ✘, libass ✘, libbluray ✘, librist ✘, libsoxr ✘, libvidstab ✘, libvmaf ✘, libvorbis ✘, libvpx ✘, opencore-amr ✘, openjpeg ✘, opus ✘, rav1e ✘, rubberband ✘, sdl2 ✘, snappy ✘, speex ✘, srt ✘, tesseract ✘, theora ✘, webp ✘, x264 ✘, x265 ✘, xvid ✘, xz ✔, zeromq ✘, zimg ✘

One would be excused if the expectation were that these are all the needed dependencies, but each dependency has dependecies that are not listed. One example:

$ brew info rav1e
rav1e: stable 0.5.1 (bottled), HEAD
Fastest and safest AV1 video encoder
https://github.com/xiph/rav1e
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/rav1e.rb
License: BSD-2-Clause
==> Dependencies
Build: cargo-c ✘, nasm ✘, rust ✘

Some of said sub dependencies can come as a nasty shock, either because they need compilation, because they take up a lot of disk space, or both (say, Rust).

Is there a way of having Homebrew list:

  1. The actual full list of dependencies and sub-dependencies
  2. How many of said packages will need compilation
  3. the disk space required

?

I believe these informations would be pretty useful, especially for people with older and slower (and hotter) CPUs, and less disk space. I vaguely remember one could force somehow just the installation of binaries, to avoid the compilation step (if at all possible), but knowing how much disk space one will actually need is also useful.

2
  • 1
    Homebrew will always install binaries (bottles) unless it can't, in which case it will either compile, or fail. Commented Apr 11, 2022 at 16:49
  • 1
    I‘ve removed the rant. As much as I understand your frustration, it doesn‘t help to make the question easier to understand. Feature requests for Homebrew can be raised on brew.sh
    – nohillside
    Commented Apr 12, 2022 at 7:33

1 Answer 1

3

According to man brew

brew deps --include-build ffmpeg

will show the full dependency tree, including build dependencies.

7
  • It does not, at least completely. ffmpeg does depend from rav1e, and rav1e depends on rust, and rust is not in the dependencies tree mentioned by brew deps ffmpeg. Rust is 'just' a build dependency of rav1e, but obviously if I remove it after build I would have to rebuild it again every damn time rav1eis updated. Commented Apr 11, 2022 at 18:52
  • Also, I fail to see if brew deps whatever returns more packages than brew info whatever, said extra packages are not in the info, since they are needed and will be installed if you do not have them already. Commented Apr 11, 2022 at 18:59
  • @user1256923 There are several options for additional dependencies listed in the man page, might be worth trying some of them.
    – nohillside
    Commented Apr 11, 2022 at 19:19
  • Also, if there is a prebuilt version of rav1e available, rust is not needed because no rebuild will take place.
    – nohillside
    Commented Apr 11, 2022 at 19:21
  • @user1256923 Did you actually try to run the command or read the man page? brew deps ffmpeg | wc -l returns 96 lines, brew deps --include-build ffmpeg | wc -l even 124, so unless proven otherwise I assume this is the full list. You can also run brew deps --tree ffmpeg to see a nicely formatted dependency tree.
    – nohillside
    Commented Apr 11, 2022 at 19:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .