diff --git a/Library/Homebrew/extend/os/linux/formula.rb b/Library/Homebrew/extend/os/linux/formula.rb index ed5c4f38a2..c603694cc6 100644 --- a/Library/Homebrew/extend/os/linux/formula.rb +++ b/Library/Homebrew/extend/os/linux/formula.rb @@ -5,7 +5,12 @@ class Formula undef shared_library def shared_library(name, version = nil) - "#{name}.so#{"." unless version.nil?}#{version}" + suffix = if version == "*" || (name == "*" && version.blank?) + "{,.*}" + elsif version.present? + ".#{version}" + end + "#{name}.so#{suffix}" end class << self diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 83411ab5b9..edca5084ac 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1470,7 +1470,14 @@ class Formula end def shared_library(name, version = nil) - "#{name}.#{version}#{"." unless version.nil?}dylib" + return "*.dylib" if name == "*" && (version.blank? || version == "*") + + infix = if version == "*" + "{,.*}" + elsif version.present? + ".#{version}" + end + "#{name}#{infix}.dylib" end # an array of all core {Formula} names diff --git a/Library/Homebrew/test/os/linux/formula_spec.rb b/Library/Homebrew/test/os/linux/formula_spec.rb index 806e4a3f77..6a38602109 100644 --- a/Library/Homebrew/test/os/linux/formula_spec.rb +++ b/Library/Homebrew/test/os/linux/formula_spec.rb @@ -107,6 +107,12 @@ describe Formula do f = Testball.new expect(f.shared_library("foobar")).to eq("foobar.so") expect(f.shared_library("foobar", 2)).to eq("foobar.so.2") + expect(f.shared_library("foobar", nil)).to eq("foobar.so") + expect(f.shared_library("foobar", "*")).to eq("foobar.so{,.*}") + expect(f.shared_library("*")).to eq("*.so{,.*}") + expect(f.shared_library("*", 2)).to eq("*.so.2") + expect(f.shared_library("*", nil)).to eq("*.so{,.*}") + expect(f.shared_library("*", "*")).to eq("*.so{,.*}") end end end diff --git a/Library/Homebrew/test/os/mac/formula_spec.rb b/Library/Homebrew/test/os/mac/formula_spec.rb index b33878dc4d..f41812a072 100644 --- a/Library/Homebrew/test/os/mac/formula_spec.rb +++ b/Library/Homebrew/test/os/mac/formula_spec.rb @@ -112,6 +112,12 @@ describe Formula do f = Testball.new expect(f.shared_library("foobar")).to eq("foobar.dylib") expect(f.shared_library("foobar", 2)).to eq("foobar.2.dylib") + expect(f.shared_library("foobar", nil)).to eq("foobar.dylib") + expect(f.shared_library("foobar", "*")).to eq("foobar{,.*}.dylib") + expect(f.shared_library("*")).to eq("*.dylib") + expect(f.shared_library("*", 2)).to eq("*.2.dylib") + expect(f.shared_library("*", nil)).to eq("*.dylib") + expect(f.shared_library("*", "*")).to eq("*.dylib") end end end