Skip to content

Commit 01e4036

Browse files
authored
Merge pull request #21824 from Homebrew/avoid-keg-only-versioned-autolink
Avoid auto-linking keg-only versioned formulae
2 parents 6a3a990 + d7084ee commit 01e4036

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

Library/Homebrew/formula_installer.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1729,7 +1729,10 @@ def auto_link_versioned_keg_only?
17291729
return false unless formula.keg_only?
17301730
return false unless formula.keg_only_reason.versioned_formula?
17311731
return false if formula.any_version_installed?
1732-
return false if formula.link_overwrite_formulae.any?(&:any_version_installed?)
1732+
return false if formula.link_overwrite_formulae.any? do |related_formula|
1733+
related_formula.any_version_installed? ||
1734+
(related_formula.name == formula.unversioned_formula_name && related_formula.keg_only?)
1735+
end
17331736

17341737
true
17351738
end

Library/Homebrew/test/formula_installer_spec.rb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ def temporary_install(formula, **options)
135135
end
136136

137137
before do
138-
allow(keg_only_formula).to receive_messages(any_version_installed?: false, link_overwrite_formulae: [])
138+
allow(keg_only_formula).to receive_messages(any_version_installed?: false,
139+
link_overwrite_formulae: [])
139140
end
140141

141142
it "links by default when no sibling variants are installed" do
@@ -185,6 +186,18 @@ def temporary_install(formula, **options)
185186
expect(fi.link_keg).to be false
186187
end
187188

189+
it "does not link by default when the unversioned sibling is keg-only" do
190+
unversioned_formula = formula base_name do
191+
url "foo-1.0"
192+
keg_only "some reason"
193+
end
194+
allow(keg_only_formula).to receive(:link_overwrite_formulae).and_return([unversioned_formula])
195+
196+
fi = described_class.new(keg_only_formula)
197+
198+
expect(fi.link_keg).to be false
199+
end
200+
188201
it "does not link by default when the -full variant is installed" do
189202
full_variant = formula "#{base_name}-full" do
190203
url "foo-full-1.0"

0 commit comments

Comments
 (0)