From b5363025a675d0b8f661333a87b31a817a79301d Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Fri, 14 Aug 2020 02:26:29 +0200 Subject: [PATCH] Refactor and document `BuildEnvironment`. --- Library/Homebrew/build_environment.rb | 41 ++++++++++++++------------- Library/Homebrew/cmd/--env.rb | 4 +-- Library/Homebrew/exceptions.rb | 2 +- Library/Homebrew/formula.rb | 2 +- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Library/Homebrew/build_environment.rb b/Library/Homebrew/build_environment.rb index ad0508d22a..ed6f319730 100644 --- a/Library/Homebrew/build_environment.rb +++ b/Library/Homebrew/build_environment.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +# Settings for the build environment. +# +# @api private class BuildEnvironment def initialize(*settings) @settings = Set.new(*settings) @@ -23,35 +26,35 @@ class BuildEnvironment @settings.include? :userpaths end + # DSL for specifying build environment settings. module DSL def env(*settings) @env ||= BuildEnvironment.new @env.merge(settings) end end -end -module Homebrew - module_function + KEYS = %w[ + CC CXX LD OBJC OBJCXX + HOMEBREW_CC HOMEBREW_CXX + CFLAGS CXXFLAGS CPPFLAGS LDFLAGS SDKROOT MAKEFLAGS + CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH CMAKE_FRAMEWORK_PATH + MACOSX_DEPLOYMENT_TARGET PKG_CONFIG_PATH PKG_CONFIG_LIBDIR + HOMEBREW_DEBUG HOMEBREW_MAKE_JOBS HOMEBREW_VERBOSE + HOMEBREW_SVN HOMEBREW_GIT + HOMEBREW_SDKROOT + MAKE GIT CPP + ACLOCAL_PATH PATH CPATH + LD_LIBRARY_PATH LD_RUN_PATH LD_PRELOAD LIBRARY_PATH + ].freeze + private_constant :KEYS - def build_env_keys(env) - %w[ - CC CXX LD OBJC OBJCXX - HOMEBREW_CC HOMEBREW_CXX - CFLAGS CXXFLAGS CPPFLAGS LDFLAGS SDKROOT MAKEFLAGS - CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH CMAKE_FRAMEWORK_PATH - MACOSX_DEPLOYMENT_TARGET PKG_CONFIG_PATH PKG_CONFIG_LIBDIR - HOMEBREW_DEBUG HOMEBREW_MAKE_JOBS HOMEBREW_VERBOSE - HOMEBREW_SVN HOMEBREW_GIT - HOMEBREW_SDKROOT - MAKE GIT CPP - ACLOCAL_PATH PATH CPATH - LD_LIBRARY_PATH LD_RUN_PATH LD_PRELOAD LIBRARY_PATH - ].select { |key| env.key?(key) } + def self.keys(env) + KEYS & env.keys end - def dump_build_env(env, f = $stdout) - keys = build_env_keys(env) + def self.dump(env, f = $stdout) + keys = self.keys(env) keys -= %w[CC CXX OBJC OBJCXX] if env["CC"] == env["HOMEBREW_CC"] keys.each do |key| diff --git a/Library/Homebrew/cmd/--env.rb b/Library/Homebrew/cmd/--env.rb index 7586631754..80319d3053 100644 --- a/Library/Homebrew/cmd/--env.rb +++ b/Library/Homebrew/cmd/--env.rb @@ -43,9 +43,9 @@ module Homebrew Utils::Shell.from_path(args.shell) end - env_keys = build_env_keys(ENV) + env_keys = BuildEnvironment.keys(ENV) if shell.nil? - dump_build_env ENV + BuildEnvironment.dump ENV else env_keys.each do |key| puts Utils::Shell.export_value(key, ENV[key], shell) diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index f3fb93c6f0..7c6c862ad8 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -369,7 +369,7 @@ class BuildError < RuntimeError ohai "Configuration" SystemConfig.dump_verbose_config ohai "ENV" - Homebrew.dump_build_env(env) + BuildEnvironment.dump env puts onoe "#{formula.full_name} #{formula.version} did not build" unless (logs = Dir["#{formula.logs}/*"]).empty? diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 5849baaa20..ddc6ec671a 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2020,7 +2020,7 @@ class Formula SystemConfig.dump_verbose_config(log) log.puts - Homebrew.dump_build_env(env, log) + BuildEnvironment.dump env, log raise BuildError.new(self, cmd, args, env) end