[Buildroot] [PATCH v3 10/12] support/scripts/pkg-stats: set status to 'na' for virtual packages

Heiko Thiery heiko.thiery at gmail.com
Sat Feb 22 08:57:14 UTC 2020


If there is no infra set or infra is virtual the status is set to 'na'.

This is done for the follwing checks:
 - license
 - license-files
 - hash
 - hash-license
 - patches
 - version

Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
---
 support/scripts/pkg-stats | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats
index e954dd125e..be3b6d7e71 100755
--- a/support/scripts/pkg-stats
+++ b/support/scripts/pkg-stats
@@ -125,6 +125,14 @@ class Package:
                 self.status['url'] = ("warning", "missing")
                 fp.close()
 
+    def is_valid_infra(self):
+        try:
+            if self.infras[0][1] == 'virtual':
+                return False
+        except IndexError:
+                return False
+        return True
+
     def set_infra(self):
         """
         Fills in the .infras field
@@ -146,6 +154,11 @@ class Package:
         """
         Fills in the .status['license'] and .status['license-files'] fields
         """
+        if self.is_valid_infra() == False:
+            self.status['license'] = ("na", "no valid package infra")
+            self.status['license-files'] = ("na", "no valid package infra")
+            return
+
         var = self.pkgvar()
         self.status['license'] = ("error", "missing")
         self.status['license-files'] = ("error", "missing")
@@ -160,6 +173,11 @@ class Package:
         """
         Fills in the .status['hash'] field
         """
+        if self.is_valid_infra() == False:
+            self.status['hash'] = ("na", "no valid package infra")
+            self.status['hash-license'] = ("na", "no valid package infra")
+            return
+
         hashpath = self.path.replace(".mk", ".hash")
         self.status['hash-license'] = ("na", "no hash file")
         if os.path.exists(hashpath):
@@ -180,6 +198,10 @@ class Package:
         """
         Fills in the .patch_count, .patch_files and .status['patches'] fields
         """
+        if self.is_valid_infra() == False:
+            self.status['patches'] = ("na", "no valid package infra")
+            return
+
         pkgdir = os.path.dirname(self.path)
         for subdir, _, _ in os.walk(pkgdir):
             self.patch_files = fnmatch.filter(os.listdir(subdir), '*.patch')
@@ -558,6 +580,10 @@ def check_package_latest_version(packages):
         pkg.latest_version['version'] = r[1]
         pkg.latest_version['id'] = r[2]
 
+        if pkg.is_valid_infra() == False:
+            pkg.status['version'] = ("na", "no valid package infra")
+            continue
+
         if pkg.latest_version['status'] == RM_API_STATUS_ERROR:
             pkg.status['version'] = ('warning', 'RM API error')
         elif pkg.latest_version['status'] == RM_API_STATUS_NOT_FOUND:
-- 
2.20.1



More information about the buildroot mailing list