From: Christos Gavros Date: Sun, 26 Jan 2025 10:02:25 +0000 (+0100) Subject: sanity: Add test for functional c++ toolchain X-Git-Tag: uninative-4.7~267 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=611c1a26212dfbfe8d0640d9fefe5df49f7b69b8;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git 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] Signed-off-by: Christos Gavros Signed-off-by: Richard Purdie --- diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass index 7b8a497d5ab..66693fc9b9e 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.