diff mbox series

sanity: Check for non ascii chars in TOPDIR

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

Commit Message

Sofiane HAMAM Feb. 19, 2025, 9:42 a.m. UTC
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(+)

Comments

Richard Purdie Feb. 19, 2025, 10:08 a.m. UTC | #1
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 mbox series

Patch

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"))