Connecting up --debug-symbols flag

This connects the calling of dsymutil and the retention of temporary
files. Still need to connect compilation to flag.
This commit is contained in:
Lukas Oberhuber 2022-07-26 12:15:53 +01:00
parent 74dd365a56
commit d195f22522
12 changed files with 52 additions and 8 deletions

View File

@ -127,9 +127,10 @@ class Build
formula.update_head_version
formula.brew(
fetch: false,
keep_tmp: args.keep_tmp?,
interactive: args.interactive?,
fetch: false,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
interactive: args.interactive?,
) do
with_env(
# For head builds, HOMEBREW_FORMULA_PREFIX should include the commit,

View File

@ -87,6 +87,9 @@ module Homebrew
sig { returns(T::Boolean) }
def keep_tmp?; end
sig { returns(T::Boolean) }
def debug_symbols?; end
sig { returns(T::Boolean) }
def overwrite?; end

View File

@ -91,6 +91,11 @@ module Homebrew
[:switch, "--keep-tmp", {
description: "Retain the temporary files created during installation.",
}],
[:switch, "--debug-symbols", {
depends_on: "--build-from-source",
description: "Generates debugging symbols during build. Source will be in temporary directory " \
"which is retained. (see --keep-tmp)",
}],
[:switch, "--build-bottle", {
description: "Prepare the formula for eventual bottling during installation, skipping any " \
"post-install steps.",
@ -232,6 +237,7 @@ module Homebrew
git: args.git?,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
overwrite: args.overwrite?,
debug: args.debug?,
@ -247,6 +253,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,

View File

@ -57,6 +57,11 @@ module Homebrew
[:switch, "--keep-tmp", {
description: "Retain the temporary files created during installation.",
}],
[:switch, "--debug-symbols", {
depends_on: "--build-from-source",
description: "Generates debugging symbols during build. Source will be in temporary directory " \
"which is retained. (see --keep-tmp)",
}],
[:switch, "--display-times", {
env: :display_install_times,
description: "Print install times for each formula at the end of the run.",
@ -115,6 +120,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,
@ -132,6 +138,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,

View File

@ -68,6 +68,11 @@ module Homebrew
[:switch, "--keep-tmp", {
description: "Retain the temporary files created during installation.",
}],
[:switch, "--debug-symbols", {
depends_on: "--build-from-source",
description: "Generates debugging symbols during build. Source will be in temporary directory " \
"which is retained. (see --keep-tmp)",
}],
[:switch, "--display-times", {
env: :display_install_times,
description: "Print install times for each package at the end of the run.",
@ -185,6 +190,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,
@ -200,6 +206,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,

View File

@ -315,6 +315,9 @@ module SharedEnvExtension
sig { void }
def permit_arch_flags; end
sig { void }
def debug_symbols; end
# @private
sig { params(cc: T.any(Symbol, String)).returns(T::Boolean) }
def compiler_any_clang?(cc = compiler)

View File

@ -67,7 +67,7 @@ class Keg
binary_executable_or_library_files.each do |file|
odebug "Extracting symbols #{file}"
result = system_command("dsymutil", args: [file])
result = system_command("dsymutil", args: [file], print_stderr: false)
next if result.success?
# If it fails again, error out

View File

@ -1273,11 +1273,11 @@ class Formula
# Yields |self,staging| with current working directory set to the uncompressed tarball
# where staging is a {Mktemp} staging context.
# @private
def brew(fetch: true, keep_tmp: false, interactive: false)
def brew(fetch: true, keep_tmp: false, debug_symbols: false, interactive: false)
@prefix_returns_versioned_prefix = true
active_spec.fetch if fetch
stage(interactive: interactive) do |staging|
staging.retain! if keep_tmp
staging.retain! if keep_tmp || debug_symbols
prepare_patches
fetch_patches if fetch

View File

@ -59,6 +59,7 @@ class FormulaInstaller
git: false,
interactive: false,
keep_tmp: false,
debug_symbols: false,
cc: nil,
options: Options.new,
force: false,
@ -72,8 +73,7 @@ class FormulaInstaller
@force = force
@overwrite = overwrite
@keep_tmp = keep_tmp
# Just for this proof of concept
@debug_symbols = keep_tmp
@debug_symbols = debug_symbols
@link_keg = !formula.keg_only? || link_keg
@show_header = show_header
@ignore_deps = ignore_deps
@ -691,6 +691,7 @@ class FormulaInstaller
include_test_formulae: @include_test_formulae,
build_from_source_formulae: @build_from_source_formulae,
keep_tmp: keep_tmp?,
debug_symbols: debug_symbols?,
force: force?,
debug: debug?,
quiet: quiet?,
@ -744,6 +745,7 @@ class FormulaInstaller
include_test_formulae: @include_test_formulae,
build_from_source_formulae: @build_from_source_formulae,
keep_tmp: keep_tmp?,
debug_symbols: debug_symbols?,
force: force?,
debug: debug?,
quiet: quiet?,
@ -877,6 +879,9 @@ class FormulaInstaller
args << "--debug" if debug?
args << "--cc=#{@cc}" if @cc
args << "--keep-tmp" if keep_tmp?
args << "--debug-symbols" if debug_symbols?
# Avoids dependecy error on flag
args << "--build-from-source" if build_from_source? && debug_symbols?
if @env.present?
args << "--env=#{@env}"

View File

@ -269,6 +269,7 @@ module Homebrew
git: false,
interactive: false,
keep_tmp: false,
debug_symbols: false,
force: false,
overwrite: false,
debug: false,
@ -293,6 +294,7 @@ module Homebrew
git: git,
interactive: interactive,
keep_tmp: keep_tmp,
debug_symbols: debug_symbols,
force: force,
overwrite: overwrite,
debug: debug,

View File

@ -16,6 +16,7 @@ module Homebrew
build_from_source_formulae: [],
interactive: false,
keep_tmp: false,
debug_symbols: false,
force: false,
debug: false,
quiet: false,
@ -48,6 +49,7 @@ module Homebrew
git: git,
interactive: interactive,
keep_tmp: keep_tmp,
debug_symbols: debug_symbols,
force: force,
debug: debug,
quiet: quiet,

View File

@ -24,6 +24,7 @@ module Homebrew
build_from_source_formulae: [],
interactive: false,
keep_tmp: false,
debug_symbols: false,
force: false,
debug: false,
quiet: false,
@ -61,6 +62,7 @@ module Homebrew
build_from_source_formulae: build_from_source_formulae,
interactive: interactive,
keep_tmp: keep_tmp,
debug_symbols: debug_symbols,
force: force,
debug: debug,
quiet: quiet,
@ -128,6 +130,7 @@ module Homebrew
build_from_source_formulae: [],
interactive: false,
keep_tmp: false,
debug_symbols: false,
force: false,
debug: false,
quiet: false,
@ -161,6 +164,7 @@ module Homebrew
build_from_source_formulae: build_from_source_formulae,
interactive: interactive,
keep_tmp: keep_tmp,
debug_symbols: debug_symbols,
force: force,
debug: debug,
quiet: quiet,
@ -254,6 +258,7 @@ module Homebrew
build_from_source_formulae: [],
interactive: false,
keep_tmp: false,
debug_symbols: false,
force: false,
debug: false,
quiet: false,
@ -339,6 +344,7 @@ module Homebrew
build_from_source_formulae: build_from_source_formulae,
interactive: interactive,
keep_tmp: keep_tmp,
debug_symbols: debug_symbols,
force: force,
debug: debug,
quiet: quiet,
@ -407,6 +413,7 @@ module Homebrew
build_from_source_formulae: build_from_source_formulae + [formula.full_name],
interactive: interactive,
keep_tmp: keep_tmp,
debug_symbols: debug_symbols,
force: force,
debug: debug,
quiet: quiet,