ENV: deprecate old methods.

These should have been deprecated long ago but we didn’t really have
the necessary framework to do so.
This commit is contained in:
Mike McQuaid 2016-12-30 20:20:13 +00:00
parent 27695ffeeb
commit e50102d91e
15 changed files with 128 additions and 83 deletions

View File

@ -22,3 +22,6 @@ require "compat/json"
require "compat/ARGV"
require "compat/build_options"
require "compat/tab"
require "compat/ENV/shared"
require "compat/ENV/std"
require "compat/ENV/super"

View File

@ -0,0 +1,6 @@
module SharedEnvExtension
def j1
odeprecated "ENV.j1", "ENV.deparallelize"
deparallelize
end
end

View File

@ -0,0 +1,27 @@
module Stdenv
def fast
odeprecated "ENV.fast"
end
def O4
odeprecated "ENV.O4"
end
def Og
odeprecated "ENV.Og"
end
def gcc_4_0_1
odeprecated "ENV.gcc_4_0_1", "ENV.gcc_4_0"
gcc_4_0
end
def gcc
odeprecated "ENV.gcc", "ENV.gcc_4_2"
gcc_4_2
end
def libpng
odeprecated "ENV.libpng", "ENV.x11"
end
end

View File

@ -0,0 +1,47 @@
module Superenv
def fast
odeprecated "ENV.fast"
end
def O4
odeprecated "ENV.O4"
end
def Og
odeprecated "ENV.Og"
end
def gcc_4_0_1
odeprecated "ENV.gcc_4_0_1", "ENV.gcc_4_0"
gcc_4_0
end
def gcc
odeprecated "ENV.gcc", "ENV.gcc_4_2"
gcc_4_2
end
def libxml2
odeprecated "ENV.libxml2"
end
def minimal_optimization
odeprecated "ENV.minimal_optimization"
end
def no_optimization
odeprecated "ENV.no_optimization"
end
def enable_warnings
odeprecated "ENV.enable_warnings"
end
def macosxsdk
odeprecated "ENV.macosxsdk"
end
def remove_macosxsdk
odeprecated "ENV.remove_macosxsdk"
end
end

View File

@ -100,23 +100,23 @@ module OS
end
def gcc_40_build_version
odeprecated "MacOS.gcc_40_build_version", "DevelopmentTools.gcc_40_build_version"
DevelopmentTools.gcc_40_build_version
odeprecated "MacOS.gcc_40_build_version", "DevelopmentTools.gcc_4_0_build_version"
DevelopmentTools.gcc_4_0_build_version
end
def gcc_4_0_build_version
odeprecated "MacOS.gcc_4_0_build_version", "DevelopmentTools.gcc_40_build_version"
DevelopmentTools.gcc_40_build_version
odeprecated "MacOS.gcc_4_0_build_version", "DevelopmentTools.gcc_4_0_build_version"
DevelopmentTools.gcc_4_0_build_version
end
def gcc_42_build_version
odeprecated "MacOS.gcc_42_build_version", "DevelopmentTools.gcc_42_build_version"
DevelopmentTools.gcc_42_build_version
odeprecated "MacOS.gcc_42_build_version", "DevelopmentTools.gcc_4_2_build_version"
DevelopmentTools.gcc_4_2_build_version
end
def gcc_build_version
odeprecated "MacOS.gcc_build_version", "DevelopmentTools.gcc_42_build_version"
DevelopmentTools.gcc_42_build_version
odeprecated "MacOS.gcc_build_version", "DevelopmentTools.gcc_4_2_build_version"
DevelopmentTools.gcc_4_2_build_version
end
def llvm_build_version

View File

@ -4,7 +4,7 @@ module CompilerConstants
GNU_GCC_REGEXP = /^gcc-(4\.[3-9]|[5-7])$/
COMPILER_SYMBOL_MAP = {
"gcc-4.0" => :gcc_4_0,
"gcc-4.2" => :gcc,
"gcc-4.2" => :gcc_4_2,
"clang" => :clang,
"llvm_clang" => :llvm_clang,
}.freeze
@ -68,7 +68,7 @@ class CompilerFailure
COLLECTIONS = {
cxx11: [
create(:gcc_4_0),
create(:gcc),
create(:gcc_4_2),
create(:clang) { build 425 },
create(gcc: "4.3"),
create(gcc: "4.4"),
@ -87,9 +87,9 @@ class CompilerSelector
Compiler = Struct.new(:name, :version)
COMPILER_PRIORITY = {
clang: [:clang, :gcc, :gnu, :gcc_4_0, :llvm_clang],
gcc: [:gcc, :gnu, :clang, :gcc_4_0],
gcc_4_0: [:gcc_4_0, :gcc, :gnu, :clang],
clang: [:clang, :gcc_4_2, :gnu, :gcc_4_0, :llvm_clang],
gcc_4_2: [:gcc_4_2, :gnu, :clang, :gcc_4_0],
gcc_4_0: [:gcc_4_0, :gcc_4_2, :gnu, :clang],
}.freeze
def self.select_for(formula, compilers = self.compilers)

View File

@ -34,15 +34,11 @@ class DevelopmentTools
end
def default_compiler
if default_cc =~ /^gcc/
:gcc
else
:clang
end
end
def gcc_40_build_version
@gcc_40_build_version ||= begin
def gcc_4_0_build_version
@gcc_4_0_build_version ||= begin
if (path = locate("gcc-4.0")) &&
build_version = `#{path} --version 2>/dev/null`[/build (\d{4,})/, 1]
Version.new build_version
@ -51,10 +47,9 @@ class DevelopmentTools
end
end
end
alias gcc_4_0_build_version gcc_40_build_version
def gcc_42_build_version
@gcc_42_build_version ||= begin
def gcc_4_2_build_version
@gcc_4_2_build_version ||= begin
gcc = locate("gcc-4.2") || HOMEBREW_PREFIX.join("opt/apple-gcc42/bin/gcc-4.2")
if gcc.exist? && !gcc.realpath.basename.to_s.start_with?("llvm")&&
build_version = `#{gcc} --version 2>/dev/null`[/build (\d{4,})/, 1]
@ -64,7 +59,6 @@ class DevelopmentTools
end
end
end
alias gcc_build_version gcc_42_build_version
def clang_version
@clang_version ||= begin
@ -115,7 +109,7 @@ class DevelopmentTools
end
def clear_version_cache
@gcc_40_build_version = @gcc_42_build_version = nil
@gcc_4_0_build_version = @gcc_4_2_build_version = nil
@clang_version = @clang_build_version = nil
@non_apple_gcc_version = {}
end

View File

@ -82,10 +82,6 @@ module Stdenv
old
end
alias j1 deparallelize
# These methods are no-ops for compatibility.
%w[fast O4 Og].each { |opt| define_method(opt) {} }
%w[O3 O2 O1 O0 Os].each do |opt|
define_method opt do
@ -110,13 +106,11 @@ module Stdenv
super
set_cpu_cflags "-march=nocona -mssse3"
end
alias gcc_4_0_1 gcc_4_0
def gcc
def gcc_4_2
super
set_cpu_cflags
end
alias gcc_4_2 gcc
GNU_GCC_VERSIONS.each do |n|
define_method(:"gcc-#{n}") do
@ -144,13 +138,6 @@ module Stdenv
end
alias generic_no_optimization no_optimization
def libxml2
end
def x11
end
alias libpng x11
# we've seen some packages fail to build when warnings are disabled!
def enable_warnings
remove_from_cflags "-w"

View File

@ -16,9 +16,7 @@ module Superenv
# @private
attr_accessor :keg_only_deps, :deps
attr_accessor :x11
alias x11? x11
def self.extended(base)
base.keg_only_deps = []
@ -263,7 +261,6 @@ module Superenv
old
end
alias j1 deparallelize
def make_jobs
self["MAKEFLAGS"] =~ /-\w*j(\d+)/
@ -329,23 +326,9 @@ module Superenv
def set_x11_env_if_installed
end
# This method does nothing in superenv since there's no custom CFLAGS API
# @private
def noop(*_args); end
# These methods are no longer necessary under superenv, but are needed to
# maintain an interface compatible with stdenv.
alias fast noop
alias O4 noop
alias Og noop
alias libxml2 noop
alias set_cpu_flags noop
# These methods provide functionality that has not yet been ported to
# superenv.
alias gcc_4_0_1 noop
alias minimal_optimization noop
alias no_optimization noop
alias enable_warnings noop
def set_cpu_flags; end
end
class Array

View File

@ -64,15 +64,15 @@ class DevelopmentTools
case default_cc
# if GCC 4.2 is installed, e.g. via Tigerbrew, prefer it
# over the system's GCC 4.0
when /^gcc-4\.0/ then gcc_42_build_version ? :gcc : :gcc_4_0
when /^gcc/ then :gcc
when /^gcc-4\.0/ then gcc_4_2_build_version ? :gcc_4_2 : :gcc_4_0
when /^gcc/ then :gcc_4_2
when "clang" then :clang
else
# guess :(
if MacOS::Xcode.version >= "4.3"
:clang
else
:gcc
:gcc_4_2
end
end
end

View File

@ -1,4 +1,6 @@
module Superenv
alias x11? x11
# @private
def self.bin
return unless DevelopmentTools.installed?
@ -120,9 +122,4 @@ module Superenv
def no_weak_imports
append "HOMEBREW_CCCFG", "w" if no_weak_imports_support?
end
# These methods are no longer necessary under superenv, but are needed to
# maintain an interface compatible with stdenv.
alias macosxsdk noop
alias remove_macosxsdk noop
end

View File

@ -152,13 +152,13 @@ module OS
end
STANDARD_COMPILERS = {
"2.0" => { gcc_40_build: 4061 },
"2.5" => { gcc_40_build: 5370 },
"3.1.4" => { gcc_40_build: 5493, gcc_42_build: 5577 },
"3.2.6" => { gcc_40_build: 5494, gcc_42_build: 5666, clang: "1.7", clang_build: 77 },
"4.0" => { gcc_40_build: 5494, gcc_42_build: 5666, clang: "2.0", clang_build: 137 },
"4.0.1" => { gcc_40_build: 5494, gcc_42_build: 5666, clang: "2.0", clang_build: 137 },
"4.0.2" => { gcc_40_build: 5494, gcc_42_build: 5666, clang: "2.0", clang_build: 137 },
"2.0" => { gcc_4_0_build: 4061 },
"2.5" => { gcc_4_0_build: 5370 },
"3.1.4" => { gcc_4_0_build: 5493, gcc_4_2_build: 5577 },
"3.2.6" => { gcc_4_0_build: 5494, gcc_4_2_build: 5666, clang: "1.7", clang_build: 77 },
"4.0" => { gcc_4_0_build: 5494, gcc_4_2_build: 5666, clang: "2.0", clang_build: 137 },
"4.0.1" => { gcc_4_0_build: 5494, gcc_4_2_build: 5666, clang: "2.0", clang_build: 137 },
"4.0.2" => { gcc_4_0_build: 5494, gcc_4_2_build: 5666, clang: "2.0", clang_build: 137 },
"4.2" => { clang: "3.0", clang_build: 211 },
"4.3" => { clang: "3.1", clang_build: 318 },
"4.3.1" => { clang: "3.1", clang_build: 318 },

View File

@ -6,12 +6,12 @@ require "development_tools"
class SystemConfig
class << self
def gcc_42
@gcc_42 ||= DevelopmentTools.gcc_42_build_version if DevelopmentTools.installed?
def gcc_4_2
@gcc_4_2 ||= DevelopmentTools.gcc_4_2_build_version if DevelopmentTools.installed?
end
def gcc_40
@gcc_40 ||= DevelopmentTools.gcc_40_build_version if DevelopmentTools.installed?
def gcc_4_0
@gcc_4_0 ||= DevelopmentTools.gcc_4_0_build_version if DevelopmentTools.installed?
end
def clang
@ -143,8 +143,8 @@ class SystemConfig
f.puts "HOMEBREW_BOTTLE_DOMAIN: #{BottleSpecification::DEFAULT_DOMAIN}"
f.puts hardware if hardware
f.puts "Homebrew Ruby: #{describe_homebrew_ruby}"
f.puts "GCC-4.0: build #{gcc_40}" unless gcc_40.null?
f.puts "GCC-4.2: build #{gcc_42}" unless gcc_42.null?
f.puts "GCC-4.0: build #{gcc_4_0}" unless gcc_4_0.null?
f.puts "GCC-4.2: build #{gcc_4_2}" unless gcc_4_2.null?
f.puts "Clang: #{clang.null? ? "N/A" : "#{clang} build #{clang_build}"}"
f.puts "Git: #{describe_git}"
f.puts "Perl: #{describe_perl}"

View File

@ -133,7 +133,7 @@ module SharedEnvTests
end
def test_switching_compilers_updates_compiler
[:clang, :gcc, :gcc_4_0].each do |compiler|
[:clang, :gcc_4_2, :gcc_4_0].each do |compiler|
@env.send(compiler)
assert_equal compiler, @env.compiler
end

View File

@ -6,7 +6,8 @@ class CxxStdlibTests < Homebrew::TestCase
def setup
@clang = CxxStdlib.create(:libstdcxx, :clang)
@gcc = CxxStdlib.create(:libstdcxx, :gcc)
@gcc4 = CxxStdlib.create(:libstdcxx, :gcc_4_0)
@gcc40 = CxxStdlib.create(:libstdcxx, :gcc_4_0)
@gcc42 = CxxStdlib.create(:libstdcxx, :gcc_4_2)
@gcc48 = CxxStdlib.create(:libstdcxx, "gcc-4.8")
@gcc49 = CxxStdlib.create(:libstdcxx, "gcc-4.9")
@lcxx = CxxStdlib.create(:libcxx, :clang)
@ -15,7 +16,7 @@ class CxxStdlibTests < Homebrew::TestCase
def test_apple_libstdcxx_intercompatibility
assert @clang.compatible_with?(@gcc)
assert @clang.compatible_with?(@gcc4)
assert @clang.compatible_with?(@gcc42)
end
def test_compatibility_same_compilers_and_type
@ -42,7 +43,7 @@ class CxxStdlibTests < Homebrew::TestCase
def test_apple_compiler_reporting
assert_predicate @clang, :apple_compiler?
assert_predicate @gcc, :apple_compiler?
assert_predicate @gcc4, :apple_compiler?
assert_predicate @gcc42, :apple_compiler?
refute_predicate @gcc48, :apple_compiler?
end