Skip to content

Commit

Permalink
language/*: only check required deps in detected_*_shebang
Browse files Browse the repository at this point in the history
Otherwise, we rewrite this even when we have a e.g. build or test
dependency on NodeJS.

See context in:
Homebrew/homebrew-core#176257 (comment)
  • Loading branch information
MikeMcQuaid authored and ctaintor committed Sep 4, 2024
1 parent 8babc41 commit 6cf0125
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Library/Homebrew/language/node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def node_shebang_rewrite_info(node_path)

sig { params(formula: Formula).returns(Utils::Shebang::RewriteInfo) }
def detected_node_shebang(formula = T.cast(self, Formula))
node_deps = formula.deps.map(&:name).grep(/^node(@.+)?$/)
node_deps = formula.deps.select(&:required?).map(&:name).grep(/^node(@.+)?$/)
raise ShebangDetectionError.new("Node", "formula does not depend on Node") if node_deps.empty?
raise ShebangDetectionError.new("Node", "formula has multiple Node dependencies") if node_deps.length > 1

Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/language/perl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def perl_shebang_rewrite_info(perl_path)

sig { params(formula: Formula).returns(Utils::Shebang::RewriteInfo) }
def detected_perl_shebang(formula = T.cast(self, Formula))
perl_deps = formula.declared_deps.select { |dep| dep.name == "perl" }
perl_deps = formula.declared_deps.select { |dep| dep.required? && dep.name == "perl" }
raise ShebangDetectionError.new("Perl", "formula does not depend on Perl") if perl_deps.empty?

perl_path = if perl_deps.any? { |dep| !dep.uses_from_macos? || !dep.use_macos_install? }
Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/language/python.rb
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ def detected_python_shebang(formula = T.cast(self, Formula), use_python_from_pat
python_path = if use_python_from_path
"/usr/bin/env python3"
else
python_deps = formula.deps.map(&:name).grep(/^python(@.+)?$/)
python_deps = formula.deps.select(&:required?).map(&:name).grep(/^python(@.+)?$/)
raise ShebangDetectionError.new("Python", "formula does not depend on Python") if python_deps.empty?
if python_deps.length > 1
raise ShebangDetectionError.new("Python", "formula has multiple Python dependencies")
Expand Down

0 comments on commit 6cf0125

Please sign in to comment.