ncs-sbom fails if package name is None

nRF Connect SDK 2.4.0


The issue is in scripts/west_commands/sbom/output_pre_process.py

def pre_process(data: Data):
# ....
    for package in data.packages.values():
        if (package.url is None) or (package.version is None):
            continue
        if (package.name is
                None) and (package.url.startswith('https://github.com/')):
            package.name = package.url.replace('https://github.com/', '')
            if package.name.endswith('.git'):
                package.name = package.name[:-4]
        if package.name in package_name_map:
            existing = package_name_map[package.name]
            del package_name_map[package.name]
            package.name += '-' + package.version
The code `package.name += '-' + package.version` fails if package.name is None
Parents Reply
  • Yeh, it will be nice.

    My suggestion is to replace

    if (package.name is
                    None) and (package.url.startswith('https://github.com/')):
                package.name = package.url.replace('https://github.com/', '')
                if package.name.endswith('.git'):
                    package.name = package.name[:-4]

    with

    if (package.name is None):
            pattern = r'^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?(?:git@)?([^:\/\n]+:?\/?)?'
            package.name = re.sub(pattern, '', package.url)
            if package.name.endswith('.git'):
                package.name = package.name[:-4]

Children
Related