sanity: Add sanity test for 'bad' gcc installs on ubuntu 24.04

Installing emacs on Ubuntu 24.04 pulls in emacs-gtk which leads to libgcc-14-dev
despite gcc being 13. This breaks libcxx-native and compiler-rt-native builds.
We've tried various ways of addressing this buit they don't work. Instead, detect
this situation and tell the user to either install or remove a package.

(From OE-Core rev: 087b2730bb2446ad5ea98c233e349d2787c17ff1)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2025-07-08 22:34:02 +01:00
parent 1b27784bf7
commit 0a9668e192

View File

@@ -672,6 +672,8 @@ def check_sanity_sstate_dir_change(sstate_dir, data):
return testmsg
def check_sanity_version_change(status, d):
import glob
# Sanity checks to be done when SANITY_VERSION or NATIVELSBSTRING changes
# In other words, these tests run once in a given build directory and then
# never again until the sanity version or host distribution id/version changes.
@@ -703,6 +705,11 @@ def check_sanity_version_change(status, d):
if not check_app_exists('g++', d):
missing = missing + "C++ Compiler (g++),"
# installing emacs on Ubuntu 24.04 pulls in emacs-gtk -> libgcc-14-dev despite gcc being 13
# this breaks libcxx-native and compiler-rt-native builds so tell the user to fix things
if glob.glob("/usr/lib/gcc/*/14/libgcc_s.so") and not glob.glob("/usr/lib/gcc/*/14/libstdc++.so"):
status.addresult('libgcc-14-dev is installed and not libstdc++-14-dev which will break clang native compiles. Please remove one or install the other.')
required_utilities = d.getVar('SANITY_REQUIRED_UTILITIES')
for util in required_utilities.split():