Skip to content

Commit

Permalink
Merge pull request #13631 from carlocab/gcc-rpaths
Browse files Browse the repository at this point in the history
keg_relocate (linux): prepend `gcc/lib/current` to `RPATH` when needed
  • Loading branch information
carlocab authored Aug 2, 2022
2 parents 4baff3e + 1c0eac7 commit 716136b
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions Library/Homebrew/extend/os/linux/keg_relocate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,18 @@ def change_rpath(file, old_prefix, new_prefix)
lib_path = "#{new_prefix}/lib"
rpath << lib_path unless rpath.include? lib_path

# Add GCC's lib directory (as of GCC 12+) to RPATH when there is existing linkage.
# This fixes linkage for newly-poured bottles.
if !name.match?(Version.formula_optionally_versioned_regex(:gcc)) &&
rpath.any? { |rp| rp.match?(%r{lib/gcc/\d+$}) }
# TODO: Replace with
# rpath.map! { |path| path = path.sub(%r{lib/gcc/\d+$}, "lib/gcc/current") }
# when
# 1. Homebrew/homebrew-core#106755 is merged
# 2. No formula has a runtime dependency on a versioned GCC (see `envoy.rb`)
rpath.prepend HOMEBREW_PREFIX/"opt/gcc/lib/gcc/current"
end

rpath.join(":")
end
updated[:rpath] = new_rpath if old_rpath != new_rpath
Expand Down

0 comments on commit 716136b

Please sign in to comment.