Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 882145 - www-client/chromium requires libunwind on ppc64 but does not link against it
Summary: www-client/chromium requires libunwind on ppc64 but does not link against it
Status: UNCONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: PPC64 Linux
: Normal normal (vote)
Assignee: Chromium Project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-11-20 11:55 UTC by darkbasic
Modified: 2022-11-22 17:10 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description darkbasic 2022-11-20 11:55:24 UTC
When compiling chromium on ppc64 it runs the ./generate_gni.sh script: https://github.com/gentoo/gentoo/blob/master/www-client/chromium/chromium-107.0.5304.87.ebuild#L634

According to the wiki when compiling with clang (which is necessary unless you want it to be dead slow) you will force libunwind usage: https://wiki.gentoo.org/wiki/Chromium#Clang

talos2 ~ # cat /etc/portage/env/compiler-clang
LDFLAGS="${LDFLAGS} -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed"

# Hardening
_HARDENING_FLAGS="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
CFLAGS="${CFLAGS} ${_HARDENING_FLAGS}"
CXXFLAGS="${CXXFLAGS} ${_HARDENING_FLAGS}"
LDFLAGS="${LDFLAGS} -Wl,-z,relro,-z,now"

CC="clang"
CXX="clang++"
AR="llvm-ar"
NM="llvm-nm"
RANLIB="llvm-ranlib"


talos2 ~ # cat /etc/portage/env/clang-chromium 
# Optionally, add these to EXTRA_GN:
# - thin_lto_enable_optimizations=true 
# - use_thin_lto=true
# - is_cfi=true 
EXTRA_GN="use_lld=true is_clang=true clang_use_chrome_plugins=false" 
#
# Needed with GCC 11
CHROMIUM_FORCE_LIBCXX=yes

Unlike mesa, when compiling with clang chromium won't link against libunwind/llvm-libunwind, but it will still be required to run the ./generate_gni.sh script otherwise it fails: https://bugs.gentoo.org/669748#c45

Initially I didn't know why it was failing, but I've now tracked it down to the lack of libunwind/llvm-libunwind: emerging it fixes the issue.

What I did notice before is that even though ./generate_gni.sh was failing, removing || die and letting it fail was not a problem and the build would succeed anyway.

I'm not sure what would be the beast way to proceed: actually libunwind/llvm-libunwind is necessary only on ppc64 and only if you compile it with clang, but it doesn't link against it (maybe because -custom-cflags prevents it from being used?). Unfortunately ./generate_gni.sh still needs libunwind, but you can let it fail and it won't matter anyway.