From 0ddac246e198d37fcab80f2aeb75b333141494d2 Mon Sep 17 00:00:00 2001 From: Christos Gavros Date: Sun, 26 Jan 2025 11:02:25 +0100 Subject: sanity: Add test for functional c++ toolchain Users reported issues caused by missing the right libstdc++-version-dev. A new function 'check_cpp_toolchain' added in sanity.bbclass to test linking libstdc++ [YOCTO #15712] (From OE-Core rev: 611c1a26212dfbfe8d0640d9fefe5df49f7b69b8) Signed-off-by: Christos Gavros Signed-off-by: Richard Purdie --- meta/classes-global/sanity.bbclass | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass index 7b8a497d5a..66693fc9b9 100644 --- a/meta/classes-global/sanity.bbclass +++ b/meta/classes-global/sanity.bbclass @@ -602,6 +602,28 @@ def drop_v14_cross_builds(d): bb.utils.remove(stamp + "*") bb.utils.remove(workdir, recurse = True) +def check_cpp_toolchain(d): + """ + it checks if the c++ compiling and linking to libstdc++ works properly in the native system + """ + import shlex + import subprocess + + cpp_code = """ + #include + int main() { + std::cout << "Hello, World!" << std::endl; + return 0; + } + """ + + cmd = shlex.split(d.getVar("BUILD_CXX")) + ["-x", "c++","-", "-o", "/dev/null", "-lstdc++"] + try: + subprocess.run(cmd, input=cpp_code, capture_output=True, text=True, check=True) + return None + except subprocess.CalledProcessError as e: + return f"An unexpected issue occurred during the C++ toolchain check: {str(e)}" + def sanity_handle_abichanges(status, d): # # Check the 'ABI' of TMPDIR @@ -770,6 +792,9 @@ def check_sanity_version_change(status, d): # macOS with default HFS+ file system) status.addresult(check_case_sensitive(tmpdir, "TMPDIR")) + # Check if linking with lstdc++ is failing + status.addresult(check_cpp_toolchain(d)) + def sanity_check_locale(d): """ Currently bitbake switches locale to en_US.UTF-8 so check that this locale actually exists. -- cgit v1.2.3-54-g00ecf