Message ID | 20250219094239.3283023-2-sofiane.hamam@smile.fr |
---|---|
State | Accepted, archived |
Commit | 2b3be97a0d0d60d026786a4465b24b6f6752ba32 |
Headers | show |
Series | sanity: Check for non ascii chars in TOPDIR | expand |
On Wed, 2025-02-19 at 10:42 +0100, Sofiane HAMAM via lists.openembedded.org wrote: > Some modules (like Perl's MakeMaker) do not support non ASCII > characters in build folder's path, which leads to task failures. > A sanity check is added to warn the user. > > Fixes [YOCTO #15764] > > Signed-off-by: Sofiane HAMAM <sofiane.hamam@smile.fr> > --- > meta/classes-global/sanity.bbclass | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass > index 66693fc9b9..5d33ef9d73 100644 > --- a/meta/classes-global/sanity.bbclass > +++ b/meta/classes-global/sanity.bbclass > @@ -299,6 +299,11 @@ def check_path_length(filepath, pathname, limit): > return "The length of %s is longer than %s, this would cause unexpected errors, please use a shorter path.\n" % (pathname, limit) > return "" > > +def check_non_ascii(filepath, pathname): > + if(not filepath.isascii()): > + return "Non-ASCII character(s) in %s path (\"%s\") detected. This would cause unexpected errors, please use a ASCII-only path.\n" % (pathname, filepath) Thanks for the patch! I'd rephrase the second sentence to "This would cause build failures as we build software that doesn't support this." I'd also leave a comment in the code against that check which says that it is Perl MakeMaker that has this issue, just so we know in future why we added this. Cheers, Richard
diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass index 66693fc9b9..5d33ef9d73 100644 --- a/meta/classes-global/sanity.bbclass +++ b/meta/classes-global/sanity.bbclass @@ -299,6 +299,11 @@ def check_path_length(filepath, pathname, limit): return "The length of %s is longer than %s, this would cause unexpected errors, please use a shorter path.\n" % (pathname, limit) return "" +def check_non_ascii(filepath, pathname): + if(not filepath.isascii()): + return "Non-ASCII character(s) in %s path (\"%s\") detected. This would cause unexpected errors, please use a ASCII-only path.\n" % (pathname, filepath) + return "" + def get_filesystem_id(path): import subprocess try: @@ -719,6 +724,7 @@ def check_sanity_version_change(status, d): # Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS) import stat tmpdir = d.getVar('TMPDIR') + topdir = d.getVar('TOPDIR') status.addresult(check_create_long_filename(tmpdir, "TMPDIR")) tmpdirmode = os.stat(tmpdir).st_mode if (tmpdirmode & stat.S_ISGID): @@ -785,6 +791,9 @@ def check_sanity_version_change(status, d): # The length of TMPDIR can't be longer than 400 status.addresult(check_path_length(tmpdir, "TMPDIR", 400)) + # check that TOPDIR does not contain non ascii chars + status.addresult(check_non_ascii(topdir, "TOPDIR")) + # Check that TMPDIR isn't located on nfs status.addresult(check_not_nfs(tmpdir, "TMPDIR"))
Some modules (like Perl's MakeMaker) do not support non ASCII characters in build folder's path, which leads to task failures. A sanity check is added to warn the user. Fixes [YOCTO #15764] Signed-off-by: Sofiane HAMAM <sofiane.hamam@smile.fr> --- meta/classes-global/sanity.bbclass | 9 +++++++++ 1 file changed, 9 insertions(+)