All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] bitbake-layers: add/remove option to not use tinfoil
@ 2024-03-27 19:54 simone.p.weiss
  2024-03-28 14:01 ` [bitbake-devel] " Peter Kjellerstedt
  0 siblings, 1 reply; 2+ messages in thread
From: simone.p.weiss @ 2024-03-27 19:54 UTC (permalink / raw)
  To: bitbake-devel; +Cc: Simone Weiß

From: Simone Weiß <simone.p.weiss@posteo.com>

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.

Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
---
v2: Rename option to be more meaningful.
 bin/bitbake-layers     | 14 ++++++++++----
 lib/bblayers/action.py |  6 ++++--
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/bin/bitbake-layers b/bin/bitbake-layers
index d4b1d1aa..f7ed5ce0 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,21 @@ def main():
     plugins = []
     tinfoil = bb.tinfoil.Tinfoil(tracking=True)
     tinfoil.logger.setLevel(logger.getEffectiveLevel())
-    try:
+    if global_args.skip_parse_tests:
+        bbpath_string = []
+    else:
         tinfoil.prepare(True)
-        for path in ([topdir] +
-                    tinfoil.config_data.getVar('BBPATH').split(':')):
+        bbpath_string = tinfoil.config_data.getVar('BBPATH').split(':')
+        print(bbpath_string)
+    
+    try: 
+        for path in ([topdir] + bbpath_string):
             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:
-- 
2.39.2



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* RE: [bitbake-devel] [PATCH v2] bitbake-layers: add/remove option to not use tinfoil
  2024-03-27 19:54 [PATCH v2] bitbake-layers: add/remove option to not use tinfoil simone.p.weiss
@ 2024-03-28 14:01 ` Peter Kjellerstedt
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Kjellerstedt @ 2024-03-28 14:01 UTC (permalink / raw)
  To: Simone Weiß, bitbake-devel

> -----Original Message-----
> From: bitbake-devel@lists.openembedded.org <bitbake-devel@lists.openembedded.org> On Behalf Of Simone Weiß
> Sent: den 27 mars 2024 20:54
> To: bitbake-devel@lists.openembedded.org
> Cc: Simone Weiß <simone.p.weiss@posteo.com>
> Subject: [bitbake-devel] [PATCH v2] bitbake-layers: add/remove option to not use tinfoil
> 
> From: Simone Weiß <simone.p.weiss@posteo.com>
> 
> 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.
> 
> Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
> ---
> v2: Rename option to be more meaningful.
>  bin/bitbake-layers     | 14 ++++++++++----
>  lib/bblayers/action.py |  6 ++++--
>  2 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/bin/bitbake-layers b/bin/bitbake-layers
> index d4b1d1aa..f7ed5ce0 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')

Does this really need a separate option? Can't the functionality be folded 
into the already existing -F option? Typically, as a user, if I want to make 
sure a layer is added no matter what, I would look for an option to force it. 
And when I find -F, I would look no further.

>      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,21 @@ def main():
>      plugins = []
>      tinfoil = bb.tinfoil.Tinfoil(tracking=True)
>      tinfoil.logger.setLevel(logger.getEffectiveLevel())
> -    try:
> +    if global_args.skip_parse_tests:
> +        bbpath_string = []
> +    else:
>          tinfoil.prepare(True)
> -        for path in ([topdir] +
> -                    tinfoil.config_data.getVar('BBPATH').split(':')):
> +        bbpath_string = tinfoil.config_data.getVar('BBPATH').split(':')

Odd variable name, given that it is not a string but a list. I would 
call it "bbpaths" instead.

> +        print(bbpath_string)

This looks like a debug leftover...

> +
> +    try:
> +        for path in ([topdir] + bbpath_string):
>              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:
> --
> 2.39.2

//Peter


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-03-28 14:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-27 19:54 [PATCH v2] bitbake-layers: add/remove option to not use tinfoil simone.p.weiss
2024-03-28 14:01 ` [bitbake-devel] " Peter Kjellerstedt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.