@@ -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 <iostream>
+ 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.
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++ Fixes [YOCTO #15712] Signed-off-by: Christos Gavros <gavrosc@yahoo.com> --- v4->v5 * change function name * change shortlog * use BUILD_CXX instead of BUILD_CC * testing linkage with C++ instead of C * change the way of testing by using stdin --- meta/classes-global/sanity.bbclass | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)