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

@ -129,6 +129,7 @@ class Build
formula.brew( formula.brew(
fetch: false, fetch: false,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
interactive: args.interactive?, interactive: args.interactive?,
) do ) do
with_env( with_env(

View File

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

View File

@ -91,6 +91,11 @@ module Homebrew
[:switch, "--keep-tmp", { [:switch, "--keep-tmp", {
description: "Retain the temporary files created during installation.", 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", { [:switch, "--build-bottle", {
description: "Prepare the formula for eventual bottling during installation, skipping any " \ description: "Prepare the formula for eventual bottling during installation, skipping any " \
"post-install steps.", "post-install steps.",
@ -232,6 +237,7 @@ module Homebrew
git: args.git?, git: args.git?,
interactive: args.interactive?, interactive: args.interactive?,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?, force: args.force?,
overwrite: args.overwrite?, overwrite: args.overwrite?,
debug: args.debug?, debug: args.debug?,
@ -247,6 +253,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?, force: args.force?,
debug: args.debug?, debug: args.debug?,
quiet: args.quiet?, quiet: args.quiet?,

View File

@ -57,6 +57,11 @@ module Homebrew
[:switch, "--keep-tmp", { [:switch, "--keep-tmp", {
description: "Retain the temporary files created during installation.", 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", { [:switch, "--display-times", {
env: :display_install_times, env: :display_install_times,
description: "Print install times for each formula at the end of the run.", 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, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?, force: args.force?,
debug: args.debug?, debug: args.debug?,
quiet: args.quiet?, quiet: args.quiet?,
@ -132,6 +138,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?, force: args.force?,
debug: args.debug?, debug: args.debug?,
quiet: args.quiet?, quiet: args.quiet?,

View File

@ -68,6 +68,11 @@ module Homebrew
[:switch, "--keep-tmp", { [:switch, "--keep-tmp", {
description: "Retain the temporary files created during installation.", 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", { [:switch, "--display-times", {
env: :display_install_times, env: :display_install_times,
description: "Print install times for each package at the end of the run.", 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, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?, force: args.force?,
debug: args.debug?, debug: args.debug?,
quiet: args.quiet?, quiet: args.quiet?,
@ -200,6 +206,7 @@ module Homebrew
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
keep_tmp: args.keep_tmp?, keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?, force: args.force?,
debug: args.debug?, debug: args.debug?,
quiet: args.quiet?, quiet: args.quiet?,

View File

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

View File

@ -67,7 +67,7 @@ class Keg
binary_executable_or_library_files.each do |file| binary_executable_or_library_files.each do |file|
odebug "Extracting symbols #{file}" odebug "Extracting symbols #{file}"
result = system_command("dsymutil", args: [file]) result = system_command("dsymutil", args: [file], print_stderr: false)
next if result.success? next if result.success?
# If it fails again, error out # 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 # Yields |self,staging| with current working directory set to the uncompressed tarball
# where staging is a {Mktemp} staging context. # where staging is a {Mktemp} staging context.
# @private # @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 @prefix_returns_versioned_prefix = true
active_spec.fetch if fetch active_spec.fetch if fetch
stage(interactive: interactive) do |staging| stage(interactive: interactive) do |staging|
staging.retain! if keep_tmp staging.retain! if keep_tmp || debug_symbols
prepare_patches prepare_patches
fetch_patches if fetch fetch_patches if fetch

View File

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

View File

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

View File

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

View File

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