python: Format trivial files where only newlines were missing

Apply formatting on files that only needed adding newlines.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
This commit is contained in:
Pieter De Gendt 2024-11-21 11:49:59 +01:00 committed by Henrik Brix Andersen
commit f05deb1aa4
24 changed files with 63 additions and 24 deletions

View file

@ -2089,7 +2089,6 @@ exclude = [
"./samples/modules/tflite-micro/magic_wand/train/train.py", "./samples/modules/tflite-micro/magic_wand/train/train.py",
"./samples/modules/tflite-micro/magic_wand/train/train_test.py", "./samples/modules/tflite-micro/magic_wand/train/train_test.py",
"./samples/modules/thrift/hello/client/hello_client.py", "./samples/modules/thrift/hello/client/hello_client.py",
"./samples/net/cellular_modem/server/te.py",
"./samples/net/cellular_modem/server/te_udp_echo.py", "./samples/net/cellular_modem/server/te_udp_echo.py",
"./samples/net/cellular_modem/server/te_udp_receive.py", "./samples/net/cellular_modem/server/te_udp_receive.py",
"./samples/net/cloud/aws_iot_mqtt/src/creds/convert_keys.py", "./samples/net/cloud/aws_iot_mqtt/src/creds/convert_keys.py",
@ -2100,7 +2099,6 @@ exclude = [
"./samples/subsys/zbus/remote_mock/remote_mock.py", "./samples/subsys/zbus/remote_mock/remote_mock.py",
"./scripts/build/check_init_priorities.py", "./scripts/build/check_init_priorities.py",
"./scripts/build/check_init_priorities_test.py", "./scripts/build/check_init_priorities_test.py",
"./scripts/build/dir_is_writeable.py",
"./scripts/build/elf_parser.py", "./scripts/build/elf_parser.py",
"./scripts/build/file2hex.py", "./scripts/build/file2hex.py",
"./scripts/build/gen_app_partitions.py", "./scripts/build/gen_app_partitions.py",
@ -2120,13 +2118,11 @@ exclude = [
"./scripts/build/gen_syscalls.py", "./scripts/build/gen_syscalls.py",
"./scripts/build/llext_inject_slids.py", "./scripts/build/llext_inject_slids.py",
"./scripts/build/llext_prepare_exptab.py", "./scripts/build/llext_prepare_exptab.py",
"./scripts/build/llext_slidlib.py",
"./scripts/build/mergehex.py", "./scripts/build/mergehex.py",
"./scripts/build/parse_syscalls.py", "./scripts/build/parse_syscalls.py",
"./scripts/build/process_gperf.py", "./scripts/build/process_gperf.py",
"./scripts/build/subfolder_list.py", "./scripts/build/subfolder_list.py",
"./scripts/build/uf2conv.py", "./scripts/build/uf2conv.py",
"./scripts/build/user_wordsize.py",
"./scripts/check_maintainers.py", "./scripts/check_maintainers.py",
"./scripts/ci/check_compliance.py", "./scripts/ci/check_compliance.py",
"./scripts/ci/coverage/coverage_analysis.py", "./scripts/ci/coverage/coverage_analysis.py",
@ -2140,7 +2136,6 @@ exclude = [
"./scripts/coredump/coredump_parser/elf_parser.py", "./scripts/coredump/coredump_parser/elf_parser.py",
"./scripts/coredump/coredump_parser/log_parser.py", "./scripts/coredump/coredump_parser/log_parser.py",
"./scripts/coredump/coredump_serial_log_parser.py", "./scripts/coredump/coredump_serial_log_parser.py",
"./scripts/coredump/gdbstubs/__init__.py",
"./scripts/coredump/gdbstubs/arch/arm64.py", "./scripts/coredump/gdbstubs/arch/arm64.py",
"./scripts/coredump/gdbstubs/arch/arm_cortex_m.py", "./scripts/coredump/gdbstubs/arch/arm_cortex_m.py",
"./scripts/coredump/gdbstubs/arch/risc_v.py", "./scripts/coredump/gdbstubs/arch/risc_v.py",
@ -2152,7 +2147,6 @@ exclude = [
"./scripts/dts/gen_driver_kconfig_dts.py", "./scripts/dts/gen_driver_kconfig_dts.py",
"./scripts/dts/gen_dts_cmake.py", "./scripts/dts/gen_dts_cmake.py",
"./scripts/dts/gen_edt.py", "./scripts/dts/gen_edt.py",
"./scripts/dts/python-devicetree/setup.py",
"./scripts/dts/python-devicetree/src/devicetree/_private.py", "./scripts/dts/python-devicetree/src/devicetree/_private.py",
"./scripts/dts/python-devicetree/src/devicetree/dtlib.py", "./scripts/dts/python-devicetree/src/devicetree/dtlib.py",
"./scripts/dts/python-devicetree/src/devicetree/edtlib.py", "./scripts/dts/python-devicetree/src/devicetree/edtlib.py",
@ -2189,7 +2183,6 @@ exclude = [
"./scripts/logging/dictionary/dictionary_parser/utils.py", "./scripts/logging/dictionary/dictionary_parser/utils.py",
"./scripts/logging/dictionary/log_parser.py", "./scripts/logging/dictionary/log_parser.py",
"./scripts/logging/dictionary/log_parser_uart.py", "./scripts/logging/dictionary/log_parser_uart.py",
"./scripts/logging/dictionary/parserlib.py",
"./scripts/make_bugs_pickle.py", "./scripts/make_bugs_pickle.py",
"./scripts/net/enumerate_http_status.py", "./scripts/net/enumerate_http_status.py",
"./scripts/profiling/stackcollapse.py", "./scripts/profiling/stackcollapse.py",
@ -2210,8 +2203,6 @@ exclude = [
"./scripts/pylib/pytest-twister-harness/tests/device/qemu_adapter_test.py", "./scripts/pylib/pytest-twister-harness/tests/device/qemu_adapter_test.py",
"./scripts/pylib/pytest-twister-harness/tests/helpers/shell_test.py", "./scripts/pylib/pytest-twister-harness/tests/helpers/shell_test.py",
"./scripts/pylib/pytest-twister-harness/tests/plugin_test.py", "./scripts/pylib/pytest-twister-harness/tests/plugin_test.py",
"./scripts/pylib/pytest-twister-harness/tests/resources/mock_script.py",
"./scripts/pylib/pytest-twister-harness/tests/resources/shell_simulator.py",
"./scripts/pylib/twister/expr_parser.py", "./scripts/pylib/twister/expr_parser.py",
"./scripts/pylib/twister/scl.py", "./scripts/pylib/twister/scl.py",
"./scripts/pylib/twister/twisterlib/cmakecache.py", "./scripts/pylib/twister/twisterlib/cmakecache.py",
@ -2224,7 +2215,6 @@ exclude = [
"./scripts/pylib/twister/twisterlib/harness.py", "./scripts/pylib/twister/twisterlib/harness.py",
"./scripts/pylib/twister/twisterlib/jobserver.py", "./scripts/pylib/twister/twisterlib/jobserver.py",
"./scripts/pylib/twister/twisterlib/log_helper.py", "./scripts/pylib/twister/twisterlib/log_helper.py",
"./scripts/pylib/twister/twisterlib/mixins.py",
"./scripts/pylib/twister/twisterlib/package.py", "./scripts/pylib/twister/twisterlib/package.py",
"./scripts/pylib/twister/twisterlib/platform.py", "./scripts/pylib/twister/twisterlib/platform.py",
"./scripts/pylib/twister/twisterlib/quarantine.py", "./scripts/pylib/twister/twisterlib/quarantine.py",
@ -2247,7 +2237,6 @@ exclude = [
"./scripts/tests/twister/pytest_integration/test_harness_pytest.py", "./scripts/tests/twister/pytest_integration/test_harness_pytest.py",
"./scripts/tests/twister/test_cmakecache.py", "./scripts/tests/twister/test_cmakecache.py",
"./scripts/tests/twister/test_config_parser.py", "./scripts/tests/twister/test_config_parser.py",
"./scripts/tests/twister/test_data/mixins/test_to_ignore.py",
"./scripts/tests/twister/test_environment.py", "./scripts/tests/twister/test_environment.py",
"./scripts/tests/twister/test_errors.py", "./scripts/tests/twister/test_errors.py",
"./scripts/tests/twister/test_handlers.py", "./scripts/tests/twister/test_handlers.py",
@ -2373,20 +2362,12 @@ exclude = [
"./scripts/west_commands/tests/test_stm32cubeprogrammer.py", "./scripts/west_commands/tests/test_stm32cubeprogrammer.py",
"./scripts/west_commands/tests/test_stm32flash.py", "./scripts/west_commands/tests/test_stm32flash.py",
"./scripts/west_commands/tests/test_twister.py", "./scripts/west_commands/tests/test_twister.py",
"./scripts/west_commands/tests/test_xsdb.py",
"./scripts/west_commands/twister_cmd.py", "./scripts/west_commands/twister_cmd.py",
"./scripts/west_commands/zcmake.py", "./scripts/west_commands/zcmake.py",
"./scripts/west_commands/zephyr_ext_common.py", "./scripts/west_commands/zephyr_ext_common.py",
"./scripts/west_commands/zspdx/cmakecache.py",
"./scripts/west_commands/zspdx/cmakefileapi.py", "./scripts/west_commands/zspdx/cmakefileapi.py",
"./scripts/west_commands/zspdx/cmakefileapijson.py", "./scripts/west_commands/zspdx/cmakefileapijson.py",
"./scripts/west_commands/zspdx/datatypes.py",
"./scripts/west_commands/zspdx/getincludes.py",
"./scripts/west_commands/zspdx/licenses.py", "./scripts/west_commands/zspdx/licenses.py",
"./scripts/west_commands/zspdx/sbom.py",
"./scripts/west_commands/zspdx/scanner.py",
"./scripts/west_commands/zspdx/spdxids.py",
"./scripts/west_commands/zspdx/util.py",
"./scripts/west_commands/zspdx/walker.py", "./scripts/west_commands/zspdx/walker.py",
"./scripts/west_commands/zspdx/writer.py", "./scripts/west_commands/zspdx/writer.py",
"./scripts/zephyr_module.py", "./scripts/zephyr_module.py",
@ -2409,7 +2390,6 @@ exclude = [
"./tests/drivers/can/host/pytest/can_shell.py", "./tests/drivers/can/host/pytest/can_shell.py",
"./tests/drivers/can/host/pytest/conftest.py", "./tests/drivers/can/host/pytest/conftest.py",
"./tests/drivers/can/host/pytest/test_can.py", "./tests/drivers/can/host/pytest/test_can.py",
"./tests/kernel/timer/timer_behavior/pytest/conftest.py",
"./tests/kernel/timer/timer_behavior/pytest/saleae_logic2.py", "./tests/kernel/timer/timer_behavior/pytest/saleae_logic2.py",
"./tests/kernel/timer/timer_behavior/pytest/test_timer.py", "./tests/kernel/timer/timer_behavior/pytest/test_timer.py",
"./tests/misc/check_init_priorities/validate_check_init_priorities_output.py", "./tests/misc/check_init_priorities/validate_check_init_priorities_output.py",
@ -2421,12 +2401,9 @@ exclude = [
"./tests/net/lib/lwm2m/interop/pytest/test_lwm2m.py", "./tests/net/lib/lwm2m/interop/pytest/test_lwm2m.py",
"./tests/net/lib/lwm2m/interop/pytest/test_nosec.py", "./tests/net/lib/lwm2m/interop/pytest/test_nosec.py",
"./tests/net/lib/lwm2m/interop/pytest/test_portfolio.py", "./tests/net/lib/lwm2m/interop/pytest/test_portfolio.py",
"./tests/net/socket/tls_configurations/pytest/conftest.py",
"./tests/net/socket/tls_configurations/pytest/test_app_vs_openssl.py", "./tests/net/socket/tls_configurations/pytest/test_app_vs_openssl.py",
"./tests/net/socket/udp/generate-c-string.py", "./tests/net/socket/udp/generate-c-string.py",
"./tests/subsys/debug/gdbstub/pytest/conftest.py",
"./tests/subsys/debug/gdbstub/pytest/test_gdbstub.py", "./tests/subsys/debug/gdbstub/pytest/test_gdbstub.py",
"./tests/subsys/logging/dictionary/pytest/conftest.py",
"./tests/subsys/logging/dictionary/pytest/test_logging_dictionary.py", "./tests/subsys/logging/dictionary/pytest/test_logging_dictionary.py",
"./tests/ztest/ztest_param/pytest/test_parameters.py", "./tests/ztest/ztest_param/pytest/test_parameters.py",
] ]

View file

@ -13,10 +13,12 @@ udp_receive.start()
print("started") print("started")
def terminate_handler(a, b): def terminate_handler(a, b):
udp_echo.stop() udp_echo.stop()
udp_receive.stop() udp_receive.stop()
print("stopped") print("stopped")
signal.signal(signal.SIGTERM, terminate_handler) signal.signal(signal.SIGTERM, terminate_handler)
signal.signal(signal.SIGINT, terminate_handler) signal.signal(signal.SIGINT, terminate_handler)

View file

@ -2,10 +2,12 @@
import os import os
import sys import sys
def main(): def main():
is_writeable = os.access(sys.argv[1], os.W_OK) is_writeable = os.access(sys.argv[1], os.W_OK)
return_code = int(not is_writeable) return_code = int(not is_writeable)
sys.exit(return_code) sys.exit(return_code)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View file

@ -25,6 +25,7 @@ IMPLEMENTATION NOTES:
from hashlib import sha256 from hashlib import sha256
def generate_slid(symbol_name: str, slid_size: int) -> int: def generate_slid(symbol_name: str, slid_size: int) -> int:
""" """
Generates the Symbol Link Identifier (SLID) for a symbol. Generates the Symbol Link Identifier (SLID) for a symbol.
@ -40,6 +41,7 @@ def generate_slid(symbol_name: str, slid_size: int) -> int:
hash = m.digest() hash = m.digest()
return int.from_bytes(hash[0:slid_size], byteorder='big', signed=False) return int.from_bytes(hash[0:slid_size], byteorder='big', signed=False)
def format_slid(slid: int, slid_size: int) -> str: def format_slid(slid: int, slid_size: int) -> str:
if slid_size == 4: if slid_size == 4:
fmt = f"0x{slid:08X}" fmt = f"0x{slid:08X}"
@ -47,6 +49,7 @@ def format_slid(slid: int, slid_size: int) -> str:
fmt = f"0x{slid:016X}" fmt = f"0x{slid:016X}"
return fmt return fmt
def repl(): def repl():
while True: while True:
sym_name = input("Symbol name? ") sym_name = input("Symbol name? ")
@ -56,6 +59,7 @@ def repl():
print(f" 64-bit SLID for '{sym_name}': {format_slid(slid64, 8)}") print(f" 64-bit SLID for '{sym_name}': {format_slid(slid64, 8)}")
print() print()
if __name__ == "__main__": if __name__ == "__main__":
print("LLEXT SLID calculation REPL") print("LLEXT SLID calculation REPL")
print("Press ^C to exit.") print("Press ^C to exit.")

View file

@ -4,9 +4,11 @@
import struct import struct
import sys import sys
def main(): def main():
print(struct.calcsize("P") * 8) print(struct.calcsize("P") * 8)
sys.exit(0) sys.exit(0)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View file

@ -11,6 +11,7 @@ from gdbstubs.arch.risc_v import GdbStub_RISC_V
from gdbstubs.arch.xtensa import GdbStub_Xtensa from gdbstubs.arch.xtensa import GdbStub_Xtensa
from gdbstubs.arch.arm64 import GdbStub_ARM64 from gdbstubs.arch.arm64 import GdbStub_ARM64
class TgtCode: class TgtCode:
UNKNOWN = 0 UNKNOWN = 0
X86 = 1 X86 = 1
@ -20,6 +21,7 @@ class TgtCode:
XTENSA = 5 XTENSA = 5
ARM64 = 6 ARM64 = 6
def get_gdbstub(logfile, elffile): def get_gdbstub(logfile, elffile):
stub = None stub = None

View file

@ -18,7 +18,6 @@ setuptools.setup(
# TBD, just use these for now. # TBD, just use these for now.
author='Zephyr Project', author='Zephyr Project',
author_email='devel@lists.zephyrproject.org', author_email='devel@lists.zephyrproject.org',
name='devicetree', name='devicetree',
version=version, version=version,
description='Python libraries for devicetree', description='Python libraries for devicetree',

View file

@ -11,12 +11,14 @@ Parser library for Dictionary-based Logging
This library along with dictionary_parser converts the This library along with dictionary_parser converts the
input binary data to the log using log database. input binary data to the log using log database.
""" """
import sys import sys
import logging import logging
import dictionary_parser import dictionary_parser
from dictionary_parser.log_database import LogDatabase from dictionary_parser.log_database import LogDatabase
def parser(logdata, dbfile, logger): def parser(logdata, dbfile, logger):
"""function of serial parser""" """function of serial parser"""
# Read from database file # Read from database file

View file

@ -6,6 +6,7 @@
""" """
Simply mock for bash script to use with unit tests. Simply mock for bash script to use with unit tests.
""" """
import sys import sys
import time import time
from argparse import ArgumentParser from argparse import ArgumentParser

View file

@ -5,6 +5,7 @@
""" """
Simple shell simulator. Simple shell simulator.
""" """
import sys import sys
from zen_of_python import zen_of_python from zen_of_python import zen_of_python

View file

@ -3,5 +3,6 @@
# Copyright (c) 2018 Intel Corporation # Copyright (c) 2018 Intel Corporation
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
class DisablePyTestCollectionMixin(object): class DisablePyTestCollectionMixin(object):
__test__ = False __test__ = False

View file

@ -1,5 +1,6 @@
from twisterlib.mixins import DisablePyTestCollectionMixin from twisterlib.mixins import DisablePyTestCollectionMixin
class TestClassToIgnore(DisablePyTestCollectionMixin): class TestClassToIgnore(DisablePyTestCollectionMixin):
def test_to_ignore(self): def test_to_ignore(self):
assert False assert False

View file

@ -41,6 +41,7 @@ TEST_CASES = [
}, },
] ]
@pytest.mark.parametrize("tc", TEST_CASES) @pytest.mark.parametrize("tc", TEST_CASES)
@patch("runners.xsdb.os.path.exists", return_value=True) @patch("runners.xsdb.os.path.exists", return_value=True)
@patch("runners.xsdb.XSDBBinaryRunner.check_call") @patch("runners.xsdb.XSDBBinaryRunner.check_call")
@ -59,6 +60,7 @@ def test_xsdbbinaryrunner_init(check_call, path_exists, tc, runner_config):
assert check_call.call_args_list == [call(tc["expected_cmd"])] assert check_call.call_args_list == [call(tc["expected_cmd"])]
@pytest.mark.parametrize("tc", TEST_CASES) @pytest.mark.parametrize("tc", TEST_CASES)
@patch("runners.xsdb.os.path.exists", return_value=True) @patch("runners.xsdb.os.path.exists", return_value=True)
@patch("runners.xsdb.XSDBBinaryRunner.check_call") @patch("runners.xsdb.XSDBBinaryRunner.check_call")

View file

@ -4,6 +4,7 @@
from west import log from west import log
# Parse a CMakeCache file and return a dict of key:value (discarding # Parse a CMakeCache file and return a dict of key:value (discarding
# type hints). # type hints).
def parseCMakeCacheFile(filePath): def parseCMakeCacheFile(filePath):

View file

@ -4,6 +4,7 @@
from enum import Enum from enum import Enum
# DocumentConfig contains settings used to configure how the SPDX Document # DocumentConfig contains settings used to configure how the SPDX Document
# should be built. # should be built.
class DocumentConfig: class DocumentConfig:
@ -20,6 +21,7 @@ class DocumentConfig:
# docs will use to refer to this one # docs will use to refer to this one
self.docRefID = "" self.docRefID = ""
# Document contains the data assembled by the SBOM builder, to be used to # Document contains the data assembled by the SBOM builder, to be used to
# create the actual SPDX Document. # create the actual SPDX Document.
class Document: class Document:
@ -56,6 +58,7 @@ class Document:
# written to disk, so that others can refer to it # written to disk, so that others can refer to it
self.myDocSHA1 = "" self.myDocSHA1 = ""
# PackageConfig contains settings used to configure how an SPDX Package should # PackageConfig contains settings used to configure how an SPDX Package should
# be built. # be built.
class PackageConfig: class PackageConfig:
@ -95,6 +98,7 @@ class PackageConfig:
# may want to note this in a Package comment field # may want to note this in a Package comment field
self.relativeBaseDir = "" self.relativeBaseDir = ""
# Package contains the data assembled by the SBOM builder, to be used to # Package contains the data assembled by the SBOM builder, to be used to
# create the actual SPDX Package. # create the actual SPDX Package.
class Package: class Package:
@ -131,6 +135,7 @@ class Package:
# If this Package was a target, which File was its main build product? # If this Package was a target, which File was its main build product?
self.targetBuildFile = None self.targetBuildFile = None
# RelationshipDataElementType defines whether a RelationshipData element # RelationshipDataElementType defines whether a RelationshipData element
# (e.g., the "owner" or the "other" element) is a File, a target Package, # (e.g., the "owner" or the "other" element) is a File, a target Package,
# a Package's ID (as other only, and only where owner type is DOCUMENT), # a Package's ID (as other only, and only where owner type is DOCUMENT),
@ -142,6 +147,7 @@ class RelationshipDataElementType(Enum):
PACKAGEID = 3 PACKAGEID = 3
DOCUMENT = 4 DOCUMENT = 4
# RelationshipData contains the pre-analysis data about a relationship between # RelationshipData contains the pre-analysis data about a relationship between
# Files and/or Packages/targets. It is eventually parsed into a corresponding # Files and/or Packages/targets. It is eventually parsed into a corresponding
# Relationship after we have organized the SPDX Package and File data. # Relationship after we have organized the SPDX Package and File data.
@ -179,6 +185,7 @@ class RelationshipData:
# from table 68 in section 11.1 of SPDX spec v2.3 # from table 68 in section 11.1 of SPDX spec v2.3
self.rlnType = "" self.rlnType = ""
# Relationship contains the post-analysis, processed data about a relationship # Relationship contains the post-analysis, processed data about a relationship
# in a form suitable for creating the actual SPDX Relationship in a particular # in a form suitable for creating the actual SPDX Relationship in a particular
# Document's context. # Document's context.
@ -198,6 +205,7 @@ class Relationship:
# from table 68 in section 11.1 of SPDX spec v2.3 # from table 68 in section 11.1 of SPDX spec v2.3
self.rlnType = "" self.rlnType = ""
# File contains the data needed to create a File element in the context of a # File contains the data needed to create a File element in the context of a
# particular SPDX Document and Package. # particular SPDX Document and Package.
class File: class File:

View file

@ -6,6 +6,7 @@ from subprocess import run, PIPE
from west import log from west import log
# Given a path to the applicable C compiler, a C source file, and the # Given a path to the applicable C compiler, a C source file, and the
# corresponding TargetCompileGroup, determine which include files would # corresponding TargetCompileGroup, determine which include files would
# be used. # be used.
@ -37,6 +38,7 @@ def getCIncludes(compilerPath, srcFile, tcg):
# response will be in cp.stderr, not cp.stdout # response will be in cp.stderr, not cp.stdout
return extractIncludes(cp.stderr) return extractIncludes(cp.stderr)
# Parse the response from the CC -E -H call, to extract the include file paths # Parse the response from the CC -E -H call, to extract the include file paths
def extractIncludes(resp): def extractIncludes(resp):
includes = set() includes = set()

View file

@ -10,6 +10,7 @@ from zspdx.walker import WalkerConfig, Walker
from zspdx.scanner import ScannerConfig, scanDocument from zspdx.scanner import ScannerConfig, scanDocument
from zspdx.writer import writeSPDX from zspdx.writer import writeSPDX
# SBOMConfig contains settings that will be passed along to the various # SBOMConfig contains settings that will be passed along to the various
# SBOM maker subcomponents. # SBOM maker subcomponents.
class SBOMConfig: class SBOMConfig:
@ -31,6 +32,7 @@ class SBOMConfig:
# should also add an SPDX document for the SDK? # should also add an SPDX document for the SDK?
self.includeSDK = False self.includeSDK = False
# create Cmake file-based API directories and query file # create Cmake file-based API directories and query file
# Arguments: # Arguments:
# 1) build_dir: build directory # 1) build_dir: build directory
@ -60,6 +62,7 @@ def setupCmakeQuery(build_dir):
cm_fd.close() cm_fd.close()
return True return True
# main entry point for SBOM maker # main entry point for SBOM maker
# Arguments: # Arguments:
# 1) cfg: SBOMConfig # 1) cfg: SBOMConfig

View file

@ -11,6 +11,7 @@ from west import log
from zspdx.licenses import LICENSES from zspdx.licenses import LICENSES
from zspdx.util import getHashes from zspdx.util import getHashes
# ScannerConfig contains settings used to configure how the SPDX # ScannerConfig contains settings used to configure how the SPDX
# Document scanning should occur. # Document scanning should occur.
class ScannerConfig: class ScannerConfig:
@ -36,6 +37,7 @@ class ScannerConfig:
# should we calculate MD5 hashes for each Package's Files? # should we calculate MD5 hashes for each Package's Files?
self.doMD5 = False self.doMD5 = False
def parseLineForExpression(line): def parseLineForExpression(line):
"""Return parsed SPDX expression if tag found in line, or None otherwise.""" """Return parsed SPDX expression if tag found in line, or None otherwise."""
p = line.partition("SPDX-License-Identifier:") p = line.partition("SPDX-License-Identifier:")
@ -47,6 +49,7 @@ def parseLineForExpression(line):
expression = expression.strip() expression = expression.strip()
return expression return expression
def getExpressionData(filePath, numLines): def getExpressionData(filePath, numLines):
""" """
Scans the specified file for the first SPDX-License-Identifier: Scans the specified file for the first SPDX-License-Identifier:
@ -77,6 +80,7 @@ def getExpressionData(filePath, numLines):
# if we get here, we didn't find an expression # if we get here, we didn't find an expression
return None return None
def splitExpression(expression): def splitExpression(expression):
""" """
Parse a license expression into its constituent identifiers. Parse a license expression into its constituent identifiers.
@ -96,6 +100,7 @@ def splitExpression(expression):
return sorted(e4) return sorted(e4)
def calculateVerificationCode(pkg): def calculateVerificationCode(pkg):
""" """
Calculate the SPDX Package Verification Code for all files in the package. Calculate the SPDX Package Verification Code for all files in the package.
@ -114,6 +119,7 @@ def calculateVerificationCode(pkg):
hSHA1.update(filelist.encode('utf-8')) hSHA1.update(filelist.encode('utf-8'))
return hSHA1.hexdigest() return hSHA1.hexdigest()
def checkLicenseValid(lic, doc): def checkLicenseValid(lic, doc):
""" """
Check whether this license ID is a valid SPDX license ID, and add it Check whether this license ID is a valid SPDX license ID, and add it
@ -126,6 +132,7 @@ def checkLicenseValid(lic, doc):
if lic not in LICENSES: if lic not in LICENSES:
doc.customLicenseIDs.add(lic) doc.customLicenseIDs.add(lic)
def getPackageLicenses(pkg): def getPackageLicenses(pkg):
""" """
Extract lists of all concluded and infoInFile licenses seen. Extract lists of all concluded and infoInFile licenses seen.
@ -143,6 +150,7 @@ def getPackageLicenses(pkg):
licsFromFiles.add(licInfo) licsFromFiles.add(licInfo)
return sorted(list(licsConcluded)), sorted(list(licsFromFiles)) return sorted(list(licsConcluded)), sorted(list(licsFromFiles))
def normalizeExpression(licsConcluded): def normalizeExpression(licsConcluded):
""" """
Combine array of license expressions into one AND'd expression, Combine array of license expressions into one AND'd expression,
@ -170,6 +178,7 @@ def normalizeExpression(licsConcluded):
revised.append(lic) revised.append(lic)
return " AND ".join(revised) return " AND ".join(revised)
def scanDocument(cfg, doc): def scanDocument(cfg, doc):
""" """
Scan for licenses and calculate hashes for all Files and Packages Scan for licenses and calculate hashes for all Files and Packages

View file

@ -4,6 +4,7 @@
import re import re
def getSPDXIDSafeCharacter(c): def getSPDXIDSafeCharacter(c):
""" """
Converts a character to an SPDX-ID-safe character. Converts a character to an SPDX-ID-safe character.
@ -17,6 +18,7 @@ def getSPDXIDSafeCharacter(c):
return c return c
return "-" return "-"
def convertToSPDXIDSafe(s): def convertToSPDXIDSafe(s):
""" """
Converts a filename or other string to only SPDX-ID-safe characters. Converts a filename or other string to only SPDX-ID-safe characters.
@ -30,6 +32,7 @@ def convertToSPDXIDSafe(s):
""" """
return "".join([getSPDXIDSafeCharacter(c) for c in s]) return "".join([getSPDXIDSafeCharacter(c) for c in s])
def getUniqueFileID(filenameOnly, timesSeen): def getUniqueFileID(filenameOnly, timesSeen):
""" """
Find an SPDX ID that is unique among others seen so far. Find an SPDX ID that is unique among others seen so far.

View file

@ -6,6 +6,7 @@ import hashlib
from west import log from west import log
def getHashes(filePath): def getHashes(filePath):
""" """
Scan for and return hashes. Scan for and return hashes.

View file

@ -6,19 +6,23 @@ import pytest
from pathlib import Path from pathlib import Path
def pytest_addoption(parser): def pytest_addoption(parser):
parser.addoption('--tool') parser.addoption('--tool')
parser.addoption('--tool-options') parser.addoption('--tool-options')
parser.addoption('--sys-clock-hw-cycles-per-sec', default=None) parser.addoption('--sys-clock-hw-cycles-per-sec', default=None)
@pytest.fixture() @pytest.fixture()
def tool(request): def tool(request):
return request.config.getoption('--tool') return request.config.getoption('--tool')
@pytest.fixture() @pytest.fixture()
def tool_options(request): def tool_options(request):
return request.config.getoption('--tool-options') return request.config.getoption('--tool-options')
@pytest.fixture() @pytest.fixture()
def config(request): def config(request):
build_dir = Path(request.config.getoption('--build-dir')) build_dir = Path(request.config.getoption('--build-dir'))
@ -33,6 +37,7 @@ def config(request):
return cfgs return cfgs
@pytest.fixture() @pytest.fixture()
def sys_clock_hw_cycles_per_sec(request, config): def sys_clock_hw_cycles_per_sec(request, config):
if request.config.getoption('--sys-clock-hw-cycles-per-sec'): if request.config.getoption('--sys-clock-hw-cycles-per-sec'):

View file

@ -4,14 +4,17 @@
import pytest import pytest
def pytest_addoption(parser): def pytest_addoption(parser):
parser.addoption('--server-type') parser.addoption('--server-type')
parser.addoption('--port') parser.addoption('--port')
@pytest.fixture() @pytest.fixture()
def server_type(request): def server_type(request):
return request.config.getoption('--server-type') return request.config.getoption('--server-type')
@pytest.fixture() @pytest.fixture()
def port(request): def port(request):
return request.config.getoption('--port') return request.config.getoption('--port')

View file

@ -6,20 +6,26 @@
import pytest import pytest
def pytest_addoption(parser): def pytest_addoption(parser):
parser.addoption('--gdb_target_remote') parser.addoption('--gdb_target_remote')
parser.addoption('--gdb_timeout') parser.addoption('--gdb_timeout')
parser.addoption('--gdb_script') parser.addoption('--gdb_script')
@pytest.fixture() @pytest.fixture()
def gdb_script(request): def gdb_script(request):
return request.config.getoption('--gdb_script') return request.config.getoption('--gdb_script')
@pytest.fixture() @pytest.fixture()
def gdb_timeout(request): def gdb_timeout(request):
return int(request.config.getoption('--gdb_timeout', default=60)) return int(request.config.getoption('--gdb_timeout', default=60))
@pytest.fixture() @pytest.fixture()
def gdb_target_remote(request): def gdb_target_remote(request):
return request.config.getoption('--gdb_target_remote', default=":5678") return request.config.getoption('--gdb_target_remote', default=":5678")
# #

View file

@ -6,9 +6,11 @@
import pytest import pytest
def pytest_addoption(parser): def pytest_addoption(parser):
parser.addoption('--fpu', action="store_true") parser.addoption('--fpu', action="store_true")
@pytest.fixture() @pytest.fixture()
def is_fpu_build(request): def is_fpu_build(request):
return request.config.getoption('--fpu') return request.config.getoption('--fpu')