diff options
author | Domarys Correa <domarys.correa@ossystems.com.br> | 2020-04-14 15:20:20 -0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-04-24 14:07:54 +0100 |
commit | e694b09cacf8eb0b7e189f449816d3d6a337cb37 (patch) | |
tree | 3b45bfdaefbfbe7253b329c9fe102397f4f27a01 /meta/classes/insane.bbclass | |
parent | e9b8c194636cb5505774a2a71bf54450580dd5b8 (diff) | |
download | openembedded-core-contrib-e694b09cacf8eb0b7e189f449816d3d6a337cb37.tar.gz |
insane.bbclass: Add test for shebang line length
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>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/insane.bbclass')
-rw-r--r-- | meta/classes/insane.bbclass | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index 478240fa57..7fc8f33a98 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -35,7 +35,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)}" @@ -83,6 +83,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): |