mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 13:29:49 +00:00
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 (From OE-Core rev: 9ed54437b00aed1d41993f7658820d8adfb09282) Signed-off-by: Domarys Correa <domarys.correa@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
df9e772bc7
commit
72a1526fd9
@@ -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 \
|
split-strip packages-list pkgv-undefined var-undefined \
|
||||||
version-going-backwards expanded-d invalid-chars \
|
version-going-backwards expanded-d invalid-chars \
|
||||||
license-checksum dev-elf file-rdeps configure-unsafe \
|
license-checksum dev-elf file-rdeps configure-unsafe \
|
||||||
configure-gettext perllocalpod \
|
configure-gettext perllocalpod shebang-size \
|
||||||
"
|
"
|
||||||
# Add usrmerge QA check based on distro feature
|
# Add usrmerge QA check based on distro feature
|
||||||
ERROR_QA_append = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', ' usrmerge', '', d)}"
|
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:
|
else:
|
||||||
messages[section] = messages[section] + "\n" + new_msg
|
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"
|
QAPATHTEST[libexec] = "package_qa_check_libexec"
|
||||||
def package_qa_check_libexec(path,name, d, elf, messages):
|
def package_qa_check_libexec(path,name, d, elf, messages):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user