From patchwork Wed Jan 29 20:20:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "chris.laplante@agilent.com" X-Patchwork-Id: 56261 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDA7EC02194 for ; Wed, 29 Jan 2025 20:20:48 +0000 (UTC) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.64]) by mx.groups.io with SMTP id smtpd.web10.22850.1738182040751011576 for ; Wed, 29 Jan 2025 12:20:40 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@agilent.com header.s=selector1 header.b=RPg5deJq; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: agilent.com, ip: 40.107.243.64, mailfrom: chris.laplante@agilent.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MQlu/GlG1Azp3+d8otVbRXfJ5SUZypOXbzB6gYFvsxkdRilmSaP91yN9sz9rTGGGZiFI6UJprGSpFuMAU0CEo480vw+UK/GI6R3NrXtmPs8OT07b9MsGfjs8bTzC3ykPipmDZM1JrPuuCocGjtNS47hShUuT7DqNH3WVSIl2aYPB9Qz8nfDxMAZI+RoALvokOeXzzUgqL77vQEcIAW1I2cskD4UCIYWTaTnq1mQRJ9eEk4gVT+GawsxKfjZoWe0ppcHmGF3Z2Bj8rsip7C/IBPvyAN3EMGgDJfm/LtxGdaU8U1KHkVJ5mxrApiORLXJ12aUR6Z+SgYnU6F49GezLcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KFHp4J6LVREK+aImh08omPfFNhcOLGnhzhT3RUakteQ=; b=xl2cKz7Sg4pL7+y+i+jSLgZPI7kG6Vy9k5J++9TWvyvjFLrk1egeAFj8bIX9Oohn6wvibVtuTcGiPbukQCQzf1/PQ7BnhP7Q1JRiXcpetvM84ipRf5HxwzuAoFXqjeU/kUo414Q+BKOVbrpo82Tph+iR20hiQX93M3Rjg88s3VYiT6QLrpTCd6lpeBnt+StKgB1D6xge2kXzH4sqKYXP7vnKo8FBGbv/tQ5ElUS2yB+GL1YAB8xxUvU128wwniPoKO8lF8ImyW3wr1rm8amZkepiHpnQpxxpW3WxOwRLTRCLOmUnyBZ+Vg7JEvoA7rIDi7UOV+m0PyzAI/8mw5lzTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 192.25.218.34) smtp.rcpttodomain=lists.openembedded.org smtp.mailfrom=agilent.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=agilent.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=agilent.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KFHp4J6LVREK+aImh08omPfFNhcOLGnhzhT3RUakteQ=; b=RPg5deJqv2QNZX2h51t0mgLWGRf5DthZwBaNy8dE73tOksfnm8jbpPqavx9YyhAg+4CeY04qn/6aEc5FSN4tgpecrgT6C/rKo9TNUicOou78F8sKjr7lQuU/7Tt3OmrJiTTUM7gtYBRNmaBvzhNG4s8H1FzQ+FN87KmNKjbhiJoc0VuGRb2TH+37Jn1BvEPTam0Ugx/FfYFlKgxK/9R2L3N/m55LA9HQC8A1wtNZhGjZvkMCw+xk9UF+wSdJMU4seS17n8v4aiLRMBVqJJLEh7PNgBqEZP6KvQh7IbhQGmu7Hliue5zH+C8iZ6MMMuJe0Qg2i2XyL2ZCLijQ+0uuqg== Received: from PH0PR07CA0082.namprd07.prod.outlook.com (2603:10b6:510:f::27) by MN2PR12MB4437.namprd12.prod.outlook.com (2603:10b6:208:26f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.18; Wed, 29 Jan 2025 20:20:32 +0000 Received: from SN1PEPF000397B3.namprd05.prod.outlook.com (2603:10b6:510:f:cafe::72) by PH0PR07CA0082.outlook.office365.com (2603:10b6:510:f::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8398.18 via Frontend Transport; Wed, 29 Jan 2025 20:20:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 192.25.218.34) smtp.mailfrom=agilent.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=agilent.com; Received-SPF: Pass (protection.outlook.com: domain of agilent.com designates 192.25.218.34 as permitted sender) receiver=protection.outlook.com; client-ip=192.25.218.34; helo=edgeappmail.agilent.com; pr=C Received: from edgeappmail.agilent.com (192.25.218.34) by SN1PEPF000397B3.mail.protection.outlook.com (10.167.248.57) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.14 via Frontend Transport; Wed, 29 Jan 2025 20:20:30 +0000 Received: from laplante-B650.lfs.agilent.com (192.25.126.4) by edgeappmail.agilent.com (192.25.218.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Wed, 29 Jan 2025 13:20:26 -0700 From: To: CC: Chris Laplante Subject: [PATCH v2 1/5] devtool: standard: cleanup imports; stop relying on transitive bb imports Date: Wed, 29 Jan 2025 15:20:12 -0500 Message-ID: <20250129202016.1833520-2-chris.laplante@agilent.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250129202016.1833520-1-chris.laplante@agilent.com> References: <20250129202016.1833520-1-chris.laplante@agilent.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B3:EE_|MN2PR12MB4437:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b984db5-f460-4a90-912d-08dd40a260b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: /FSwaKsBLMadVCS5RCHd8Mv7fD0YZll6RUOOmi9LFf18GJC5c0dNNidgoVrsJkMMZjZQKu4jcXFACiCsHCZEFt6RLSLEcpyM7Jq3Ih4z2MpAgovVuOskdTyHdJw7tH3cH8D37pkyHqqLwGBD0oAl7gJYLn1F0CsKxW8kS/l4XzMwJLSodx04HEsJ14XpJLECRurYWEdmSTmW9bau+FgOOsmR8penyfCcXYEuU9NArXeutHsTOb7WZEckKtkb/qGc4tFSogQkEOcpU7TRrvcmz3kuPC0qg0rjS1GuH8Bh0jiRoApBGzhH6BXXFERK0m/LUtjCWb3h1oeNkAbLpccoV+OQat651C3mGxXCmpCQ/Uv1NTSRQ+k+Q2liiwm6TkZgOCu6L7MM3SQLMTCcBMOIU3Kn0AXU8Pr5YRx8qmTEkpFE9CRGYappdw9BAyp+zKO3MhKOAoDp0b8UcAEyrD8pBL0LNPu88Q1SQliey2V4yfMALdMU0hPg4hA54aobtVEmwKl60gCMDCD+DglOQQ9w+DTLlbnn/Mna5OiGk4tDeKzAW0mgVj8h6FaWxriGreHw/lUsRuz+CALXy2tD11dIEKCRlq3T4unfMD6wC/vWmcTMIpod0HX9soQf2Nyrg00aOihs/QClywpjiLVNX9bG3B6b3ZnFK3AnPArJrAervtZEnrlJUSBhOwUW/uzOhIei3ECJGes8kOyCFO00+YU6WQgP1V8jDk3l/Rd7N7b20CA2iSVehz4GOCZrRzmZOJPOOOFSWgOh6mM9p1ib2skPpoXBQo2aY7ziveAxt1RELCk2k7HZpDFO6D2QmIMErR0oKLNYbninZFFjEowVB+GXS+YpEt0Jmtu9gEeZwobzvL04JXKTzvP5k19+txS+KX8QfVtntgoJYh0RnZ1VYKk5wciPcBNf2T2q0sEcxQ/BubQs/pqSIn/Y45fxJARTFWjUwJ3vDRd4Uhv4/i1J1z/m0iA1ZVEP4XiU8WH9sCGq+S4DwXFOjXPmHM1jSknsZBY8NnXsZ2M2F25U6h6tku0h5jZlyE5BVQ8RpO8ewYrVWjRW7pSuz4RYfRFibFHvZayrBiN1xoOf9oxmgPKnzCthfDPK2xnUrJBAVjBpQrFhadLKLgPJil8WHOSCTm8reFDmLIq53AHUaDjq6gZgN642oRCbAF4a31ICMzGiiDdBYlIRk+LlmVySrfSQpYJD+s5TZ+zbY/0sDziAhGjeaAQE9AWtllzRorYJdjwGdHzftXYc/tCbbwgP6RFW5/QCjuGaMDwBQQBVS973FM0UizNisDJkvPwXGd2OKsr5qyj64rpdKGvFNZHV6qSgoZtV0jqZ6RRx/iwUW9QeQu+o+6HeDosHMGwdQohx2Jt6GiuVKtciENIlGQTqeJFkbWAJeyGJPJHm/OtePmwYzoqvSRNZoF1i6Eef98REuRADMEbe7v3KVaGonDsEH9BVotEF9IECC8akPtjQvqCMbz3sDTxavIAeGR2J77VLPUir0JId3ns= X-Forefront-Antispam-Report: CIP:192.25.218.34;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:edgeappmail.agilent.com;PTR:wpcosapexchedg3.windmz.agilent.com;CAT:NONE;SFS:(13230040)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: agilent.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2025 20:20:30.7154 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2b984db5-f460-4a90-912d-08dd40a260b6 X-MS-Exchange-CrossTenant-Id: a9c0bc09-8b46-4206-9351-2ba12fb4a5c0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=a9c0bc09-8b46-4206-9351-2ba12fb4a5c0;Ip=[192.25.218.34];Helo=[edgeappmail.agilent.com] X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SN1PEPF000397B3.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4437 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 29 Jan 2025 20:20:48 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/210416 From: Chris Laplante Signed-off-by: Chris Laplante --- scripts/lib/devtool/standard.py | 41 ++++++++++++++++++--------------- scripts/lib/devtool/upgrade.py | 1 + 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index fa846ce61a..305536f6f0 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -19,9 +19,12 @@ import scriptutils import errno import glob from collections import OrderedDict + from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, update_unlockedsigs, check_prerelease_version, check_git_repo_dirty, check_git_repo_op, DevtoolError from devtool import parse_recipe +import bb.utils + logger = logging.getLogger('devtool') override_branch_prefix = 'devtool-override-' @@ -29,7 +32,8 @@ override_branch_prefix = 'devtool-override-' def add(args, config, basepath, workspace): """Entry point for the devtool 'add' subcommand""" - import bb + import bb.data + import bb.process import oe.recipeutils if not args.recipename and not args.srctree and not args.fetch and not args.fetchuri: @@ -304,6 +308,7 @@ def add(args, config, basepath, workspace): def _check_compatible_recipe(pn, d): """Check if the recipe is supported by devtool""" + import bb.data if pn == 'perf': raise DevtoolError("The perf recipe does not actually check out " "source and thus cannot be supported by this tool", @@ -373,7 +378,7 @@ def _copy_file(src, dst, dry_run_outdir=None, base_outdir=None): def _git_ls_tree(repodir, treeish='HEAD', recursive=False): """List contents of a git treeish""" - import bb + import bb.process cmd = ['git', 'ls-tree', '-z', treeish] if recursive: cmd.append('-r') @@ -388,7 +393,7 @@ def _git_ls_tree(repodir, treeish='HEAD', recursive=False): def _git_modified(repodir): """List the difference between HEAD and the index""" - import bb + import bb.process cmd = ['git', 'status', '--porcelain'] out, _ = bb.process.run(cmd, cwd=repodir) ret = [] @@ -426,8 +431,6 @@ def _ls_tree(directory): def extract(args, config, basepath, workspace): """Entry point for the devtool 'extract' subcommand""" - import bb - tinfoil = setup_tinfoil(basepath=basepath, tracking=True) if not tinfoil: # Error already shown @@ -450,8 +453,6 @@ def extract(args, config, basepath, workspace): def sync(args, config, basepath, workspace): """Entry point for the devtool 'sync' subcommand""" - import bb - tinfoil = setup_tinfoil(basepath=basepath, tracking=True) if not tinfoil: # Error already shown @@ -474,9 +475,9 @@ def sync(args, config, basepath, workspace): def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, workspace, fixed_setup, d, tinfoil, no_overrides=False): """Extract sources of a recipe""" - import oe.recipeutils - import oe.patch import oe.path + import bb.data + import bb.process pn = d.getVar('PN') @@ -677,8 +678,6 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works def _add_md5(config, recipename, filename): """Record checksum of a file (or recursively for a directory) to the md5-file of the workspace""" - import bb.utils - def addfile(fn): md5 = bb.utils.md5_file(fn) with open(os.path.join(config.workspace_path, '.devtool_md5'), 'a+') as f: @@ -697,7 +696,6 @@ def _add_md5(config, recipename, filename): def _check_preserve(config, recipename): """Check if a file was manually changed and needs to be saved in 'attic' directory""" - import bb.utils origfile = os.path.join(config.workspace_path, '.devtool_md5') newfile = os.path.join(config.workspace_path, '.devtool_md5_new') preservepath = os.path.join(config.workspace_path, 'attic', recipename) @@ -739,6 +737,7 @@ def get_staging_kver(srcdir): return staging_kerVer def get_staging_kbranch(srcdir): + import bb.process staging_kbranch = "" if os.path.exists(srcdir) and os.listdir(srcdir): (branch, _) = bb.process.run('git branch | grep \\* | cut -d \' \' -f2', cwd=srcdir) @@ -757,7 +756,8 @@ def get_real_srctree(srctree, s, workdir): def modify(args, config, basepath, workspace): """Entry point for the devtool 'modify' subcommand""" - import bb + import bb.data + import bb.process import oe.recipeutils import oe.patch import oe.path @@ -1183,7 +1183,7 @@ def _get_patchset_revs(srctree, recipe_path, initial_rev=None, force_patch_refre """Get initial and update rev of a recipe. These are the start point of the whole patchset and start point for the patches to be re-generated/updated. """ - import bb + import bb.process # Get current branch stdout, _ = bb.process.run('git rev-parse --abbrev-ref HEAD', @@ -1309,6 +1309,7 @@ def _export_patches(srctree, rd, start_revs, destdir, changed_revs=None): """ import oe.recipeutils from oe.patch import GitApplyTree + import bb.process updated = OrderedDict() added = OrderedDict() seqpatch_re = re.compile('^([0-9]{4}-)?(.+)') @@ -1378,6 +1379,7 @@ def _export_patches(srctree, rd, start_revs, destdir, changed_revs=None): def _create_kconfig_diff(srctree, rd, outfile): """Create a kconfig fragment""" + import bb.process # Only update config fragment if both config files exist orig_config = os.path.join(srctree, '.config.baseline') new_config = os.path.join(srctree, '.config.new') @@ -1415,6 +1417,8 @@ def _export_local_files(srctree, rd, destdir, srctreebase): - for removed dict, the absolute path to the existing file in recipe space """ import oe.recipeutils + import bb.data + import bb.process # Find out local files (SRC_URI files that exist in the "recipe space"). # Local files that reside in srctree are not included in patch generation. @@ -1506,7 +1510,7 @@ def _determine_files_dir(rd): def _update_recipe_srcrev(recipename, workspace, srctree, rd, appendlayerdir, wildcard_version, no_remove, no_report_remove, dry_run_outdir=None): """Implement the 'srcrev' mode of update-recipe""" - import bb + import bb.process import oe.recipeutils dry_run_suffix = ' (dry-run)' if dry_run_outdir else '' @@ -1607,7 +1611,6 @@ def _update_recipe_srcrev(recipename, workspace, srctree, rd, appendlayerdir, wi def _update_recipe_patch(recipename, workspace, srctree, rd, appendlayerdir, wildcard_version, no_remove, no_report_remove, initial_rev, dry_run_outdir=None, force_patch_refresh=False): """Implement the 'patch' mode of update-recipe""" - import bb import oe.recipeutils recipefile = rd.getVar('FILE') @@ -1786,6 +1789,7 @@ def _update_recipe_patch(recipename, workspace, srctree, rd, appendlayerdir, wil def _guess_recipe_update_mode(srctree, rdata): """Guess the recipe update mode to use""" + import bb.process src_uri = (rdata.getVar('SRC_URI') or '').split() git_uris = [uri for uri in src_uri if uri.startswith('git://')] if not git_uris: @@ -1807,6 +1811,8 @@ def _guess_recipe_update_mode(srctree, rdata): return 'patch' def _update_recipe(recipename, workspace, rd, mode, appendlayerdir, wildcard_version, no_remove, initial_rev, no_report_remove=False, dry_run_outdir=None, no_overrides=False, force_patch_refresh=False): + import bb.data + import bb.process srctree = workspace[recipename]['srctree'] if mode == 'auto': mode = _guess_recipe_update_mode(srctree, rd) @@ -1929,6 +1935,7 @@ def status(args, config, basepath, workspace): def _reset(recipes, no_clean, remove_work, config, basepath, workspace): """Reset one or more recipes""" + import bb.process import oe.path def clean_preferred_provider(pn, layerconf_path): @@ -2032,8 +2039,6 @@ def _reset(recipes, no_clean, remove_work, config, basepath, workspace): def reset(args, config, basepath, workspace): """Entry point for the devtool 'reset' subcommand""" - import bb - import shutil recipes = "" diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index eed3a49e4b..94b6c11a37 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py @@ -169,6 +169,7 @@ def _get_uri(rd): def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, keep_temp, tinfoil, rd): """Extract sources of a recipe with a new version""" + import oe.patch def __run(cmd): """Simple wrapper which calls _run with srctree as cwd"""