Oops forgot something
Le 15/01/2025 à 20:39, Christos Gavros via lists.openembedded.org a écrit :
> Users reported issues caused by missing the right libstdc++-version-dev.
> A new function 'check_c_toolchain' added in sanity.bbclass to test linking
> libstdc++
> Fixes [YOCTO #<15712>]
>
> Signed-off-by: Christos Gavros <[email protected]>
> ---
> v1->v2
> * use shortlog
> * drop the meta-oe prefix
> * fix format for bug reference
> * change function description including libstdc++
> * use BUILD_CC instead of specific compiler
> * lines in comments are removed
> * patch message less than 200 char
> * bb.fatal is removed
> * follow pattern of other functions in class
> * use docstring instead of # in functions description
> * make the print out message more clear
> * fix comment style where the function is called
> * change "hello world" from C++ to C program
> * use gcc instead of g++
> ---
> meta/classes-global/sanity.bbclass | 40 ++++++++++++++++++++++++++++++
> 1 file changed, 40 insertions(+)
>
> diff --git a/meta/classes-global/sanity.bbclass
> b/meta/classes-global/sanity.bbclass
> index 7b8a497d5a..3a5a1f5d66 100644
> --- a/meta/classes-global/sanity.bbclass
> +++ b/meta/classes-global/sanity.bbclass
> @@ -780,6 +780,43 @@ def sanity_check_locale(d):
> except locale.Error:
> raise_sanity_error("Your system needs to support the en_US.UTF-8
> locale.", d)
>
> +def check_c_toolchain(d):
> + """
> + it checks if the c compiling and linking to libstdc++ works properly in
> the native system
> + """
> + import os
> + import subprocess
> + from tempfile import NamedTemporaryFile
> +
^^^^
I forgot to tell you that you have whitespaces here
> + try:
> + with NamedTemporaryFile(delete=False, suffix=".c") as c_file:
> + c_code = """
> + #include <stdio.h>
> + int main() {
> + printf(\"Hello, World!\\n\");
> + return 0;
> + }
> + """
> + c_file.write(c_code.encode('utf-8'))
> + c_file_name = c_file.name
> +
> + build_cc = d.getVar('BUILD_CC').strip()
> + output_binary = c_file_name + ".out"
> + compile_command = [build_cc, c_file_name, '-o',
> output_binary,'-lstdc++']
> + result = subprocess.run(compile_command, stdout=subprocess.PIPE,
> stderr=subprocess.PIPE)
> +
> + if result.returncode == 0:
> + return None
> + else:
> + return f"C toolchain check failed to link against libstdc++.
> Please ensure libstdc++ and headers are installed.
> Error:\n{result.stderr.decode()}"
> + except Exception as e:
> + return f"An unexpected issue occurred during the C toolchain check:
> {str(e)}"
> + finally:
> + if c_file_name and os.path.exists(c_file_name):
> + os.remove(c_file_name)
> + if output_binary and os.path.exists(output_binary):
> + os.remove(output_binary)
> +
> def check_sanity_everybuild(status, d):
> import os, stat
> # Sanity tests which test the users environment so need to run at each
> build (or are so cheap
> @@ -976,6 +1013,9 @@ def check_sanity_everybuild(status, d):
> if '/dash' not in real_sh and '/bash' not in real_sh:
> status.addresult("Error, /bin/sh links to %s, must be dash or
> bash\n" % real_sh)
>
> + # Check if linking with lstdc++ is failing
and here ----------------------------------------^
> + status.addresult(check_c_toolchain(d))
> +
> def check_sanity(sanity_data):
> class SanityStatus(object):
> def __init__(self):
>
>
>
>
>
--
Yoann Congal
Smile ECS - Tech Expert
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#209929):
https://lists.openembedded.org/g/openembedded-core/message/209929
Mute This Topic: https://lists.openembedded.org/mt/110634330/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-