From 17f484b0ae8dba08a676ddb4ca04ed92200e47df Mon Sep 17 00:00:00 2001 From: "Andrew R. McBurney" Date: Tue, 15 May 2018 13:15:30 -0400 Subject: [PATCH] Set the `return_value` from the `initialize` block in the `DatabaseCache`. --- Library/Homebrew/cache_store.rb | 5 ++++- Library/Homebrew/formula.rb | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/cache_store.rb b/Library/Homebrew/cache_store.rb index 1a9cf3be68..a94e1e98e1 100644 --- a/Library/Homebrew/cache_store.rb +++ b/Library/Homebrew/cache_store.rb @@ -12,6 +12,9 @@ class DatabaseCache # https://docs.oracle.com/cd/E17276_01/html/api_reference/C/envopen.html DATABASE_MODE = 0664 + # Returned value from `initialize` block + attr_reader :return_value + # Opens and yields a database in read/write mode. Closes the database after use # # @yield [DBM] db @@ -19,7 +22,7 @@ class DatabaseCache def initialize(name) # DBM::WRCREAT: Creates the database if it does not already exist @db = DBM.open("#{HOMEBREW_CACHE}/#{name}.db", DATABASE_MODE, DBM::WRCREAT) - yield(@db) + @return_value = yield(@db) @db.close end end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 744038fbaf..b130c508ec 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1527,11 +1527,13 @@ class Formula keg = opt_or_installed_prefix_keg return [] unless keg - DatabaseCache.new(:linkage) do |database_cache| + cache = DatabaseCache.new(:linkage) do |database_cache| use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil? linkage_checker = LinkageChecker.new(keg, database_cache, use_cache, self) - break linkage_checker.undeclared_deps.map { |n| Dependency.new(n) } + linkage_checker.undeclared_deps.map { |n| Dependency.new(n) } end + + cache.return_value end # Returns a list of formulae depended on by this formula that aren't