diff mbox series

[v1,4/5] genboardcfg: allow defconfigs in board directory

Message ID 20211217230131.2715940-5-troy.kisky@boundarydevices.com
State Deferred
Delegated to: Tom Rini
Headers show
Series Move board specific files to board directory | expand

Commit Message

Troy Kisky Dec. 17, 2021, 11:01 p.m. UTC
The adds boards whose defconfigs are in the board's directory.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
---
 tools/genboardscfg.py | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

Comments

Simon Glass Dec. 28, 2021, 8:33 a.m. UTC | #1
Hi Troy,

On Fri, 17 Dec 2021 at 16:02, Troy Kisky <troy.kisky@boundarydevices.com> wrote:
>
> The adds boards whose defconfigs are in the board's directory.
>
> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> ---
>  tools/genboardscfg.py | 37 ++++++++++++++++++++++++++++++++++++-
>  1 file changed, 36 insertions(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Please see below

> diff --git a/tools/genboardscfg.py b/tools/genboardscfg.py
> index 4ee7aa1f891..60e2fe5cf3e 100755
> --- a/tools/genboardscfg.py
> +++ b/tools/genboardscfg.py
> @@ -37,6 +37,13 @@ COMMENT_BLOCK = '''#
>  ''' % __file__
>
>  ### helper functions ###
> +def find_defconfig_in_board_subdir(f):

Needs a comment as to what it does and what it returns

> +    for (dirpath, dirnames, filenames) in os.walk('board'):
> +        for filename in filenames:
> +            if filename == f:
> +                    return True
> +    return False
> +
>  def try_remove(f):
>      """Remove a file ignoring 'No such file or directory' error."""
>      try:
> @@ -76,6 +83,14 @@ def output_is_new(output):
>              if ctime < os.path.getctime(filepath):
>                  return False
>
> +    for (dirpath, dirnames, filenames) in os.walk('board'):
> +        for filename in fnmatch.filter(filenames, '*'):
> +            if fnmatch.fnmatch(filename, '.*'):
> +                continue
> +            filepath = os.path.join(dirpath, filename)
> +            if ctime < os.path.getctime(filepath):
> +                return False
> +
>      for (dirpath, dirnames, filenames) in os.walk('.'):
>          for filename in filenames:
>              if (fnmatch.fnmatch(filename, '*~') or
> @@ -94,7 +109,8 @@ def output_is_new(output):
>                  continue
>              defconfig = line.split()[6] + '_defconfig'
>              if not os.path.exists(os.path.join(CONFIG_DIR, defconfig)):
> -                return False
> +                if not find_defconfig_in_board_subdir(defconfig):
> +                    return False
>
>      return True
>
> @@ -231,6 +247,12 @@ def scan_defconfigs(jobs=1):
>                  continue
>              all_defconfigs.append(os.path.join(dirpath, filename))
>
> +    for (dirpath, dirnames, filenames) in os.walk('board'):
> +        for filename in fnmatch.filter(filenames, '*_defconfig'):
> +            if fnmatch.fnmatch(filename, '.*'):
> +                continue
> +            all_defconfigs.append(os.path.join(dirpath, filename))
> +
>      total_boards = len(all_defconfigs)
>      processes = []
>      queues = []
> @@ -346,6 +368,19 @@ class MaintainersDatabase:
>                  targets = []
>                  maintainers = []
>                  status = '-'
> +
> +        front, match, rear = file.partition('board/')

Please add a comment about what is going on here

> +        if match:
> +            front, match, rear = file.partition('/MAINTAINERS')
> +            if front:
> +                for (dirpath, dirnames, filenames) in os.walk(front):
> +                    for filename in fnmatch.filter(filenames, '*_defconfig'):
> +                        if fnmatch.fnmatch(filename, '.*'):
> +                            continue
> +                        front, match, rear = filename.rpartition('_defconfig')
> +                        if match and not rear:
> +                            targets.append(front)
> +
>          if targets:
>              for target in targets:
>                  self.database[target] = (status, maintainers)
> --
> 2.32.0
>

Regards,
Simon
diff mbox series

Patch

diff --git a/tools/genboardscfg.py b/tools/genboardscfg.py
index 4ee7aa1f891..60e2fe5cf3e 100755
--- a/tools/genboardscfg.py
+++ b/tools/genboardscfg.py
@@ -37,6 +37,13 @@  COMMENT_BLOCK = '''#
 ''' % __file__
 
 ### helper functions ###
+def find_defconfig_in_board_subdir(f):
+    for (dirpath, dirnames, filenames) in os.walk('board'):
+        for filename in filenames:
+            if filename == f:
+                    return True
+    return False
+
 def try_remove(f):
     """Remove a file ignoring 'No such file or directory' error."""
     try:
@@ -76,6 +83,14 @@  def output_is_new(output):
             if ctime < os.path.getctime(filepath):
                 return False
 
+    for (dirpath, dirnames, filenames) in os.walk('board'):
+        for filename in fnmatch.filter(filenames, '*'):
+            if fnmatch.fnmatch(filename, '.*'):
+                continue
+            filepath = os.path.join(dirpath, filename)
+            if ctime < os.path.getctime(filepath):
+                return False
+
     for (dirpath, dirnames, filenames) in os.walk('.'):
         for filename in filenames:
             if (fnmatch.fnmatch(filename, '*~') or
@@ -94,7 +109,8 @@  def output_is_new(output):
                 continue
             defconfig = line.split()[6] + '_defconfig'
             if not os.path.exists(os.path.join(CONFIG_DIR, defconfig)):
-                return False
+                if not find_defconfig_in_board_subdir(defconfig):
+                    return False
 
     return True
 
@@ -231,6 +247,12 @@  def scan_defconfigs(jobs=1):
                 continue
             all_defconfigs.append(os.path.join(dirpath, filename))
 
+    for (dirpath, dirnames, filenames) in os.walk('board'):
+        for filename in fnmatch.filter(filenames, '*_defconfig'):
+            if fnmatch.fnmatch(filename, '.*'):
+                continue
+            all_defconfigs.append(os.path.join(dirpath, filename))
+
     total_boards = len(all_defconfigs)
     processes = []
     queues = []
@@ -346,6 +368,19 @@  class MaintainersDatabase:
                 targets = []
                 maintainers = []
                 status = '-'
+
+        front, match, rear = file.partition('board/')
+        if match:
+            front, match, rear = file.partition('/MAINTAINERS')
+            if front:
+                for (dirpath, dirnames, filenames) in os.walk(front):
+                    for filename in fnmatch.filter(filenames, '*_defconfig'):
+                        if fnmatch.fnmatch(filename, '.*'):
+                            continue
+                        front, match, rear = filename.rpartition('_defconfig')
+                        if match and not rear:
+                            targets.append(front)
+
         if targets:
             for target in targets:
                 self.database[target] = (status, maintainers)