From 51d7abf9ca0db6e7d2fbec3fb29faba3e296a933 Mon Sep 17 00:00:00 2001 From: Jaekwon Bang Date: Fri, 5 Aug 2022 18:38:27 +0900 Subject: [PATCH 1/2] Modify to convert *sbom-info*.yaml --- src/fosslight_util/parsing_yaml.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/fosslight_util/parsing_yaml.py b/src/fosslight_util/parsing_yaml.py index 5d436c8..570d48a 100644 --- a/src/fosslight_util/parsing_yaml.py +++ b/src/fosslight_util/parsing_yaml.py @@ -7,11 +7,13 @@ import logging import codecs import os +import re import sys from .constant import LOGGER_NAME from .oss_item import OssItem _logger = logging.getLogger(LOGGER_NAME) +SUPPORT_OSS_INFO_FILES = ["oss-pkg-info.yaml", "sbom-info.yaml"] #include "fosslight-sbom-info.yaml" def parsing_yml(yaml_file, base_path): @@ -35,6 +37,8 @@ def parsing_yml(yaml_file, base_path): for root_element in doc: oss_items = doc[root_element] if oss_items: + if not 'version' in oss_items[0]: + raise Exception("Not supported yaml file format - https://github.com/fosslight/fosslight_prechecker/blob/main/tests/convert/oss-pkg-info.yaml") for oss in oss_items: item = OssItem(relative_path) if not is_old_format: @@ -51,7 +55,7 @@ def parsing_yml(yaml_file, base_path): return oss_list, set(license_list) -def find_all_oss_pkg_files(path_to_find, file_to_find): +def find_sbom_yaml_files(path_to_find): oss_pkg_files = [] if not os.path.isdir(path_to_find): @@ -59,14 +63,13 @@ def find_all_oss_pkg_files(path_to_find, file_to_find): sys.exit(os.EX_DATAERR) try: - # oss_pkg_files.extend(glob.glob(path_to_find + '/**/'+file, recursive=True)) #glib is too slow - for p, d, f in os.walk(path_to_find): - for file in f: + for root, dirs, files in os.walk(path_to_find): + for file in files: file_name = file.lower() - if file_name in file_to_find or ( - (file_name.endswith("yml") or file_name.endswith("yaml")) - and file_name.startswith("oss-pkg-info")): - oss_pkg_files.append(os.path.join(p, file)) + for oss_info in SUPPORT_OSS_INFO_FILES: + p = re.compile(oss_info, re.I) + if p.search(file_name): + oss_pkg_files.append(os.path.join(root, file)) except Exception as ex: _logger.error(f"Error, find all oss-pkg-info files: {ex}") From f9e1b2483c030a20f26edfd1585eca2e6d3d9773 Mon Sep 17 00:00:00 2001 From: Jaekwon Bang Date: Fri, 5 Aug 2022 18:38:27 +0900 Subject: [PATCH 2/2] Modify to convert *sbom-info*.yaml --- src/fosslight_util/parsing_yaml.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/fosslight_util/parsing_yaml.py b/src/fosslight_util/parsing_yaml.py index 5d436c8..570d48a 100644 --- a/src/fosslight_util/parsing_yaml.py +++ b/src/fosslight_util/parsing_yaml.py @@ -7,11 +7,13 @@ import logging import codecs import os +import re import sys from .constant import LOGGER_NAME from .oss_item import OssItem _logger = logging.getLogger(LOGGER_NAME) +SUPPORT_OSS_INFO_FILES = ["oss-pkg-info.yaml", "sbom-info.yaml"] #include "fosslight-sbom-info.yaml" def parsing_yml(yaml_file, base_path): @@ -35,6 +37,8 @@ def parsing_yml(yaml_file, base_path): for root_element in doc: oss_items = doc[root_element] if oss_items: + if not 'version' in oss_items[0]: + raise Exception("Not supported yaml file format - https://github.com/fosslight/fosslight_prechecker/blob/main/tests/convert/oss-pkg-info.yaml") for oss in oss_items: item = OssItem(relative_path) if not is_old_format: @@ -51,7 +55,7 @@ def parsing_yml(yaml_file, base_path): return oss_list, set(license_list) -def find_all_oss_pkg_files(path_to_find, file_to_find): +def find_sbom_yaml_files(path_to_find): oss_pkg_files = [] if not os.path.isdir(path_to_find): @@ -59,14 +63,13 @@ def find_all_oss_pkg_files(path_to_find, file_to_find): sys.exit(os.EX_DATAERR) try: - # oss_pkg_files.extend(glob.glob(path_to_find + '/**/'+file, recursive=True)) #glib is too slow - for p, d, f in os.walk(path_to_find): - for file in f: + for root, dirs, files in os.walk(path_to_find): + for file in files: file_name = file.lower() - if file_name in file_to_find or ( - (file_name.endswith("yml") or file_name.endswith("yaml")) - and file_name.startswith("oss-pkg-info")): - oss_pkg_files.append(os.path.join(p, file)) + for oss_info in SUPPORT_OSS_INFO_FILES: + p = re.compile(oss_info, re.I) + if p.search(file_name): + oss_pkg_files.append(os.path.join(root, file)) except Exception as ex: _logger.error(f"Error, find all oss-pkg-info files: {ex}")