diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 41dce0eb2b..7bf31ff7b3 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -87,7 +87,6 @@ class Build ENV.keg_only_deps = keg_only_deps ENV.deps = formula_deps ENV.run_time_deps = run_time_deps - ENV.x11 = reqs.any? { |rq| rq.is_a?(X11Requirement) } ENV.setup_build_environment( formula: formula, cc: args.cc, diff --git a/Library/Homebrew/cask/dsl/depends_on.rb b/Library/Homebrew/cask/dsl/depends_on.rb index 8009749896..d4799d3899 100644 --- a/Library/Homebrew/cask/dsl/depends_on.rb +++ b/Library/Homebrew/cask/dsl/depends_on.rb @@ -27,8 +27,7 @@ module Cask arm64: { type: :arm, bits: 64 }, }.freeze - attr_accessor :java - attr_reader :arch, :cask, :formula, :macos, :x11 + attr_reader :arch, :cask, :formula, :java, :macos, :x11 def initialize super({}) @@ -83,9 +82,17 @@ module Cask @arch.concat(arches.map { |arch| VALID_ARCHES[arch] }) end + def java=(arg) + odeprecated "depends_on :java", "depends_on a specific Java formula" + + @java = arg + end + def x11=(arg) raise "invalid 'depends_on x11' value: #{arg.inspect}" unless [true, false].include?(arg) + odeprecated "depends_on :x11", "depends_on specific X11 formula(e)" + @x11 = arg end end diff --git a/Library/Homebrew/dev-cmd/sh.rb b/Library/Homebrew/dev-cmd/sh.rb index b97e2a5a48..ca5afd9df0 100644 --- a/Library/Homebrew/dev-cmd/sh.rb +++ b/Library/Homebrew/dev-cmd/sh.rb @@ -36,10 +36,7 @@ module Homebrew ENV.activate_extensions!(env: args.env) - if superenv?(args.env) - ENV.set_x11_env_if_installed - ENV.deps = Formula.installed.select { |f| f.keg_only? && f.opt_prefix.directory? } - end + ENV.deps = Formula.installed.select { |f| f.keg_only? && f.opt_prefix.directory? } if superenv?(args.env) ENV.setup_build_environment if superenv?(args.env) # superenv stopped adding brew's bin but generally users will want it diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index 8a8a648d81..1d92df818b 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -209,7 +209,9 @@ module Stdenv end sig { void } - def x11; end + def x11 + odeprecated "ENV.x11", "depends_on specific X11 formula(e)" + end # @private sig { params(map: T::Hash[Symbol, String]).void } diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index 5e2c1da21f..12584febb3 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -343,7 +343,9 @@ module Superenv end sig { void } - def set_x11_env_if_installed; end + def set_x11_env_if_installed + odeprecated "ENV.set_x11_env_if_installed" + end end require "extend/os/extend/ENV/super" diff --git a/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb index 05a764d10c..29738ff15d 100644 --- a/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb +++ b/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb @@ -6,6 +6,11 @@ require "requirement" class OsxfuseRequirement < Requirement extend T::Sig + def initialize(tags = []) + odeprecated "depends_on :osxfuse", 'on_linux do; depends_on "libfuse"; end' + super(tags) + end + download "https://github.com/libfuse/libfuse" satisfy(build_env: false) do diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index e950ac2e6a..b5e9e1e925 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -4,35 +4,12 @@ module Stdenv # @private - undef homebrew_extra_pkg_config_paths, x11 + undef homebrew_extra_pkg_config_paths def homebrew_extra_pkg_config_paths ["#{HOMEBREW_LIBRARY}/Homebrew/os/mac/pkgconfig/#{MacOS.sdk_version}"] end - def x11 - # There are some config scripts here that should go in the PATH - append_path "PATH", MacOS::XQuartz.bin.to_s - - # Append these to PKG_CONFIG_LIBDIR so they are searched - # *after* our own pkgconfig directories, as we dupe some of the - # libs in XQuartz. - append_path "PKG_CONFIG_LIBDIR", "#{MacOS::XQuartz.lib}/pkgconfig" - append_path "PKG_CONFIG_LIBDIR", "#{MacOS::XQuartz.share}/pkgconfig" - - append "LDFLAGS", "-L#{MacOS::XQuartz.lib}" - append_path "CMAKE_PREFIX_PATH", MacOS::XQuartz.prefix.to_s - append_path "CMAKE_INCLUDE_PATH", MacOS::XQuartz.include.to_s - append_path "CMAKE_INCLUDE_PATH", "#{MacOS::XQuartz.include}/freetype2" - - append "CPPFLAGS", "-I#{MacOS::XQuartz.include}" - append "CPPFLAGS", "-I#{MacOS::XQuartz.include}/freetype2" - - append_path "ACLOCAL_PATH", "#{MacOS::XQuartz.share}/aclocal" - - append "CFLAGS", "-I#{MacOS::XQuartz.include}" unless MacOS::CLT.installed? - end - def setup_build_environment(**options) generic_setup_build_environment(**options) diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb index 118003d17f..233ba71269 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb @@ -23,7 +23,7 @@ module Superenv homebrew_extra_cmake_include_paths, homebrew_extra_cmake_library_paths, homebrew_extra_cmake_frameworks_paths, - determine_cccfg, set_x11_env_if_installed + determine_cccfg def homebrew_extra_paths paths = [] @@ -105,10 +105,6 @@ module Superenv s.freeze end - def set_x11_env_if_installed - ENV.x11 = MacOS::XQuartz.installed? - end - # @private def setup_build_environment(**options) formula = options[:formula] diff --git a/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb index 30510cdb20..613567817d 100644 --- a/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb +++ b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb @@ -6,6 +6,11 @@ require "requirement" class OsxfuseRequirement < Requirement extend T::Sig + def initialize(tags = []) + odeprecated "depends_on :osxfuse" + super(tags) + end + download "https://osxfuse.github.io/" satisfy(build_env: false) { self.class.binary_osxfuse_installed? } diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 08ec8a21b4..0de9041e06 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2526,9 +2526,6 @@ class Formula # depends_on "sqlite" if MacOS.version >= :catalina # depends_on xcode: :build # If the formula really needs full Xcode to compile. # depends_on macos: :mojave # Needs at least macOS Mojave (10.14) to run. - # depends_on x11: :optional # X11/XQuartz components. - # depends_on :osxfuse # Permits the use of the upstream signed binary or our cask. - # depends_on :tuntap # Does the same thing as above. This is vital for Yosemite and later. #
# It is possible to only depend on something if
     # # `build.with?` or `build.without? "another_formula"`:
     # depends_on "postgresql" if build.without? "sqlite"
diff --git a/Library/Homebrew/requirements/tuntap_requirement.rb b/Library/Homebrew/requirements/tuntap_requirement.rb index 3599dcff4c..b059bac0d6 100644 --- a/Library/Homebrew/requirements/tuntap_requirement.rb +++ b/Library/Homebrew/requirements/tuntap_requirement.rb @@ -9,6 +9,11 @@ require "requirement" class TuntapRequirement < Requirement extend T::Sig + def initialize(tags = []) + odeprecated "depends_on :tuntap" + super(tags) + end + fatal true cask "tuntap" satisfy(build_env: false) { self.class.binary_tuntap_installed? } diff --git a/Library/Homebrew/requirements/x11_requirement.rb b/Library/Homebrew/requirements/x11_requirement.rb index d55a0ef984..eabc6cde47 100644 --- a/Library/Homebrew/requirements/x11_requirement.rb +++ b/Library/Homebrew/requirements/x11_requirement.rb @@ -8,16 +8,18 @@ require "requirement" # @api private class X11Requirement < Requirement extend T::Sig - include Comparable + def initialize(tags = []) + odeprecated "depends_on :x11", "depends_on specific X11 formula(e)" + super(tags) + end + fatal true cask "xquartz" download "https://xquartz.macosforge.org" - env { ENV.x11 } - sig { returns(String) } def min_version "1.12.2" diff --git a/Library/Homebrew/rubocops/lines.rb b/Library/Homebrew/rubocops/lines.rb index f01fb03ed9..011be29218 100644 --- a/Library/Homebrew/rubocops/lines.rb +++ b/Library/Homebrew/rubocops/lines.rb @@ -551,10 +551,6 @@ module RuboCop problem "macOS has been 64-bit only since 10.6 so ENV.universal_binary is deprecated." end - find_instance_method_call(body_node, "ENV", :x11) do - problem 'Use "depends_on :x11" instead of "ENV.x11"' - end - find_every_method_call_by_name(body_node, :depends_on).each do |method| next unless method_called?(method, :new) diff --git a/Library/Homebrew/test/cask/depends_on_spec.rb b/Library/Homebrew/test/cask/depends_on_spec.rb index e00f472d27..aa1647de6c 100644 --- a/Library/Homebrew/test/cask/depends_on_spec.rb +++ b/Library/Homebrew/test/cask/depends_on_spec.rb @@ -74,37 +74,4 @@ describe "Satisfy Dependencies and Requirements", :cask do end end end - - describe "depends_on x11" do - before do - allow(MacOS::XQuartz).to receive(:installed?).and_return(x11_installed) - end - - context "when satisfied" do - let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-x11")) } - let(:x11_installed) { true } - - it "does not raise an error" do - expect { install }.not_to raise_error - end - end - - context "when not satisfied" do - let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-x11")) } - let(:x11_installed) { false } - - it "does not raise an error" do - expect { install }.to raise_error Cask::CaskX11DependencyError - end - end - - context "when depends_on x11: false" do - let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-x11-false")) } - let(:x11_installed) { false } - - it "does not raise an error" do - expect { install }.not_to raise_error - end - end - end end diff --git a/Library/Homebrew/test/cask/dsl_spec.rb b/Library/Homebrew/test/cask/dsl_spec.rb index 2146621def..cd713b3282 100644 --- a/Library/Homebrew/test/cask/dsl_spec.rb +++ b/Library/Homebrew/test/cask/dsl_spec.rb @@ -410,14 +410,6 @@ describe Cask::DSL, :cask do end describe "depends_on x11" do - context "valid" do - let(:token) { "with-depends-on-x11" } - - it "is allowed to be specified" do - expect(cask.depends_on.x11).not_to be nil - end - end - context "invalid depends_on x11 value" do let(:token) { "invalid/invalid-depends-on-x11-value" } diff --git a/Library/Homebrew/test/cask_dependent_spec.rb b/Library/Homebrew/test/cask_dependent_spec.rb index 9f094157ee..9e6d041ae5 100644 --- a/Library/Homebrew/test/cask_dependent_spec.rb +++ b/Library/Homebrew/test/cask_dependent_spec.rb @@ -13,7 +13,6 @@ describe CaskDependent, :needs_macos do depends_on formula: "baz" depends_on cask: "foo-cask" depends_on macos: ">= :mojave" - depends_on x11: true end RUBY end @@ -28,7 +27,7 @@ describe CaskDependent, :needs_macos do describe "#requirements" do it "is the requirements of the cask" do expect(dependent.requirements.map(&:name)) - .to eq %w[foo-cask macos x11] + .to eq %w[foo-cask macos] end end @@ -39,7 +38,6 @@ describe CaskDependent, :needs_macos do setup_test_formula "baz", <<-RUBY url "https://brew.sh/baz-1.0" depends_on "bar" - depends_on :osxfuse RUBY expect(dependent.recursive_dependencies.map(&:name)) @@ -54,11 +52,10 @@ describe CaskDependent, :needs_macos do setup_test_formula "baz", <<-RUBY url "https://brew.sh/baz-1.0" depends_on "bar" - depends_on :osxfuse RUBY expect(dependent.recursive_requirements.map(&:name)) - .to eq(%w[foo-cask macos x11 osxfuse]) + .to eq(%w[foo-cask macos]) end end end diff --git a/Library/Homebrew/test/dependency_collector_spec.rb b/Library/Homebrew/test/dependency_collector_spec.rb index aa673a2339..80e187dfc9 100644 --- a/Library/Homebrew/test/dependency_collector_spec.rb +++ b/Library/Homebrew/test/dependency_collector_spec.rb @@ -27,32 +27,20 @@ describe DependencyCollector do end specify "requirement creation" do - subject.add :x11 - expect(find_requirement(X11Requirement)).to be_an_instance_of(X11Requirement) + subject.add :xcode + expect(find_requirement(XcodeRequirement)).to be_an_instance_of(XcodeRequirement) end it "deduplicates requirements" do - 2.times { subject.add :x11 } + 2.times { subject.add :xcode } expect(subject.requirements.count).to eq(1) end specify "requirement tags" do - subject.add :x11 subject.add xcode: :build - expect(find_requirement(X11Requirement).tags).to be_empty expect(find_requirement(XcodeRequirement)).to be_a_build_requirement end - specify "x11 without tag" do - subject.add :x11 - expect(find_requirement(X11Requirement).tags).to be_empty - end - - specify "x11 with tag" do - subject.add x11: :optional - expect(find_requirement(X11Requirement)).to be_optional - end - it "doesn't mutate the dependency spec" do spec = { "foo" => :optional } copy = spec.dup diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index e09790157b..f9eb6a9cb7 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -794,17 +794,15 @@ describe Formula do f1 = formula "f1" do url "f1-1" - depends_on x11: :recommended depends_on xcode: ["1.0", :optional] end stub_formula_loader(f1) - x11 = X11Requirement.new([:recommended]) xcode = XcodeRequirement.new(["1.0", :optional]) - expect(Set.new(f1.recursive_requirements)).to eq(Set[x11]) + expect(Set.new(f1.recursive_requirements)).to eq(Set[]) - f1.build = BuildOptions.new(["--with-xcode", "--without-x11"], f1.options) + f1.build = BuildOptions.new(["--with-xcode"], f1.options) expect(Set.new(f1.recursive_requirements)).to eq(Set[xcode]) @@ -815,14 +813,14 @@ describe Formula do depends_on "f1" end - expect(Set.new(f2.recursive_requirements)).to eq(Set[x11]) - expect(Set.new(f2.recursive_requirements {})).to eq(Set[x11, xcode]) + expect(Set.new(f2.recursive_requirements)).to eq(Set[]) + expect(Set.new(f2.recursive_requirements {})).to eq(Set[xcode]) requirements = f2.recursive_requirements do |_dependent, requirement| - Requirement.prune if requirement.is_a?(X11Requirement) + Requirement.prune if requirement.is_a?(XcodeRequirement) end - expect(Set.new(requirements)).to eq(Set[xcode]) + expect(Set.new(requirements)).to eq(Set[]) end specify "#to_hash" do diff --git a/Library/Homebrew/test/requirements/osxfuse_requirement_spec.rb b/Library/Homebrew/test/requirements/osxfuse_requirement_spec.rb deleted file mode 100644 index 2df2997d36..0000000000 --- a/Library/Homebrew/test/requirements/osxfuse_requirement_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ -# typed: false -# frozen_string_literal: true - -require "requirements/osxfuse_requirement" - -describe OsxfuseRequirement do - subject(:requirement) { described_class.new([]) } - - describe "::binary_osxfuse_installed?", :needs_macos do - alias_matcher :have_binary_osxfuse_installed, :be_binary_osxfuse_installed - - it "returns false if fuse.h does not exist" do - allow(File).to receive(:exist?).and_return(false) - expect(described_class).not_to have_binary_osxfuse_installed - end - - it "returns false if osxfuse include directory is a symlink" do - allow(File).to receive(:exist?).and_return(true) - allow(File).to receive(:symlink?).and_return(true) - expect(described_class).not_to have_binary_osxfuse_installed - end - end - - describe "#modify_build_environment", :needs_macos do - it "adds the fuse directories to PKG_CONFIG_PATH" do - allow(ENV).to receive(:append_path) - requirement.modify_build_environment - expect(ENV).to have_received(:append_path).with("PKG_CONFIG_PATH", any_args) - end - - it "adds the fuse directories to HOMEBREW_LIBRARY_PATHS" do - allow(ENV).to receive(:append_path) - requirement.modify_build_environment - expect(ENV).to have_received(:append_path).with("HOMEBREW_LIBRARY_PATHS", any_args) - end - - it "adds the fuse directories to HOMEBREW_INCLUDE_PATHS" do - allow(ENV).to receive(:append_path) - requirement.modify_build_environment - expect(ENV).to have_received(:append_path).with("HOMEBREW_INCLUDE_PATHS", any_args) - end - end - - describe "#message" do - it "prompts for installation of 'libfuse' on Linux", :needs_linux do - expect(requirement.message).to match("libfuse is required for this software") - end - - it "prompts for installation of 'osxFuse' on macOS", :needs_macos do - expect(requirement.message).to match("osxfuse.github.io") - end - end -end diff --git a/Library/Homebrew/test/requirements/x11_requirement_spec.rb b/Library/Homebrew/test/requirements/x11_requirement_spec.rb deleted file mode 100644 index d936c06a64..0000000000 --- a/Library/Homebrew/test/requirements/x11_requirement_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -# typed: false -# frozen_string_literal: true - -require "requirements/x11_requirement" - -describe X11Requirement do - subject(:requirement) { described_class.new([]) } - - let(:default_name) { "x11" } - - describe "#name" do - it "defaults to x11" do - expect(requirement.name).to eq(default_name) - end - end - - describe "#eql?" do - it "returns true if the requirements are equal" do - other = described_class.new - expect(requirement).to eql(other) - end - end - - describe "#modify_build_environment" do - it "calls ENV#x11" do - allow(requirement).to receive(:satisfied?).and_return(true) - expect(ENV).to receive(:x11) - requirement.modify_build_environment - end - end - - describe "#satisfied?", :needs_macos do - it "returns true if X11 is installed" do - expect(MacOS::XQuartz).to receive(:version).and_return("2.7.5") - expect(MacOS::XQuartz).to receive(:installed?).and_return(true) - expect(requirement).to be_satisfied - end - - it "returns false if X11 is not installed" do - expect(MacOS::XQuartz).to receive(:installed?).and_return(false) - expect(requirement).not_to be_satisfied - end - end -end diff --git a/Library/Homebrew/test/requirements_spec.rb b/Library/Homebrew/test/requirements_spec.rb index ae6bfdc2c5..9d65e513c9 100644 --- a/Library/Homebrew/test/requirements_spec.rb +++ b/Library/Homebrew/test/requirements_spec.rb @@ -10,10 +10,8 @@ describe Requirements do end it "merges duplicate requirements" do - subject << X11Requirement.new << X11Requirement.new + subject << Requirement.new << Requirement.new expect(subject.count).to eq(1) - subject << Requirement.new - expect(subject.count).to eq(2) end end end diff --git a/Library/Homebrew/test/rubocops/lines_spec.rb b/Library/Homebrew/test/rubocops/lines_spec.rb index 852c1f0226..dd51cf5e89 100644 --- a/Library/Homebrew/test/rubocops/lines_spec.rb +++ b/Library/Homebrew/test/rubocops/lines_spec.rb @@ -1122,19 +1122,6 @@ describe RuboCop::Cop::FormulaAudit::Miscellaneous do RUBY end - it "deprecated ENV.x11 usage" do - expect_offense(<<~RUBY) - class Foo < Formula - desc "foo" - url 'https://brew.sh/foo-1.0.tgz' - if build? - ENV.x11 - ^^^^^^^ Use "depends_on :x11" instead of "ENV.x11" - end - end - RUBY - end - it "install_name_tool usage instead of ruby-macho" do expect_offense(<<~RUBY) class Foo < Formula diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/with-depends-on-x11-false.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/with-depends-on-x11-false.rb deleted file mode 100644 index fed80ab8a1..0000000000 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/with-depends-on-x11-false.rb +++ /dev/null @@ -1,11 +0,0 @@ -cask "with-depends-on-x11-false" do - version "1.2.3" - sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94" - - url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip" - homepage "https://brew.sh/with-depends-on-x11-false" - - depends_on x11: false - - app "Caffeine.app" -end diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/with-depends-on-x11.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/with-depends-on-x11.rb deleted file mode 100644 index 3df71437ee..0000000000 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/with-depends-on-x11.rb +++ /dev/null @@ -1,11 +0,0 @@ -cask "with-depends-on-x11" do - version "1.2.3" - sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94" - - url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip" - homepage "https://brew.sh/with-depends-on-x11" - - depends_on x11: true - - app "Caffeine.app" -end