From patchwork Sat Mar 30 16:46:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Simone_Wei=C3=9F?= X-Patchwork-Id: 41673 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 82D1CCD1288 for ; Sat, 30 Mar 2024 16:47:19 +0000 (UTC) Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.66]) by mx.groups.io with SMTP id smtpd.web11.1160.1711817238507875535 for ; Sat, 30 Mar 2024 09:47:19 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@posteo.com header.s=2017 header.b=LKpJpinm; spf=pass (domain: posteo.com, ip: 185.67.36.66, mailfrom: simone.p.weiss@posteo.com) Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 58CCC240103 for ; Sat, 30 Mar 2024 17:47:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.com; s=2017; t=1711817236; bh=hndWQS9sAVvOqKlhSwX+b+YYUA6jP3jI/w7oDYIdqLI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:From; b=LKpJpinmFNzbOs3KK2zBCxbUXKjyLvqwVye8jqMq+1dd+mEwhy1U2RfuJJ8SsqrE5 gmXGcXHpB4mvp7vxeI/kTkhBapwCv/gUKPqM+aFi+KWP8m5KHU8SJnqYqrPfbbQl5l xQdMba9poUBF+OtVXxbqwx0DaLB9ErZYTTO+1hRyr7hdNdXUt9R2QdL2jX2I0+kYnJ 87FQOtyhdBsvEySkxj+9qZ8nVLptQFXtBjH+vee/UQqObYCjFraNPCNiXceFUfj89V U1ffAWECczABFoDmYkgh0ETk7sp0FIxfPyRT7IK7JoQ80hzmuASa+ZLdVZaXlIgLLJ GYf4bQbgFTJIw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4V6NVC4CSfz9rxK; Sat, 30 Mar 2024 17:47:15 +0100 (CET) From: simone.p.weiss@posteo.com To: bitbake-devel@lists.openembedded.org Cc: =?utf-8?q?Simone_Wei=C3=9F?= Subject: [PATCH] bitbake-layers: add/remove option to not use tinfoil Date: Sat, 30 Mar 2024 16:46:40 +0000 Message-Id: <20240330164640.7270-1-simone.p.weiss@posteo.com> MIME-Version: 1.0 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 ; Sat, 30 Mar 2024 16:47:19 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/16038 From: Simone Weiß Fixes [YOCTO #15417] When a layer adds a new dependency after it was added to a conf, it can not be removed w/o this dependency in the setup. Even the dependent layer can not be added, as the tinfoil setup will fail. Add an option to not perform the tinfoil at all, the use will be at own risk, i.e. the added layers might not parse properly afterwards. This is not merged into the force options as it even changes the loading of plugins from other layers and is hence even more invasive as force. Signed-off-by: Simone Weiß --- bin/bitbake-layers | 13 +++++++++---- lib/bblayers/action.py | 6 ++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/bin/bitbake-layers b/bin/bitbake-layers index d4b1d1aa..f5002861 100755 --- a/bin/bitbake-layers +++ b/bin/bitbake-layers @@ -34,6 +34,7 @@ def main(): parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true') parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true') parser.add_argument('-F', '--force', help='Force add without recipe parse verification', action='store_true') + parser.add_argument('-S', '--skip_parse_tests', help='Force run without parsing the layers, this might cause later failures.', action='store_true') parser.add_argument('--color', choices=['auto', 'always', 'never'], default='auto', help='Colorize output (where %(metavar)s is %(choices)s)', metavar='COLOR') global_args, unparsed_args = parser.parse_known_args() @@ -59,16 +60,20 @@ def main(): plugins = [] tinfoil = bb.tinfoil.Tinfoil(tracking=True) tinfoil.logger.setLevel(logger.getEffectiveLevel()) - try: + if global_args.skip_parse_tests: + bbpaths = [] + else: tinfoil.prepare(True) - for path in ([topdir] + - tinfoil.config_data.getVar('BBPATH').split(':')): + bbpaths = tinfoil.config_data.getVar('BBPATH').split(':') + + try: + for path in ([topdir] + bbpaths): pluginpath = os.path.join(path, 'lib', 'bblayers') bb.utils.load_plugins(logger, plugins, pluginpath) registered = False for plugin in plugins: - if hasattr(plugin, 'tinfoil_init'): + if hasattr(plugin, 'tinfoil_init') and not global_args.skip_parse_tests: plugin.tinfoil_init(tinfoil) if hasattr(plugin, 'register_commands'): registered = True diff --git a/lib/bblayers/action.py b/lib/bblayers/action.py index a8f26993..5aecc452 100644 --- a/lib/bblayers/action.py +++ b/lib/bblayers/action.py @@ -50,8 +50,8 @@ class ActionPlugin(LayerPlugin): try: notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdirs, None) - self.tinfoil.modified_files() - if not (args.force or notadded): + if not (args.force or notadded or args.skip_parse_tests): + self.tinfoil.modified_files() try: self.tinfoil.run_command('parseConfiguration') except (bb.tinfoil.TinfoilUIException, bb.BBHandledException): @@ -83,6 +83,8 @@ class ActionPlugin(LayerPlugin): layerdir = os.path.abspath(item) layerdirs.append(layerdir) (_, notremoved) = bb.utils.edit_bblayers_conf(bblayers_conf, None, layerdirs) + if args.skip_parse_tests: + return 0 self.tinfoil.modified_files() if notremoved: for item in notremoved: