diff --git a/Library/Homebrew/extend/fileutils.rb b/Library/Homebrew/extend/fileutils.rb deleted file mode 100644 index 2aa83d50c7..0000000000 --- a/Library/Homebrew/extend/fileutils.rb +++ /dev/null @@ -1,53 +0,0 @@ -require "fileutils" -require "etc" - -# Homebrew extends Ruby's `FileUtils` to make our code more readable. -# @see https://ruby-doc.org/stdlib-2.0.0/libdoc/fileutils/rdoc/FileUtils.html Ruby's FileUtils API -module FileUtils - # @private - alias old_mkdir mkdir - - # A version of mkdir that also changes to that folder in a block. - def mkdir(name, mode: nil, noop: nil, verbose: nil, &_block) - result = mkdir_p(name, mode: mode, noop: noop, verbose: verbose) - return result unless block_given? - chdir name do - yield - end - end - module_function :mkdir - - # Run `scons` using a Homebrew-installed version rather than whatever is in the `PATH`. - def scons(*args) - system Formulary.factory("scons").opt_bin/"scons", *args - end - - # Run `make` 3.81 or newer. - # Uses the system make on Leopard and newer, and the - # path to the actually-installed make on Tiger or older. - def make(*args) - if Utils.popen_read("/usr/bin/make", "--version").match(/Make (\d\.\d+)/)[1] > "3.80" - make_path = "/usr/bin/make" - else - make = Formula["make"].opt_bin/"make" - make_path = make.exist? ? make.to_s : (Formula["make"].opt_bin/"gmake").to_s - end - - if superenv? - make_name = File.basename(make_path) - with_env(HOMEBREW_MAKE: make_name) do - system "make", *args - end - else - system make_path, *args - end - end - - # Run `xcodebuild` without Homebrew's compiler environment variables set. - def xcodebuild(*args) - removed = ENV.remove_cc_etc - system "xcodebuild", *args - ensure - ENV.update(removed) - end -end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index a58b56a176..f0203cad93 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1907,6 +1907,56 @@ class Formula end end + # A version of `FileUtils.mkdir` that also changes to that folder in + # a block. + def mkdir(name) + result = FileUtils.mkdir_p(name) + return result unless block_given? + FileUtils.chdir name do + yield + end + end + + # Run `scons` using a Homebrew-installed version rather than whatever is + # in the `PATH`. + def scons(*args) + system Formulary.factory("scons").opt_bin/"scons", *args + end + + # Run `make` 3.81 or newer. + # Uses the system make on Leopard and newer, and the + # path to the actually-installed make on Tiger or older. + def make(*args) + if Utils.popen_read("/usr/bin/make", "--version") + .match(/Make (\d\.\d+)/)[1] > "3.80" + make_path = "/usr/bin/make" + else + make = Formula["make"].opt_bin/"make" + make_path = if make.exist? + make.to_s + else + (Formula["make"].opt_bin/"gmake").to_s + end + end + + if superenv? + make_name = File.basename(make_path) + with_env(HOMEBREW_MAKE: make_name) do + system "make", *args + end + else + system make_path, *args + end + end + + # Run `xcodebuild` without Homebrew's compiler environment variables set. + def xcodebuild(*args) + removed = ENV.remove_cc_etc + system "xcodebuild", *args + ensure + ENV.update(removed) + end + private # Returns the prefix for a given formula version number. diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 9f7661c719..a28779547e 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -33,7 +33,7 @@ HOMEBREW_BOTTLE_DEFAULT_DOMAIN = ENV["HOMEBREW_BOTTLE_DEFAULT_DOMAIN"] || HOMEBREW_BOTTLE_DOMAIN = ENV["HOMEBREW_BOTTLE_DOMAIN"] || HOMEBREW_BOTTLE_DEFAULT_DOMAIN -require "extend/fileutils" +require "fileutils" module Homebrew extend FileUtils diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 0b2897bd43..e86f48ac1d 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -182,6 +182,14 @@ class Resource patches << p end + protected + + def mktemp(prefix) + Mktemp.new(prefix).run do |staging| + yield staging + end + end + private def detect_version(val) @@ -196,12 +204,6 @@ class Resource end end - def mktemp(prefix) - Mktemp.new(prefix).run do |staging| - yield staging - end - end - class Go < Resource def stage(target) super(target/name) diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index 8943e8d325..4ff0851154 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -1303,6 +1303,17 @@ describe Formula do end end + describe "#mkdir" do + let(:dst) { mktmpdir } + + it "creates intermediate directories" do + f.mkdir dst/"foo/bar/baz" do + expect(dst/"foo/bar/baz").to exist, "foo/bar/baz was not created" + expect(dst/"foo/bar/baz").to be_a_directory, "foo/bar/baz was not a directory structure" + end + end + end + describe "with changed version scheme" do let(:f) do formula "testball" do diff --git a/Library/Homebrew/test/pathname_spec.rb b/Library/Homebrew/test/pathname_spec.rb index 090897f6a3..ca9c846efd 100644 --- a/Library/Homebrew/test/pathname_spec.rb +++ b/Library/Homebrew/test/pathname_spec.rb @@ -289,16 +289,3 @@ describe Pathname do end end end - -describe FileUtils do - let(:dst) { mktmpdir } - - describe "#mkdir" do - it "creates intermediate directories" do - described_class.mkdir dst/"foo/bar/baz" do - expect(dst/"foo/bar/baz").to exist, "foo/bar/baz was not created" - expect(dst/"foo/bar/baz").to be_a_directory, "foo/bar/baz was not a directory structure" - end - end - end -end