From 0aa42596543bc3663041b85ac53d89cc4f027e97 Mon Sep 17 00:00:00 2001 From: Seeker Date: Wed, 23 Dec 2020 15:43:07 -0800 Subject: [PATCH 1/3] formula: include versioned `*.so.*` libs for `shared_library("*")` --- Library/Homebrew/extend/os/linux/formula.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 From 509b977b507610163b9138f2f3f8cf89936e5f6a Mon Sep 17 00:00:00 2001 From: Seeker Date: Thu, 24 Dec 2020 08:18:32 -0800 Subject: [PATCH 2/3] formula: return "*.dylib" for `shared_library("*")` on macOS --- Library/Homebrew/formula.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 From 1d710047a5e4e4ab5e8855f6aa6a3394b386573d Mon Sep 17 00:00:00 2001 From: Seeker Date: Thu, 24 Dec 2020 08:48:37 -0800 Subject: [PATCH 3/3] formula: add more tests for `shared_library` --- Library/Homebrew/test/os/linux/formula_spec.rb | 6 ++++++ Library/Homebrew/test/os/mac/formula_spec.rb | 6 ++++++ 2 files changed, 12 insertions(+) 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