diff mbox series

scripts: convert-overrides: Allow command-line customizations

Message ID 20221111145551.1115391-1-JPEWhacker@gmail.com
State Accepted, archived
Commit b9551f9180bf9f13fb1c480b5b7892fdc831ffcd
Headers show
Series scripts: convert-overrides: Allow command-line customizations | expand

Commit Message

Joshua Watt Nov. 11, 2022, 2:55 p.m. UTC
Adds argument parsing to the conversion script so that the fields that
the script uses to do conversions can be customized on the command line.
The intention is to allows easier customization without having to fork
the script, and allow automated checking on 3rd party layers via CI
without false positives

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
 scripts/contrib/convert-overrides.py | 103 +++++++++++++++------------
 1 file changed, 57 insertions(+), 46 deletions(-)

Comments

Joshua Watt Nov. 15, 2022, 7:41 p.m. UTC | #1
Steve,

Please backport this to kirkstone and langdale.

Thanks!

On Fri, Nov 11, 2022 at 8:55 AM Joshua Watt <jpewhacker@gmail.com> wrote:
>
> Adds argument parsing to the conversion script so that the fields that
> the script uses to do conversions can be customized on the command line.
> The intention is to allows easier customization without having to fork
> the script, and allow automated checking on 3rd party layers via CI
> without false positives
>
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
>  scripts/contrib/convert-overrides.py | 103 +++++++++++++++------------
>  1 file changed, 57 insertions(+), 46 deletions(-)
>
> diff --git a/scripts/contrib/convert-overrides.py b/scripts/contrib/convert-overrides.py
> index 4d41a4c4759..1939757f1bc 100755
> --- a/scripts/contrib/convert-overrides.py
> +++ b/scripts/contrib/convert-overrides.py
> @@ -22,50 +22,62 @@ import sys
>  import tempfile
>  import shutil
>  import mimetypes
> +import argparse
>
> -if len(sys.argv) < 2:
> -    print("Please specify a directory to run the conversion script against.")
> -    sys.exit(1)
> +parser = argparse.ArgumentParser(description="Convert override syntax")
> +parser.add_argument("--override", "-o", action="append", default=[], help="Add additional strings to consider as an override (e.g. custom machines/distros")
> +parser.add_argument("--skip", "-s", action="append", default=[], help="Add additional string to skip and not consider an override")
> +parser.add_argument("--skip-ext", "-e", action="append", default=[], help="Additional file suffixes to skip when processing (e.g. '.foo')")
> +parser.add_argument("--package-vars", action="append", default=[], help="Additional variables to treat as package variables")
> +parser.add_argument("--image-vars", action="append", default=[], help="Additional variables to treat as image variables")
> +parser.add_argument("--short-override", action="append", default=[], help="Additional strings to treat as short overrides")
> +parser.add_argument("path", nargs="+", help="Paths to convert")
> +
> +args = parser.parse_args()
>
>  # List of strings to treat as overrides
> -vars = ["append", "prepend", "remove"]
> -vars = vars + ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
> -vars = vars + ["genericx86", "edgerouter", "beaglebone-yocto"]
> -vars = vars + ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
> -vars = vars + ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
> -vars = vars + ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
> -vars = vars + ["tune-",  "pn-", "forcevariable"]
> -vars = vars + ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
> -vars = vars + ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
> -vars = vars + ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
> -vars = vars + ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
> -vars = vars + ["linux-gnueabi", "eabi"]
> -vars = vars + ["virtclass-multilib", "virtclass-mcextend"]
> +vars = args.override
> +vars += ["append", "prepend", "remove"]
> +vars += ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
> +vars += ["genericx86", "edgerouter", "beaglebone-yocto"]
> +vars += ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
> +vars += ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
> +vars += ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
> +vars += ["tune-",  "pn-", "forcevariable"]
> +vars += ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
> +vars += ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
> +vars += ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
> +vars += ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
> +vars += ["linux-gnueabi", "eabi"]
> +vars += ["virtclass-multilib", "virtclass-mcextend"]
>
>  # List of strings to treat as overrides but only with whitespace following or another override (more restricted matching).
>  # Handles issues with arc matching arch.
> -shortvars = ["arc", "mips", "mipsel", "sh4"]
> +shortvars = ["arc", "mips", "mipsel", "sh4"] + args.short_override
>
>  # Variables which take packagenames as an override
>  packagevars = ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY", "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS", "PKG", "ALLOW_EMPTY",
>                "pkg_postrm", "pkg_postinst_ontarget", "pkg_postinst", "INITSCRIPT_NAME", "INITSCRIPT_PARAMS", "DEBIAN_NOAUTONAME", "ALTERNATIVE",
>                "PKGE", "PKGV", "PKGR", "USERADD_PARAM", "GROUPADD_PARAM", "CONFFILES", "SYSTEMD_SERVICE", "LICENSE", "SECTION", "pkg_preinst",
>                "pkg_prerm", "RREPLACES", "GROUPMEMS_PARAM", "SYSTEMD_AUTO_ENABLE", "SKIP_FILEDEPS", "PRIVATE_LIBS", "PACKAGE_ADD_METADATA",
> -              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"]
> +              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"] + args.package_vars
>
>  # Expressions to skip if encountered, these are not overrides
> -skips = ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
> -skips = skips + ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
> -skips = skips + ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
> -skips = skips + ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
> -skips = skips + ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
> -skips = skips + ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
> -skips = skips + ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
> -skips = skips + ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
> -skips = skips + ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
> -
> -imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"]
> -packagevars = packagevars + imagevars
> +skips = args.skip
> +skips += ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
> +skips += ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
> +skips += ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
> +skips += ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
> +skips += ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
> +skips += ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
> +skips += ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
> +skips += ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
> +skips += ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
> +
> +imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"] + args.image_vars
> +packagevars += imagevars
> +
> +skip_ext = [".html", ".patch", ".m4", ".diff"] + args.skip_ext
>
>  vars_re = {}
>  for exp in vars:
> @@ -124,21 +136,20 @@ def processfile(fn):
>  ourname = os.path.basename(sys.argv[0])
>  ourversion = "0.9.3"
>
> -if os.path.isfile(sys.argv[1]):
> -    processfile(sys.argv[1])
> -    sys.exit(0)
> -
> -for targetdir in sys.argv[1:]:
> -    print("processing directory '%s'" % targetdir)
> -    for root, dirs, files in os.walk(targetdir):
> -        for name in files:
> -            if name == ourname:
> -                continue
> -            fn = os.path.join(root, name)
> -            if os.path.islink(fn):
> -                continue
> -            if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
> -                continue
> -            processfile(fn)
> +for p in args.path:
> +    if os.path.isfile(p):
> +        processfile(p)
> +    else:
> +        print("processing directory '%s'" % p)
> +        for root, dirs, files in os.walk(p):
> +            for name in files:
> +                if name == ourname:
> +                    continue
> +                fn = os.path.join(root, name)
> +                if os.path.islink(fn):
> +                    continue
> +                if "/.git/" in fn or any(fn.endswith(ext) for ext in skip_ext):
> +                    continue
> +                processfile(fn)
>
>  print("All files processed with version %s" % ourversion)
> --
> 2.33.0
>
Steve Sakoman Nov. 15, 2022, 9:56 p.m. UTC | #2
On Tue, Nov 15, 2022, 9:42 AM Joshua Watt <jpewhacker@gmail.com> wrote:

> Steve,
>
> Please backport this to kirkstone and langdale.
>
> Thanks!
>

Ok, will do!

Steve



> On Fri, Nov 11, 2022 at 8:55 AM Joshua Watt <jpewhacker@gmail.com> wrote:
> >
> > Adds argument parsing to the conversion script so that the fields that
> > the script uses to do conversions can be customized on the command line.
> > The intention is to allows easier customization without having to fork
> > the script, and allow automated checking on 3rd party layers via CI
> > without false positives
> >
> > Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> > ---
> >  scripts/contrib/convert-overrides.py | 103 +++++++++++++++------------
> >  1 file changed, 57 insertions(+), 46 deletions(-)
> >
> > diff --git a/scripts/contrib/convert-overrides.py
> b/scripts/contrib/convert-overrides.py
> > index 4d41a4c4759..1939757f1bc 100755
> > --- a/scripts/contrib/convert-overrides.py
> > +++ b/scripts/contrib/convert-overrides.py
> > @@ -22,50 +22,62 @@ import sys
> >  import tempfile
> >  import shutil
> >  import mimetypes
> > +import argparse
> >
> > -if len(sys.argv) < 2:
> > -    print("Please specify a directory to run the conversion script
> against.")
> > -    sys.exit(1)
> > +parser = argparse.ArgumentParser(description="Convert override syntax")
> > +parser.add_argument("--override", "-o", action="append", default=[],
> help="Add additional strings to consider as an override (e.g. custom
> machines/distros")
> > +parser.add_argument("--skip", "-s", action="append", default=[],
> help="Add additional string to skip and not consider an override")
> > +parser.add_argument("--skip-ext", "-e", action="append", default=[],
> help="Additional file suffixes to skip when processing (e.g. '.foo')")
> > +parser.add_argument("--package-vars", action="append", default=[],
> help="Additional variables to treat as package variables")
> > +parser.add_argument("--image-vars", action="append", default=[],
> help="Additional variables to treat as image variables")
> > +parser.add_argument("--short-override", action="append", default=[],
> help="Additional strings to treat as short overrides")
> > +parser.add_argument("path", nargs="+", help="Paths to convert")
> > +
> > +args = parser.parse_args()
> >
> >  # List of strings to treat as overrides
> > -vars = ["append", "prepend", "remove"]
> > -vars = vars + ["qemuarm", "qemux86", "qemumips", "qemuppc",
> "qemuriscv", "qemuall"]
> > -vars = vars + ["genericx86", "edgerouter", "beaglebone-yocto"]
> > -vars = vars + ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64",
> "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
> > -vars = vars + ["mipsarch", "x86-x32", "mips16e", "microblaze",
> "e5500-64b", "mipsisa32", "mipsisa64"]
> > -vars = vars + ["class-native", "class-target", "class-cross-canadian",
> "class-cross", "class-devupstream"]
> > -vars = vars + ["tune-",  "pn-", "forcevariable"]
> > -vars = vars + ["libc-musl", "libc-glibc",
> "libc-newlib","libc-baremetal"]
> > -vars = vars + ["task-configure", "task-compile", "task-install",
> "task-clean", "task-image-qa", "task-rm_work", "task-image-complete",
> "task-populate-sdk"]
> > -vars = vars + ["toolchain-clang", "mydistro", "nios2", "sdkmingw32",
> "overrideone", "overridetwo"]
> > -vars = vars + ["linux-gnux32", "linux-muslx32", "linux-gnun32",
> "mingw32", "poky", "darwin", "linuxstdbase"]
> > -vars = vars + ["linux-gnueabi", "eabi"]
> > -vars = vars + ["virtclass-multilib", "virtclass-mcextend"]
> > +vars = args.override
> > +vars += ["append", "prepend", "remove"]
> > +vars += ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv",
> "qemuall"]
> > +vars += ["genericx86", "edgerouter", "beaglebone-yocto"]
> > +vars += ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64",
> "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
> > +vars += ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b",
> "mipsisa32", "mipsisa64"]
> > +vars += ["class-native", "class-target", "class-cross-canadian",
> "class-cross", "class-devupstream"]
> > +vars += ["tune-",  "pn-", "forcevariable"]
> > +vars += ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
> > +vars += ["task-configure", "task-compile", "task-install",
> "task-clean", "task-image-qa", "task-rm_work", "task-image-complete",
> "task-populate-sdk"]
> > +vars += ["toolchain-clang", "mydistro", "nios2", "sdkmingw32",
> "overrideone", "overridetwo"]
> > +vars += ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32",
> "poky", "darwin", "linuxstdbase"]
> > +vars += ["linux-gnueabi", "eabi"]
> > +vars += ["virtclass-multilib", "virtclass-mcextend"]
> >
> >  # List of strings to treat as overrides but only with whitespace
> following or another override (more restricted matching).
> >  # Handles issues with arc matching arch.
> > -shortvars = ["arc", "mips", "mipsel", "sh4"]
> > +shortvars = ["arc", "mips", "mipsel", "sh4"] + args.short_override
> >
> >  # Variables which take packagenames as an override
> >  packagevars = ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY",
> "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS", "PKG", "ALLOW_EMPTY",
> >                "pkg_postrm", "pkg_postinst_ontarget", "pkg_postinst",
> "INITSCRIPT_NAME", "INITSCRIPT_PARAMS", "DEBIAN_NOAUTONAME", "ALTERNATIVE",
> >                "PKGE", "PKGV", "PKGR", "USERADD_PARAM",
> "GROUPADD_PARAM", "CONFFILES", "SYSTEMD_SERVICE", "LICENSE", "SECTION",
> "pkg_preinst",
> >                "pkg_prerm", "RREPLACES", "GROUPMEMS_PARAM",
> "SYSTEMD_AUTO_ENABLE", "SKIP_FILEDEPS", "PRIVATE_LIBS",
> "PACKAGE_ADD_METADATA",
> > -              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"]
> > +              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"] +
> args.package_vars
> >
> >  # Expressions to skip if encountered, these are not overrides
> > -skips = ["parser_append", "recipe_to_append", "extra_append",
> "to_remove", "show_appends", "applied_appends", "file_appends",
> "handle_remove"]
> > -skips = skips + ["expanded_removes", "color_remove", "test_remove",
> "empty_remove", "toaster_prepend", "num_removed", "licfiles_append",
> "_write_append"]
> > -skips = skips + ["no_report_remove", "test_prepend", "test_append",
> "multiple_append", "test_remove", "shallow_remove", "do_remove_layer",
> "first_append"]
> > -skips = skips + ["parser_remove", "to_append", "no_remove",
> "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86",
> "base_dep_prepend"]
> > -skips = skips + ["autotools_dep_prepend", "go_map_arm",
> "alt_remove_links", "systemd_append_file", "file_append",
> "process_file_darwin"]
> > -skips = skips + ["run_loaddata_poky", "determine_if_poky_env",
> "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove",
> "do_install_armmultilib"]
> > -skips = skips + ["get_appends_for_files", "test_doubleref_remove",
> "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove",
> "revmap_remove"]
> > -skips = skips + ["test_rpm_remove", "test_bitbakelayers_add_remove",
> "recipe_append_file", "log_data_removed", "recipe_append",
> "systemd_machine_unit_append"]
> > -skips = skips + ["recipetool_append", "changetype_remove",
> "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends",
> "tgz_removed"]
> > -
> > -imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP",
> "CONVERSION_CMD", "COMPRESS_CMD"]
> > -packagevars = packagevars + imagevars
> > +skips = args.skip
> > +skips += ["parser_append", "recipe_to_append", "extra_append",
> "to_remove", "show_appends", "applied_appends", "file_appends",
> "handle_remove"]
> > +skips += ["expanded_removes", "color_remove", "test_remove",
> "empty_remove", "toaster_prepend", "num_removed", "licfiles_append",
> "_write_append"]
> > +skips += ["no_report_remove", "test_prepend", "test_append",
> "multiple_append", "test_remove", "shallow_remove", "do_remove_layer",
> "first_append"]
> > +skips += ["parser_remove", "to_append", "no_remove",
> "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86",
> "base_dep_prepend"]
> > +skips += ["autotools_dep_prepend", "go_map_arm", "alt_remove_links",
> "systemd_append_file", "file_append", "process_file_darwin"]
> > +skips += ["run_loaddata_poky", "determine_if_poky_env",
> "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove",
> "do_install_armmultilib"]
> > +skips += ["get_appends_for_files", "test_doubleref_remove",
> "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove",
> "revmap_remove"]
> > +skips += ["test_rpm_remove", "test_bitbakelayers_add_remove",
> "recipe_append_file", "log_data_removed", "recipe_append",
> "systemd_machine_unit_append"]
> > +skips += ["recipetool_append", "changetype_remove",
> "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends",
> "tgz_removed"]
> > +
> > +imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP",
> "CONVERSION_CMD", "COMPRESS_CMD"] + args.image_vars
> > +packagevars += imagevars
> > +
> > +skip_ext = [".html", ".patch", ".m4", ".diff"] + args.skip_ext
> >
> >  vars_re = {}
> >  for exp in vars:
> > @@ -124,21 +136,20 @@ def processfile(fn):
> >  ourname = os.path.basename(sys.argv[0])
> >  ourversion = "0.9.3"
> >
> > -if os.path.isfile(sys.argv[1]):
> > -    processfile(sys.argv[1])
> > -    sys.exit(0)
> > -
> > -for targetdir in sys.argv[1:]:
> > -    print("processing directory '%s'" % targetdir)
> > -    for root, dirs, files in os.walk(targetdir):
> > -        for name in files:
> > -            if name == ourname:
> > -                continue
> > -            fn = os.path.join(root, name)
> > -            if os.path.islink(fn):
> > -                continue
> > -            if "/.git/" in fn or fn.endswith(".html") or
> fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
> > -                continue
> > -            processfile(fn)
> > +for p in args.path:
> > +    if os.path.isfile(p):
> > +        processfile(p)
> > +    else:
> > +        print("processing directory '%s'" % p)
> > +        for root, dirs, files in os.walk(p):
> > +            for name in files:
> > +                if name == ourname:
> > +                    continue
> > +                fn = os.path.join(root, name)
> > +                if os.path.islink(fn):
> > +                    continue
> > +                if "/.git/" in fn or any(fn.endswith(ext) for ext in
> skip_ext):
> > +                    continue
> > +                processfile(fn)
> >
> >  print("All files processed with version %s" % ourversion)
> > --
> > 2.33.0
> >
>
Joshua Watt Dec. 6, 2022, 2:40 p.m. UTC | #3
Steve,

I don't see this one in (or pending for) kirkstone yet?

Thanks,
Joshua Watt

On Tue, Nov 15, 2022 at 3:56 PM Steve Sakoman <steve@sakoman.com> wrote:
>
>
>
> On Tue, Nov 15, 2022, 9:42 AM Joshua Watt <jpewhacker@gmail.com> wrote:
>>
>> Steve,
>>
>> Please backport this to kirkstone and langdale.
>>
>> Thanks!
>
>
> Ok, will do!
>
> Steve
>
>
>>
>> On Fri, Nov 11, 2022 at 8:55 AM Joshua Watt <jpewhacker@gmail.com> wrote:
>> >
>> > Adds argument parsing to the conversion script so that the fields that
>> > the script uses to do conversions can be customized on the command line.
>> > The intention is to allows easier customization without having to fork
>> > the script, and allow automated checking on 3rd party layers via CI
>> > without false positives
>> >
>> > Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
>> > ---
>> >  scripts/contrib/convert-overrides.py | 103 +++++++++++++++------------
>> >  1 file changed, 57 insertions(+), 46 deletions(-)
>> >
>> > diff --git a/scripts/contrib/convert-overrides.py b/scripts/contrib/convert-overrides.py
>> > index 4d41a4c4759..1939757f1bc 100755
>> > --- a/scripts/contrib/convert-overrides.py
>> > +++ b/scripts/contrib/convert-overrides.py
>> > @@ -22,50 +22,62 @@ import sys
>> >  import tempfile
>> >  import shutil
>> >  import mimetypes
>> > +import argparse
>> >
>> > -if len(sys.argv) < 2:
>> > -    print("Please specify a directory to run the conversion script against.")
>> > -    sys.exit(1)
>> > +parser = argparse.ArgumentParser(description="Convert override syntax")
>> > +parser.add_argument("--override", "-o", action="append", default=[], help="Add additional strings to consider as an override (e.g. custom machines/distros")
>> > +parser.add_argument("--skip", "-s", action="append", default=[], help="Add additional string to skip and not consider an override")
>> > +parser.add_argument("--skip-ext", "-e", action="append", default=[], help="Additional file suffixes to skip when processing (e.g. '.foo')")
>> > +parser.add_argument("--package-vars", action="append", default=[], help="Additional variables to treat as package variables")
>> > +parser.add_argument("--image-vars", action="append", default=[], help="Additional variables to treat as image variables")
>> > +parser.add_argument("--short-override", action="append", default=[], help="Additional strings to treat as short overrides")
>> > +parser.add_argument("path", nargs="+", help="Paths to convert")
>> > +
>> > +args = parser.parse_args()
>> >
>> >  # List of strings to treat as overrides
>> > -vars = ["append", "prepend", "remove"]
>> > -vars = vars + ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
>> > -vars = vars + ["genericx86", "edgerouter", "beaglebone-yocto"]
>> > -vars = vars + ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
>> > -vars = vars + ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
>> > -vars = vars + ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
>> > -vars = vars + ["tune-",  "pn-", "forcevariable"]
>> > -vars = vars + ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
>> > -vars = vars + ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
>> > -vars = vars + ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
>> > -vars = vars + ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
>> > -vars = vars + ["linux-gnueabi", "eabi"]
>> > -vars = vars + ["virtclass-multilib", "virtclass-mcextend"]
>> > +vars = args.override
>> > +vars += ["append", "prepend", "remove"]
>> > +vars += ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
>> > +vars += ["genericx86", "edgerouter", "beaglebone-yocto"]
>> > +vars += ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
>> > +vars += ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
>> > +vars += ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
>> > +vars += ["tune-",  "pn-", "forcevariable"]
>> > +vars += ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
>> > +vars += ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
>> > +vars += ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
>> > +vars += ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
>> > +vars += ["linux-gnueabi", "eabi"]
>> > +vars += ["virtclass-multilib", "virtclass-mcextend"]
>> >
>> >  # List of strings to treat as overrides but only with whitespace following or another override (more restricted matching).
>> >  # Handles issues with arc matching arch.
>> > -shortvars = ["arc", "mips", "mipsel", "sh4"]
>> > +shortvars = ["arc", "mips", "mipsel", "sh4"] + args.short_override
>> >
>> >  # Variables which take packagenames as an override
>> >  packagevars = ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY", "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS", "PKG", "ALLOW_EMPTY",
>> >                "pkg_postrm", "pkg_postinst_ontarget", "pkg_postinst", "INITSCRIPT_NAME", "INITSCRIPT_PARAMS", "DEBIAN_NOAUTONAME", "ALTERNATIVE",
>> >                "PKGE", "PKGV", "PKGR", "USERADD_PARAM", "GROUPADD_PARAM", "CONFFILES", "SYSTEMD_SERVICE", "LICENSE", "SECTION", "pkg_preinst",
>> >                "pkg_prerm", "RREPLACES", "GROUPMEMS_PARAM", "SYSTEMD_AUTO_ENABLE", "SKIP_FILEDEPS", "PRIVATE_LIBS", "PACKAGE_ADD_METADATA",
>> > -              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"]
>> > +              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"] + args.package_vars
>> >
>> >  # Expressions to skip if encountered, these are not overrides
>> > -skips = ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
>> > -skips = skips + ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
>> > -skips = skips + ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
>> > -skips = skips + ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
>> > -skips = skips + ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
>> > -skips = skips + ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
>> > -skips = skips + ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
>> > -skips = skips + ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
>> > -skips = skips + ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
>> > -
>> > -imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"]
>> > -packagevars = packagevars + imagevars
>> > +skips = args.skip
>> > +skips += ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
>> > +skips += ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
>> > +skips += ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
>> > +skips += ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
>> > +skips += ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
>> > +skips += ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
>> > +skips += ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
>> > +skips += ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
>> > +skips += ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
>> > +
>> > +imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"] + args.image_vars
>> > +packagevars += imagevars
>> > +
>> > +skip_ext = [".html", ".patch", ".m4", ".diff"] + args.skip_ext
>> >
>> >  vars_re = {}
>> >  for exp in vars:
>> > @@ -124,21 +136,20 @@ def processfile(fn):
>> >  ourname = os.path.basename(sys.argv[0])
>> >  ourversion = "0.9.3"
>> >
>> > -if os.path.isfile(sys.argv[1]):
>> > -    processfile(sys.argv[1])
>> > -    sys.exit(0)
>> > -
>> > -for targetdir in sys.argv[1:]:
>> > -    print("processing directory '%s'" % targetdir)
>> > -    for root, dirs, files in os.walk(targetdir):
>> > -        for name in files:
>> > -            if name == ourname:
>> > -                continue
>> > -            fn = os.path.join(root, name)
>> > -            if os.path.islink(fn):
>> > -                continue
>> > -            if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
>> > -                continue
>> > -            processfile(fn)
>> > +for p in args.path:
>> > +    if os.path.isfile(p):
>> > +        processfile(p)
>> > +    else:
>> > +        print("processing directory '%s'" % p)
>> > +        for root, dirs, files in os.walk(p):
>> > +            for name in files:
>> > +                if name == ourname:
>> > +                    continue
>> > +                fn = os.path.join(root, name)
>> > +                if os.path.islink(fn):
>> > +                    continue
>> > +                if "/.git/" in fn or any(fn.endswith(ext) for ext in skip_ext):
>> > +                    continue
>> > +                processfile(fn)
>> >
>> >  print("All files processed with version %s" % ourversion)
>> > --
>> > 2.33.0
>> >
Steve Sakoman Dec. 6, 2022, 2:50 p.m. UTC | #4
On Tue, Dec 6, 2022 at 4:40 AM Joshua Watt <jpewhacker@gmail.com> wrote:

> I don't see this one in (or pending for) kirkstone yet?

Oops, I thought I had done that. Sorry!  I've got it now for both
langdale and kirkstone.

Steve

> On Tue, Nov 15, 2022 at 3:56 PM Steve Sakoman <steve@sakoman.com> wrote:
> >
> >
> >
> > On Tue, Nov 15, 2022, 9:42 AM Joshua Watt <jpewhacker@gmail.com> wrote:
> >>
> >> Steve,
> >>
> >> Please backport this to kirkstone and langdale.
> >>
> >> Thanks!
> >
> >
> > Ok, will do!
> >
> > Steve
> >
> >
> >>
> >> On Fri, Nov 11, 2022 at 8:55 AM Joshua Watt <jpewhacker@gmail.com> wrote:
> >> >
> >> > Adds argument parsing to the conversion script so that the fields that
> >> > the script uses to do conversions can be customized on the command line.
> >> > The intention is to allows easier customization without having to fork
> >> > the script, and allow automated checking on 3rd party layers via CI
> >> > without false positives
> >> >
> >> > Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> >> > ---
> >> >  scripts/contrib/convert-overrides.py | 103 +++++++++++++++------------
> >> >  1 file changed, 57 insertions(+), 46 deletions(-)
> >> >
> >> > diff --git a/scripts/contrib/convert-overrides.py b/scripts/contrib/convert-overrides.py
> >> > index 4d41a4c4759..1939757f1bc 100755
> >> > --- a/scripts/contrib/convert-overrides.py
> >> > +++ b/scripts/contrib/convert-overrides.py
> >> > @@ -22,50 +22,62 @@ import sys
> >> >  import tempfile
> >> >  import shutil
> >> >  import mimetypes
> >> > +import argparse
> >> >
> >> > -if len(sys.argv) < 2:
> >> > -    print("Please specify a directory to run the conversion script against.")
> >> > -    sys.exit(1)
> >> > +parser = argparse.ArgumentParser(description="Convert override syntax")
> >> > +parser.add_argument("--override", "-o", action="append", default=[], help="Add additional strings to consider as an override (e.g. custom machines/distros")
> >> > +parser.add_argument("--skip", "-s", action="append", default=[], help="Add additional string to skip and not consider an override")
> >> > +parser.add_argument("--skip-ext", "-e", action="append", default=[], help="Additional file suffixes to skip when processing (e.g. '.foo')")
> >> > +parser.add_argument("--package-vars", action="append", default=[], help="Additional variables to treat as package variables")
> >> > +parser.add_argument("--image-vars", action="append", default=[], help="Additional variables to treat as image variables")
> >> > +parser.add_argument("--short-override", action="append", default=[], help="Additional strings to treat as short overrides")
> >> > +parser.add_argument("path", nargs="+", help="Paths to convert")
> >> > +
> >> > +args = parser.parse_args()
> >> >
> >> >  # List of strings to treat as overrides
> >> > -vars = ["append", "prepend", "remove"]
> >> > -vars = vars + ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
> >> > -vars = vars + ["genericx86", "edgerouter", "beaglebone-yocto"]
> >> > -vars = vars + ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
> >> > -vars = vars + ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
> >> > -vars = vars + ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
> >> > -vars = vars + ["tune-",  "pn-", "forcevariable"]
> >> > -vars = vars + ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
> >> > -vars = vars + ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
> >> > -vars = vars + ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
> >> > -vars = vars + ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
> >> > -vars = vars + ["linux-gnueabi", "eabi"]
> >> > -vars = vars + ["virtclass-multilib", "virtclass-mcextend"]
> >> > +vars = args.override
> >> > +vars += ["append", "prepend", "remove"]
> >> > +vars += ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
> >> > +vars += ["genericx86", "edgerouter", "beaglebone-yocto"]
> >> > +vars += ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
> >> > +vars += ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
> >> > +vars += ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
> >> > +vars += ["tune-",  "pn-", "forcevariable"]
> >> > +vars += ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
> >> > +vars += ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
> >> > +vars += ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
> >> > +vars += ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
> >> > +vars += ["linux-gnueabi", "eabi"]
> >> > +vars += ["virtclass-multilib", "virtclass-mcextend"]
> >> >
> >> >  # List of strings to treat as overrides but only with whitespace following or another override (more restricted matching).
> >> >  # Handles issues with arc matching arch.
> >> > -shortvars = ["arc", "mips", "mipsel", "sh4"]
> >> > +shortvars = ["arc", "mips", "mipsel", "sh4"] + args.short_override
> >> >
> >> >  # Variables which take packagenames as an override
> >> >  packagevars = ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY", "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS", "PKG", "ALLOW_EMPTY",
> >> >                "pkg_postrm", "pkg_postinst_ontarget", "pkg_postinst", "INITSCRIPT_NAME", "INITSCRIPT_PARAMS", "DEBIAN_NOAUTONAME", "ALTERNATIVE",
> >> >                "PKGE", "PKGV", "PKGR", "USERADD_PARAM", "GROUPADD_PARAM", "CONFFILES", "SYSTEMD_SERVICE", "LICENSE", "SECTION", "pkg_preinst",
> >> >                "pkg_prerm", "RREPLACES", "GROUPMEMS_PARAM", "SYSTEMD_AUTO_ENABLE", "SKIP_FILEDEPS", "PRIVATE_LIBS", "PACKAGE_ADD_METADATA",
> >> > -              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"]
> >> > +              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"] + args.package_vars
> >> >
> >> >  # Expressions to skip if encountered, these are not overrides
> >> > -skips = ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
> >> > -skips = skips + ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
> >> > -skips = skips + ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
> >> > -skips = skips + ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
> >> > -skips = skips + ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
> >> > -skips = skips + ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
> >> > -skips = skips + ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
> >> > -skips = skips + ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
> >> > -skips = skips + ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
> >> > -
> >> > -imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"]
> >> > -packagevars = packagevars + imagevars
> >> > +skips = args.skip
> >> > +skips += ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
> >> > +skips += ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
> >> > +skips += ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
> >> > +skips += ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
> >> > +skips += ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
> >> > +skips += ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
> >> > +skips += ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
> >> > +skips += ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
> >> > +skips += ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
> >> > +
> >> > +imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"] + args.image_vars
> >> > +packagevars += imagevars
> >> > +
> >> > +skip_ext = [".html", ".patch", ".m4", ".diff"] + args.skip_ext
> >> >
> >> >  vars_re = {}
> >> >  for exp in vars:
> >> > @@ -124,21 +136,20 @@ def processfile(fn):
> >> >  ourname = os.path.basename(sys.argv[0])
> >> >  ourversion = "0.9.3"
> >> >
> >> > -if os.path.isfile(sys.argv[1]):
> >> > -    processfile(sys.argv[1])
> >> > -    sys.exit(0)
> >> > -
> >> > -for targetdir in sys.argv[1:]:
> >> > -    print("processing directory '%s'" % targetdir)
> >> > -    for root, dirs, files in os.walk(targetdir):
> >> > -        for name in files:
> >> > -            if name == ourname:
> >> > -                continue
> >> > -            fn = os.path.join(root, name)
> >> > -            if os.path.islink(fn):
> >> > -                continue
> >> > -            if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
> >> > -                continue
> >> > -            processfile(fn)
> >> > +for p in args.path:
> >> > +    if os.path.isfile(p):
> >> > +        processfile(p)
> >> > +    else:
> >> > +        print("processing directory '%s'" % p)
> >> > +        for root, dirs, files in os.walk(p):
> >> > +            for name in files:
> >> > +                if name == ourname:
> >> > +                    continue
> >> > +                fn = os.path.join(root, name)
> >> > +                if os.path.islink(fn):
> >> > +                    continue
> >> > +                if "/.git/" in fn or any(fn.endswith(ext) for ext in skip_ext):
> >> > +                    continue
> >> > +                processfile(fn)
> >> >
> >> >  print("All files processed with version %s" % ourversion)
> >> > --
> >> > 2.33.0
> >> >
diff mbox series

Patch

diff --git a/scripts/contrib/convert-overrides.py b/scripts/contrib/convert-overrides.py
index 4d41a4c4759..1939757f1bc 100755
--- a/scripts/contrib/convert-overrides.py
+++ b/scripts/contrib/convert-overrides.py
@@ -22,50 +22,62 @@  import sys
 import tempfile
 import shutil
 import mimetypes
+import argparse
 
-if len(sys.argv) < 2:
-    print("Please specify a directory to run the conversion script against.")
-    sys.exit(1)
+parser = argparse.ArgumentParser(description="Convert override syntax")
+parser.add_argument("--override", "-o", action="append", default=[], help="Add additional strings to consider as an override (e.g. custom machines/distros")
+parser.add_argument("--skip", "-s", action="append", default=[], help="Add additional string to skip and not consider an override")
+parser.add_argument("--skip-ext", "-e", action="append", default=[], help="Additional file suffixes to skip when processing (e.g. '.foo')")
+parser.add_argument("--package-vars", action="append", default=[], help="Additional variables to treat as package variables")
+parser.add_argument("--image-vars", action="append", default=[], help="Additional variables to treat as image variables")
+parser.add_argument("--short-override", action="append", default=[], help="Additional strings to treat as short overrides")
+parser.add_argument("path", nargs="+", help="Paths to convert")
+
+args = parser.parse_args()
 
 # List of strings to treat as overrides
-vars = ["append", "prepend", "remove"]
-vars = vars + ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
-vars = vars + ["genericx86", "edgerouter", "beaglebone-yocto"]
-vars = vars + ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
-vars = vars + ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
-vars = vars + ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
-vars = vars + ["tune-",  "pn-", "forcevariable"]
-vars = vars + ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
-vars = vars + ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
-vars = vars + ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
-vars = vars + ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
-vars = vars + ["linux-gnueabi", "eabi"]
-vars = vars + ["virtclass-multilib", "virtclass-mcextend"]
+vars = args.override
+vars += ["append", "prepend", "remove"]
+vars += ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
+vars += ["genericx86", "edgerouter", "beaglebone-yocto"]
+vars += ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
+vars += ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
+vars += ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
+vars += ["tune-",  "pn-", "forcevariable"]
+vars += ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
+vars += ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
+vars += ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
+vars += ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
+vars += ["linux-gnueabi", "eabi"]
+vars += ["virtclass-multilib", "virtclass-mcextend"]
 
 # List of strings to treat as overrides but only with whitespace following or another override (more restricted matching).
 # Handles issues with arc matching arch.
-shortvars = ["arc", "mips", "mipsel", "sh4"]
+shortvars = ["arc", "mips", "mipsel", "sh4"] + args.short_override
 
 # Variables which take packagenames as an override
 packagevars = ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY", "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS", "PKG", "ALLOW_EMPTY",
               "pkg_postrm", "pkg_postinst_ontarget", "pkg_postinst", "INITSCRIPT_NAME", "INITSCRIPT_PARAMS", "DEBIAN_NOAUTONAME", "ALTERNATIVE",
               "PKGE", "PKGV", "PKGR", "USERADD_PARAM", "GROUPADD_PARAM", "CONFFILES", "SYSTEMD_SERVICE", "LICENSE", "SECTION", "pkg_preinst",
               "pkg_prerm", "RREPLACES", "GROUPMEMS_PARAM", "SYSTEMD_AUTO_ENABLE", "SKIP_FILEDEPS", "PRIVATE_LIBS", "PACKAGE_ADD_METADATA",
-              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"]
+              "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"] + args.package_vars
 
 # Expressions to skip if encountered, these are not overrides
-skips = ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
-skips = skips + ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
-skips = skips + ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
-skips = skips + ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
-skips = skips + ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
-skips = skips + ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
-skips = skips + ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
-skips = skips + ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
-skips = skips + ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
-
-imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"]
-packagevars = packagevars + imagevars
+skips = args.skip
+skips += ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
+skips += ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
+skips += ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
+skips += ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
+skips += ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
+skips += ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
+skips += ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
+skips += ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
+skips += ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
+
+imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"] + args.image_vars
+packagevars += imagevars
+
+skip_ext = [".html", ".patch", ".m4", ".diff"] + args.skip_ext
 
 vars_re = {}
 for exp in vars:
@@ -124,21 +136,20 @@  def processfile(fn):
 ourname = os.path.basename(sys.argv[0])
 ourversion = "0.9.3"
 
-if os.path.isfile(sys.argv[1]):
-    processfile(sys.argv[1])
-    sys.exit(0)
-
-for targetdir in sys.argv[1:]:
-    print("processing directory '%s'" % targetdir)
-    for root, dirs, files in os.walk(targetdir):
-        for name in files:
-            if name == ourname:
-                continue
-            fn = os.path.join(root, name)
-            if os.path.islink(fn):
-                continue
-            if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
-                continue
-            processfile(fn)
+for p in args.path:
+    if os.path.isfile(p):
+        processfile(p)
+    else:
+        print("processing directory '%s'" % p)
+        for root, dirs, files in os.walk(p):
+            for name in files:
+                if name == ourname:
+                    continue
+                fn = os.path.join(root, name)
+                if os.path.islink(fn):
+                    continue
+                if "/.git/" in fn or any(fn.endswith(ext) for ext in skip_ext):
+                    continue
+                processfile(fn)
 
 print("All files processed with version %s" % ourversion)