Merge pull request #7702 from iMichka/resource
on_os blocks: resources, patches
This commit is contained in:
commit
a81e1d1fa8
9
Library/Homebrew/extend/os/linux/resource.rb
Normal file
9
Library/Homebrew/extend/os/linux/resource.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Resource
|
||||||
|
undef on_linux
|
||||||
|
|
||||||
|
def on_linux(&_block)
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
||||||
9
Library/Homebrew/extend/os/mac/resource.rb
Normal file
9
Library/Homebrew/extend/os/mac/resource.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Resource
|
||||||
|
undef on_macos
|
||||||
|
|
||||||
|
def on_macos(&_block)
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
||||||
7
Library/Homebrew/extend/os/resource.rb
Normal file
7
Library/Homebrew/extend/os/resource.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
if OS.mac?
|
||||||
|
require "extend/os/mac/resource"
|
||||||
|
elsif OS.linux?
|
||||||
|
require "extend/os/linux/resource"
|
||||||
|
end
|
||||||
@ -2474,13 +2474,13 @@ class Formula
|
|||||||
specs.each { |spec| spec.uses_from_macos(dep, bounds) }
|
specs.each { |spec| spec.uses_from_macos(dep, bounds) }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Block executed only executed on macOS. No-op on Linux.
|
# Block only executed on macOS. No-op on Linux.
|
||||||
# <pre>on_macos do
|
# <pre>on_macos do
|
||||||
# depends_on "mac_only_dep"
|
# depends_on "mac_only_dep"
|
||||||
# end</pre>
|
# end</pre>
|
||||||
def on_macos(&_block); end
|
def on_macos(&_block); end
|
||||||
|
|
||||||
# Block executed only executed on Linux. No-op on macOS.
|
# Block only executed on Linux. No-op on macOS.
|
||||||
# <pre>on_linux do
|
# <pre>on_linux do
|
||||||
# depends_on "linux_only_dep"
|
# depends_on "linux_only_dep"
|
||||||
# end</pre>
|
# end</pre>
|
||||||
|
|||||||
@ -178,6 +178,18 @@ class Resource
|
|||||||
patches << p
|
patches << p
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Block only executed on macOS. No-op on Linux.
|
||||||
|
# <pre>on_macos do
|
||||||
|
# url "mac_only_url"
|
||||||
|
# end</pre>
|
||||||
|
def on_macos(&_block); end
|
||||||
|
|
||||||
|
# Block only executed on Linux. No-op on macOS.
|
||||||
|
# <pre>on_linux do
|
||||||
|
# url "linux_only_url"
|
||||||
|
# end</pre>
|
||||||
|
def on_linux(&_block); end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def mktemp(prefix)
|
def mktemp(prefix)
|
||||||
@ -252,3 +264,5 @@ class ResourceStageContext
|
|||||||
"<#{self.class}: resource=#{resource} staging=#{staging}>"
|
"<#{self.class}: resource=#{resource} staging=#{staging}>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
require "extend/os/resource"
|
||||||
|
|||||||
@ -33,26 +33,6 @@ describe Formula do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#on_linux" do
|
|
||||||
it "defines an url on Linux only" do
|
|
||||||
f = formula do
|
|
||||||
homepage "https://brew.sh"
|
|
||||||
|
|
||||||
on_macos do
|
|
||||||
url "https://brew.sh/test-macos-0.1.tbz"
|
|
||||||
sha256 TEST_SHA256
|
|
||||||
end
|
|
||||||
|
|
||||||
on_linux do
|
|
||||||
url "https://brew.sh/test-linux-0.1.tbz"
|
|
||||||
sha256 TEST_SHA256
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(f.stable.url).to eq("https://brew.sh/test-linux-0.1.tbz")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "#on_linux" do
|
describe "#on_linux" do
|
||||||
it "adds a dependency on Linux only" do
|
it "adds a dependency on Linux only" do
|
||||||
f = formula do
|
f = formula do
|
||||||
@ -87,27 +67,38 @@ describe Formula do
|
|||||||
sha256 TEST_SHA256
|
sha256 TEST_SHA256
|
||||||
|
|
||||||
patch do
|
patch do
|
||||||
url "patch_both"
|
on_macos do
|
||||||
end
|
|
||||||
|
|
||||||
on_macos do
|
|
||||||
patch do
|
|
||||||
url "patch_macos"
|
url "patch_macos"
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
on_linux do
|
on_linux do
|
||||||
patch do
|
|
||||||
url "patch_linux"
|
url "patch_linux"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(f.patchlist.length).to eq(2)
|
expect(f.patchlist.length).to eq(1)
|
||||||
expect(f.patchlist.first.strip).to eq(:p1)
|
expect(f.patchlist.first.strip).to eq(:p1)
|
||||||
expect(f.patchlist.first.url).to eq("patch_both")
|
expect(f.patchlist.first.url).to eq("patch_linux")
|
||||||
expect(f.patchlist.second.strip).to eq(:p1)
|
end
|
||||||
expect(f.patchlist.second.url).to eq("patch_linux")
|
end
|
||||||
|
|
||||||
|
describe "#on_linux" do
|
||||||
|
it "uses on_linux within a resource block" do
|
||||||
|
f = formula do
|
||||||
|
homepage "https://brew.sh"
|
||||||
|
|
||||||
|
url "https://brew.sh/test-0.1.tbz"
|
||||||
|
sha256 TEST_SHA256
|
||||||
|
|
||||||
|
resource "test_resource" do
|
||||||
|
on_linux do
|
||||||
|
url "on_linux"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
expect(f.resources.length).to eq(1)
|
||||||
|
expect(f.resources.first.url).to eq("on_linux")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -40,26 +40,6 @@ describe Formula do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#on_macos" do
|
|
||||||
it "defines an url on macos only" do
|
|
||||||
f = formula do
|
|
||||||
homepage "https://brew.sh"
|
|
||||||
|
|
||||||
on_macos do
|
|
||||||
url "https://brew.sh/test-macos-0.1.tbz"
|
|
||||||
sha256 TEST_SHA256
|
|
||||||
end
|
|
||||||
|
|
||||||
on_linux do
|
|
||||||
url "https://brew.sh/test-linux-0.1.tbz"
|
|
||||||
sha256 TEST_SHA256
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(f.stable.url).to eq("https://brew.sh/test-macos-0.1.tbz")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "#on_macos" do
|
describe "#on_macos" do
|
||||||
it "adds a dependency on macos only" do
|
it "adds a dependency on macos only" do
|
||||||
f = formula do
|
f = formula do
|
||||||
@ -86,7 +66,7 @@ describe Formula do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#on_macos" do
|
describe "#on_macos" do
|
||||||
it "adds a patch on macos only" do
|
it "adds a patch on Mac only" do
|
||||||
f = formula do
|
f = formula do
|
||||||
homepage "https://brew.sh"
|
homepage "https://brew.sh"
|
||||||
|
|
||||||
@ -94,27 +74,38 @@ describe Formula do
|
|||||||
sha256 TEST_SHA256
|
sha256 TEST_SHA256
|
||||||
|
|
||||||
patch do
|
patch do
|
||||||
url "patch_both"
|
on_macos do
|
||||||
end
|
|
||||||
|
|
||||||
on_macos do
|
|
||||||
patch do
|
|
||||||
url "patch_macos"
|
url "patch_macos"
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
on_linux do
|
on_linux do
|
||||||
patch do
|
|
||||||
url "patch_linux"
|
url "patch_linux"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(f.patchlist.length).to eq(2)
|
expect(f.patchlist.length).to eq(1)
|
||||||
expect(f.patchlist.first.strip).to eq(:p1)
|
expect(f.patchlist.first.strip).to eq(:p1)
|
||||||
expect(f.patchlist.first.url).to eq("patch_both")
|
expect(f.patchlist.first.url).to eq("patch_macos")
|
||||||
expect(f.patchlist.second.strip).to eq(:p1)
|
end
|
||||||
expect(f.patchlist.second.url).to eq("patch_macos")
|
end
|
||||||
|
|
||||||
|
describe "#on_macos" do
|
||||||
|
it "uses on_macos within a resource block" do
|
||||||
|
f = formula do
|
||||||
|
homepage "https://brew.sh"
|
||||||
|
|
||||||
|
url "https://brew.sh/test-0.1.tbz"
|
||||||
|
sha256 TEST_SHA256
|
||||||
|
|
||||||
|
resource "test_resource" do
|
||||||
|
on_macos do
|
||||||
|
url "resource_macos"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
expect(f.resources.length).to eq(1)
|
||||||
|
expect(f.resources.first.url).to eq("resource_macos")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user