Skip to content

Formula dependency incorrectly marked as installed_on_request upon upgrade/migration #18754

Description

@kidonng

brew doctor output

Your system is ready to brew.

Verification

  • My "brew doctor output" above says Your system is ready to brew. and am still able to reproduce my issue.
  • I ran brew update twice and am still able to reproduce my issue.
  • This issue's title and/or description do not reference a single formula e.g. brew install wget. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.

brew config output

HOMEBREW_VERSION: 4.4.5
ORIGIN: https://github.com/Homebrew/brew
HEAD: 254bf3fe9d8fa2e1b2fb55dbcf535b2d870180c4
Last commit: 23 hours ago
Core tap JSON: 12 Nov 09:38 UTC
Core cask tap JSON: 12 Nov 09:38 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_EDITOR: code
HOMEBREW_MAKE_JOBS: 8
Homebrew Ruby: 3.3.6 => /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.3.6/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 16.0.0 build 1600
Git: 2.47.0 => /opt/homebrew/bin/git
Curl: 8.7.1 => /usr/bin/curl
macOS: 15.1-arm64
CLT: 16.1.0.0.1.1729049160
Xcode: N/A
Rosetta 2: false

What were you trying to do (and why)?

pkg-config was installed as a dependency of rust on my machine. Homebrew/homebrew-core#194885 replaced pkg-config with pkgconf, and after upgrading and doing brew bundle dump, I noticed pkgconf now becomes part of the generated Brewfile, which it probably shouldn't:

$ chezmoi diff --reverse
diff --git a/.Brewfile b/.Brewfile
index ea055bf1f44199bf23b351bd130cc91929545b74..2cf5aaa3d33c8d6b55eed2bbf4447aa89ebad047 100644
--- a/.Brewfile
+++ b/.Brewfile
@@ -8,6 +8,7 @@ brew "fzf"
 brew "git"
 brew "mpv"
 brew "node"
+brew "pkgconf"
 brew "rust"

What happened (include all command output)?

After investigation it turns out pkgconf is somehow marked as installed_on_request after upgrading:

$ jq .installed_as_dependency /opt/homebrew/Cellar/pkgconf/2.3.0_1/INSTALL_RECEIPT.json
false
$ jq .installed_on_request /opt/homebrew/Cellar/pkgconf/2.3.0_1/INSTALL_RECEIPT.json
true

What did you expect to happen?

Compared to a normal dependency:

$ jq .installed_as_dependency /opt/homebrew/Cellar/brotli/1.1.0/INSTALL_RECEIPT.json
true

$ jq .installed_on_request /opt/homebrew/Cellar/brotli/1.1.0/INSTALL_RECEIPT.json
false

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

1. Make sure on a older Core tap JSON before `pkg-config` migration
2. Have `pkg-config` installed as a dependency (e.g. by `brew install rust`)
3. `brew upgrade` to upgrade `pkg-config` to `pkgconf`
4. `brew bundle dump`
5. See `pkgconf` is in the generated `Brewfile`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions