All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2] bitbake-layers: check layer dependencies before adding
@ 2017-05-29  0:44 Chang Rebecca Swee Fun
  2017-05-29  0:44 ` Chang Rebecca Swee Fun
  0 siblings, 1 reply; 4+ messages in thread
From: Chang Rebecca Swee Fun @ 2017-05-29  0:44 UTC (permalink / raw)
  To: Bitbake dev Mailing List; +Cc: Phoong Stanley Cheong Kwan

Change log on v2 patch:
- Remove line "return 1", because bb.fatal raises an exception, hence
  return 1 is not needed.

Regards,
Rebecca

Chang Rebecca Swee Fun (1):
  bitbake-layers: check layer dependencies before adding

 bin/bitbake-layers     |  1 +
 lib/bblayers/action.py | 26 ++++++++++++++++++++++----
 2 files changed, 23 insertions(+), 4 deletions(-)

-- 
2.7.4



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

* [PATCHv2] bitbake-layers: check layer dependencies before adding
  2017-05-29  0:44 [PATCHv2] bitbake-layers: check layer dependencies before adding Chang Rebecca Swee Fun
@ 2017-05-29  0:44 ` Chang Rebecca Swee Fun
  2017-06-04 14:13   ` Richard Purdie
  0 siblings, 1 reply; 4+ messages in thread
From: Chang Rebecca Swee Fun @ 2017-05-29  0:44 UTC (permalink / raw)
  To: Bitbake dev Mailing List; +Cc: Phoong Stanley Cheong Kwan

In the original implementation, "bitbake-layers add-layers <layer>"
succeeded without error checking. This will further introduce
failures in recipe parsing only when "bitbake" command is executed.
Adding a meta layer without its dependency layer(s) should failed
and exit the process gracefully.

Added extra argument "-f" to force add a layer without checking
layer dependency.

[YOCTO #10913]

Signed-off-by: Phoong Stanley Cheong Kwan <stanley.cheong.kwan.phoong@intel.com>
Signed-off-by: Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>
---
 bin/bitbake-layers     |  1 +
 lib/bblayers/action.py | 26 ++++++++++++++++++++++----
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/bin/bitbake-layers b/bin/bitbake-layers
index 2b05d28..ced38a6 100755
--- a/bin/bitbake-layers
+++ b/bin/bitbake-layers
@@ -43,6 +43,7 @@ def main():
         add_help=False)
     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('--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()
diff --git a/lib/bblayers/action.py b/lib/bblayers/action.py
index cf94704..cc61555 100644
--- a/lib/bblayers/action.py
+++ b/lib/bblayers/action.py
@@ -1,7 +1,9 @@
 import fnmatch
 import logging
 import os
+import shutil
 import sys
+import tempfile
 
 import bb.utils
 
@@ -32,10 +34,26 @@ class ActionPlugin(LayerPlugin):
             sys.stderr.write("Unable to find bblayers.conf\n")
             return 1
 
-        notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
-        if notadded:
-            for item in notadded:
-                sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
+        # Back up bblayers.conf to tempdir before we add layers
+        tempdir = tempfile.mkdtemp()
+        backup = tempdir + "/bblayers.conf.bak"
+        shutil.copy2(bblayers_conf, backup)
+
+        try:
+            notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
+            if not (args.force or notadded):
+                try:
+                    self.tinfoil.parseRecipes()
+                except bb.tinfoil.TinfoilUIException:
+                    # Restore the back up copy of bblayers.conf
+                    shutil.copy2(backup, bblayers_conf)
+                    bb.fatal("Parse failure with the specified layer added")
+            else:
+                for item in notadded:
+                    sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
+        finally:
+            # Remove the back up copy of bblayers.conf
+            shutil.rmtree(tempdir)
 
     def do_remove_layer(self, args):
         """Remove a layer from bblayers.conf."""
-- 
2.7.4



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

* Re: [PATCHv2] bitbake-layers: check layer dependencies before adding
  2017-05-29  0:44 ` Chang Rebecca Swee Fun
@ 2017-06-04 14:13   ` Richard Purdie
  2017-06-05  6:40     ` Chang, Rebecca Swee Fun
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Purdie @ 2017-06-04 14:13 UTC (permalink / raw)
  To: Chang Rebecca Swee Fun, Bitbake dev Mailing List
  Cc: Phoong Stanley Cheong Kwan

On Mon, 2017-05-29 at 08:44 +0800, Chang Rebecca Swee Fun wrote:
> In the original implementation, "bitbake-layers add-layers <layer>"
> succeeded without error checking. This will further introduce
> failures in recipe parsing only when "bitbake" command is executed.
> Adding a meta layer without its dependency layer(s) should failed
> and exit the process gracefully.
> 
> Added extra argument "-f" to force add a layer without checking
> layer dependency.
> 
> [YOCTO #10913]
> 
> Signed-off-by: Phoong Stanley Cheong Kwan <stanley.cheong.kwan.phoong
> @intel.com>
> Signed-off-by: Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.c
> om>
> ---
>  bin/bitbake-layers     |  1 +
>  lib/bblayers/action.py | 26 ++++++++++++++++++++++----
>  2 files changed, 23 insertions(+), 4 deletions(-)

This patch seems to result in this:

https://autobuilder.yocto.io/builders/nightly-oe-selftest/builds/320/steps/Running%20oe-selftest/logs/stdio

Cheers,

Richard


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

* Re: [PATCHv2] bitbake-layers: check layer dependencies before adding
  2017-06-04 14:13   ` Richard Purdie
@ 2017-06-05  6:40     ` Chang, Rebecca Swee Fun
  0 siblings, 0 replies; 4+ messages in thread
From: Chang, Rebecca Swee Fun @ 2017-06-05  6:40 UTC (permalink / raw)
  To: Richard Purdie, Bitbake dev Mailing List
  Cc: Phoong, Stanley Cheong Kwan, Eggleton, Paul

Hi Richard,

Thanks! We have found out why it failed.
We were using "-f" to force add a layer without going through recipe parse.
I just realized the bitbake selftests were using "-f" in bitbake-layers show-recipes.
The argument flags were overriding each other.
I will fix that in v3 patch.

Regards,
Rebecca

> -----Original Message-----
> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org]
> Sent: Sunday, June 4, 2017 10:13 PM
> To: Chang, Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>; Bitbake
> dev Mailing List <bitbake-devel@lists.openembedded.org>
> Cc: Phoong, Stanley Cheong Kwan <stanley.cheong.kwan.phoong@intel.com>
> Subject: Re: [bitbake-devel] [PATCHv2] bitbake-layers: check layer
> dependencies before adding
> 
> On Mon, 2017-05-29 at 08:44 +0800, Chang Rebecca Swee Fun wrote:
> > In the original implementation, "bitbake-layers add-layers <layer>"
> > succeeded without error checking. This will further introduce failures
> > in recipe parsing only when "bitbake" command is executed.
> > Adding a meta layer without its dependency layer(s) should failed and
> > exit the process gracefully.
> >
> > Added extra argument "-f" to force add a layer without checking layer
> > dependency.
> >
> > [YOCTO #10913]
> >
> > Signed-off-by: Phoong Stanley Cheong Kwan <stanley.cheong.kwan.phoong
> > @intel.com>
> > Signed-off-by: Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.c
> > om>
> > ---
> >  bin/bitbake-layers     |  1 +
> >  lib/bblayers/action.py | 26 ++++++++++++++++++++++----
> >  2 files changed, 23 insertions(+), 4 deletions(-)
> 
> This patch seems to result in this:
> 
> https://autobuilder.yocto.io/builders/nightly-oe-
> selftest/builds/320/steps/Running%20oe-selftest/logs/stdio
> 
> Cheers,
> 
> Richard

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

end of thread, other threads:[~2017-06-05  6:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-29  0:44 [PATCHv2] bitbake-layers: check layer dependencies before adding Chang Rebecca Swee Fun
2017-05-29  0:44 ` Chang Rebecca Swee Fun
2017-06-04 14:13   ` Richard Purdie
2017-06-05  6:40     ` Chang, Rebecca Swee Fun

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.