Openembedded Core Discussions
 help / color / mirror / Atom feed
* [OE-core][PATCH v2] insane.bbclass: Add test for shebang line length
@ 2020-04-14 18:20 Domarys Correa
  2020-04-15 19:00 ` Denys Dmytriyenko
  0 siblings, 1 reply; 2+ messages in thread
From: Domarys Correa @ 2020-04-14 18:20 UTC (permalink / raw)
  To: openembedded-core; +Cc: Domarys Correa

Shebang lines longer than 128 characters can give an error
depending on the operating system.
This implements a test that signals an error when locating a
faulty shebang.

YOCTO: #11053

Signed-off-by: Domarys Correa <domarys.correa@ossystems.com.br>
---
 meta/classes/insane.bbclass | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 9605ac2bae..bcb1464c91 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -34,7 +34,7 @@ ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
             split-strip packages-list pkgv-undefined var-undefined \
             version-going-backwards expanded-d invalid-chars \
             license-checksum dev-elf file-rdeps configure-unsafe \
-            configure-gettext perllocalpod \
+            configure-gettext perllocalpod shebang-size \
             "
 # Add usrmerge QA check based on distro feature
 ERROR_QA_append = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', ' usrmerge', '', d)}"
@@ -82,6 +82,29 @@ def package_qa_add_message(messages, section, new_msg):
     else:
         messages[section] = messages[section] + "\n" + new_msg
 
+QAPATHTEST[shebang-size] = "package_qa_check_shebang_size"
+def package_qa_check_shebang_size(path, name, d, elf, messages):
+    if os.path.islink(path) or elf:
+        return
+
+    try:
+        with open(path, 'rb') as f:
+            stanza = f.readline(130)
+    except IOError:
+        return
+
+    if stanza.startswith(b'#!'):
+        #Shebang not found
+        try:
+            stanza = stanza.decode("utf-8")
+        except UnicodeDecodeError:
+            #If it is not a text file, it is not a script
+            return
+
+        if len(stanza) > 129:
+            package_qa_add_message(messages, "shebang-size", "%s: %s maximum shebang size exceeded, the maximum size is 128." % (name, package_qa_clean_path(path, d)))
+            return
+
 QAPATHTEST[libexec] = "package_qa_check_libexec"
 def package_qa_check_libexec(path,name, d, elf, messages):
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [OE-core][PATCH v2] insane.bbclass: Add test for shebang line length
  2020-04-14 18:20 [OE-core][PATCH v2] insane.bbclass: Add test for shebang line length Domarys Correa
@ 2020-04-15 19:00 ` Denys Dmytriyenko
  0 siblings, 0 replies; 2+ messages in thread
From: Denys Dmytriyenko @ 2020-04-15 19:00 UTC (permalink / raw)
  To: Domarys Correa; +Cc: openembedded-core

On Tue, Apr 14, 2020 at 03:20:20PM -0300, Domarys Correa wrote:
> Shebang lines longer than 128 characters can give an error
> depending on the operating system.
> This implements a test that signals an error when locating a
> faulty shebang.
> 
> YOCTO: #11053
> 
> Signed-off-by: Domarys Correa <domarys.correa@ossystems.com.br>
> ---

What are the changes from v1? Please mention briefly here to help with reviews.


>  meta/classes/insane.bbclass | 25 ++++++++++++++++++++++++-
>  1 file changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
> index 9605ac2bae..bcb1464c91 100644
> --- a/meta/classes/insane.bbclass
> +++ b/meta/classes/insane.bbclass
> @@ -34,7 +34,7 @@ ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
>              split-strip packages-list pkgv-undefined var-undefined \
>              version-going-backwards expanded-d invalid-chars \
>              license-checksum dev-elf file-rdeps configure-unsafe \
> -            configure-gettext perllocalpod \
> +            configure-gettext perllocalpod shebang-size \
>              "
>  # Add usrmerge QA check based on distro feature
>  ERROR_QA_append = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', ' usrmerge', '', d)}"
> @@ -82,6 +82,29 @@ def package_qa_add_message(messages, section, new_msg):
>      else:
>          messages[section] = messages[section] + "\n" + new_msg
>  
> +QAPATHTEST[shebang-size] = "package_qa_check_shebang_size"
> +def package_qa_check_shebang_size(path, name, d, elf, messages):
> +    if os.path.islink(path) or elf:
> +        return
> +
> +    try:
> +        with open(path, 'rb') as f:
> +            stanza = f.readline(130)
> +    except IOError:
> +        return
> +
> +    if stanza.startswith(b'#!'):
> +        #Shebang not found
> +        try:
> +            stanza = stanza.decode("utf-8")
> +        except UnicodeDecodeError:
> +            #If it is not a text file, it is not a script
> +            return
> +
> +        if len(stanza) > 129:
> +            package_qa_add_message(messages, "shebang-size", "%s: %s maximum shebang size exceeded, the maximum size is 128." % (name, package_qa_clean_path(path, d)))
> +            return
> +
>  QAPATHTEST[libexec] = "package_qa_check_libexec"
>  def package_qa_check_libexec(path,name, d, elf, messages):
>  
> -- 
> 2.17.1
> 

> 


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-04-15 19:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-14 18:20 [OE-core][PATCH v2] insane.bbclass: Add test for shebang line length Domarys Correa
2020-04-15 19:00 ` Denys Dmytriyenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox