Set the return_value from the initialize block in the DatabaseCache.

This commit is contained in:
Andrew R. McBurney 2018-05-15 13:15:30 -04:00
parent b0dd3f4c99
commit 17f484b0ae
2 changed files with 8 additions and 3 deletions

View File

@ -12,6 +12,9 @@ class DatabaseCache
# https://docs.oracle.com/cd/E17276_01/html/api_reference/C/envopen.html # https://docs.oracle.com/cd/E17276_01/html/api_reference/C/envopen.html
DATABASE_MODE = 0664 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 # Opens and yields a database in read/write mode. Closes the database after use
# #
# @yield [DBM] db # @yield [DBM] db
@ -19,7 +22,7 @@ class DatabaseCache
def initialize(name) def initialize(name)
# DBM::WRCREAT: Creates the database if it does not already exist # DBM::WRCREAT: Creates the database if it does not already exist
@db = DBM.open("#{HOMEBREW_CACHE}/#{name}.db", DATABASE_MODE, DBM::WRCREAT) @db = DBM.open("#{HOMEBREW_CACHE}/#{name}.db", DATABASE_MODE, DBM::WRCREAT)
yield(@db) @return_value = yield(@db)
@db.close @db.close
end end
end end

View File

@ -1527,11 +1527,13 @@ class Formula
keg = opt_or_installed_prefix_keg keg = opt_or_installed_prefix_keg
return [] unless keg return [] unless keg
DatabaseCache.new(:linkage) do |database_cache| cache = DatabaseCache.new(:linkage) do |database_cache|
use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil? use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil?
linkage_checker = LinkageChecker.new(keg, database_cache, use_cache, self) 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 end
cache.return_value
end end
# Returns a list of formulae depended on by this formula that aren't # Returns a list of formulae depended on by this formula that aren't