On 11/28/25 19:27, Alexander Kanavin via lists.openembedded.org wrote:
> From: Alexander Kanavin <[email protected]>
>
> This allows disabling classes of fragments without knowing their full names, 
> e.g.
> instead of
>
> $ bitbake-config-build disable-fragment machine/qemuarm
>
> one can issue
>
> $ bitbake-config-build disable-fragment machine
>
> to match and disable everything that starts with 'machine'.
>
> Add an --exact option to preserve exact maching (e.g. when
> theres some/feature and some/feature-with-foobar both enabled
> and only the first needs to be disabled).

Why not add a --wildcard option instead, and keep the default behavior
backwards compatible?

> Signed-off-by: Alexander Kanavin <[email protected]>
> ---
>  meta/lib/bbconfigbuild/configfragments.py | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/meta/lib/bbconfigbuild/configfragments.py 
> b/meta/lib/bbconfigbuild/configfragments.py
> index de521f0c149..f5b4dfe1ec2 100644
> --- a/meta/lib/bbconfigbuild/configfragments.py
> +++ b/meta/lib/bbconfigbuild/configfragments.py
> @@ -161,16 +161,19 @@ class ConfigFragmentsPlugin(LayerPlugin):
>          def disable_helper(varname, origvalue, op, newlines):
>              enabled_fragments = origvalue.split()
>              for f in args.fragmentname:
> -                if f in enabled_fragments:
> -                    enabled_fragments.remove(f)
> -                else:
> -                    print("Fragment {} not currently enabled in 
> {}".format(f, args.confpath))
> +                for e in enabled_fragments[:]:
> +                    if (not args.exact and e.startswith(f)) or f==e:
> +                        print("Removing fragment {} from {}".format(e, 
> args.confpath))
> +                        enabled_fragments.remove(e)
>              return " ".join(enabled_fragments), None, 0, True
>  
>          self.create_conf(args.confpath)
>          modified = bb.utils.edit_metadata_file(args.confpath, 
> ["OE_FRAGMENTS"], disable_helper)
> -        if modified:
> -            print("Fragment {} removed from {}.".format(", 
> ".join(args.fragmentname), args.confpath))
> +        if not modified:
> +            if args.exact:
> +                print("Fragment names {} matched nothing in {}.".format(", 
> ".join(args.fragmentname), args.confpath))
> +            else:
> +                print("Fragment prefixes {} matched nothing in 
> {}.".format(", ".join(args.fragmentname), args.confpath))
>  
>      def do_show_fragment(self, args):
>          """ Show the content of a fragment """
> @@ -210,7 +213,8 @@ class ConfigFragmentsPlugin(LayerPlugin):
>  
>          parser_disable_fragment = self.add_command(sp, 'disable-fragment', 
> self.do_disable_fragment, parserecipes=False)
>          parser_disable_fragment.add_argument("--confpath", 
> default=default_confpath, help='Configuration file which contains a list of 
> enabled fragments (default is {}).'.format(default_confpath))
> -        parser_disable_fragment.add_argument('fragmentname', help='The name 
> of the fragment', nargs='+')
> +        parser_disable_fragment.add_argument('--exact', action='store_true', 
> help='Match fragment names exactly')
> +        parser_disable_fragment.add_argument('fragmentname', help='The name 
> of the fragment, or a name prefix to match', nargs='+')
>  
>          parser_show_fragment = self.add_command(sp, 'show-fragment', 
> self.do_show_fragment, parserecipes=False)
>          parser_show_fragment.add_argument('fragmentname', help='The name of 
> the fragment')
>
> 
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#226930): 
https://lists.openembedded.org/g/openembedded-core/message/226930
Mute This Topic: https://lists.openembedded.org/mt/116517046/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to