From 783118944874d559e30eea1600352e3feb5263a7 Mon Sep 17 00:00:00 2001 From: Andreas Wacknitz <A.Wacknitz@gmx.de> Date: Sun, 31 Mar 2024 09:35:05 +0200 Subject: [PATCH] libcares: update to 1.28.0 --- tools/userland-mapping | 53 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 33 insertions(+), 20 deletions(-) diff --git a/tools/userland-mapping b/tools/userland-mapping index 299e4d1..5517893 100755 --- a/tools/userland-mapping +++ b/tools/userland-mapping @@ -1,4 +1,4 @@ -#!/usr/bin/python3.5 +#!/usr/bin/python3.9 # # This file and its contents are supplied under the terms of the @@ -28,6 +28,8 @@ import subprocess import multiprocessing +from bass.component import Component + try: from scandir import walk except ImportError: @@ -35,7 +37,7 @@ logger = logging.getLogger('userland-mapping') -COMONENT_MAPPING_FILENAME = 'mapping.json' +COMPONENT_MAPPING_FILENAME = 'mapping.json' def find_component_paths(path, subdir='components', debug=False): @@ -47,7 +49,8 @@ for dirpath, dirnames, filenames in walk(workspace_path): for name in filenames: if expression.match(name): - paths.append(dirpath) + if not os.path.isfile(os.path.join( dirpath, 'pkg5.ignore')): + paths.append(dirpath) del dirnames[:] break @@ -56,24 +59,18 @@ def generate_component_data(component_path, subdir='components'): result = [] + component = Component(path=component_path) + component_name = component.name + if not component_name: + raise ValueError('Component name is empty for path ' + component_path + '.') + component_fmris = component.supplied_packages - proc = subprocess.Popen(['gmake', '-s', 'print-value-COMPONENT_NAME', 'print-package-names'], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - cwd=component_path, - universal_newlines=True) - - for out in proc.stdout: - result.append(out.rstrip()) - - component_name = result[0] - component_fmris = result[1:] component_relative_path = component_path.split(os.path.join(os.environ['WS_TOP'], subdir))[-1].replace('/', '', 1) return component_fmris, component_name, component_relative_path -def generate_userland_mapping(workspace_path, subdir='components'): +def generate_userland_mapping(workspace_path, subdir='components', repo='userland', repo_map=[]): mapping = [] paths = find_component_paths(path=workspace_path, subdir=subdir) @@ -82,11 +79,17 @@ for component_fmris, component_name, component_relative_path in results: for component_fmri in component_fmris: - mapping.append({'component_name': component_name, - 'component_fmri': component_fmri, - 'component_path': component_relative_path}) + component_repo = repo + for rm in repo_map: + if component_relative_path.startswith(rm['pfx']): + component_repo = rm['repo'] - component_mapping_file = os.path.join(workspace_path, subdir, COMONENT_MAPPING_FILENAME) + mapping.append({'name': component_name, + 'fmri': component_fmri, + 'path': component_relative_path, + 'repo': component_repo}) + + component_mapping_file = os.path.join(workspace_path, subdir, COMPONENT_MAPPING_FILENAME) with open(component_mapping_file, 'w') as f: f.write(json.dumps(mapping, sort_keys=True, indent=4)) @@ -96,14 +99,24 @@ parser.add_argument('-w', '--workspace', default=os.getenv('WS_TOP'), help='Path to workspace') parser.add_argument('--subdir', default='components', help='Directory holding components') + parser.add_argument('--repo', default='userland', help='Default target repository') + parser.add_argument('--repo-map', help='Target repository for this directory; e.g., encumbered/=userland-encumbered', action='append') args = parser.parse_args() workspace = args.workspace subdir = args.subdir - generate_userland_mapping(workspace_path=workspace, subdir=subdir) + repo = args.repo + repo_map = [] + if args.repo_map: + for rm in args.repo_map: + l = rm.split("=") + if len(l) != 2: + raise ValueError('invalid --repo-map: ' + rm) + repo_map.append({'pfx': l[0], 'repo': l[1]}) + generate_userland_mapping(workspace_path=workspace, subdir=subdir, repo=repo, repo_map=repo_map) if __name__ == '__main__': main() -- Gitblit v1.9.3