Skip to contentSkip to conversation

oe-pkgdata-util: Make parse_pkgdatafile() support package suffixed vars

PATCH Superseded Peter Kjellerstedt 1 participant 2 messages Jun 2, 2018

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 oe-pkgdata-util: Make parse_pkgdatafile() support package suffixed vars

Support for variables suffixed with package names, e.g., PKGV_foo, was removed in commit d48c2c6f, which broke support for recipes that set other versions on their packages than what is in ${PV}.

---
 scripts/oe-pkgdata-util | 46 ++++++++++++++++++----------------------------
 1 file changed, 18 insertions(+), 28 deletions(-)
scripts/oe-pkgdata-util +18 -28
index aea8a57516..965f473725 100755
@@ -286,36 +286,26 @@ def lookup_recipe(args):
 
 def package_info(args):
     def parse_pkgdatafile(pkgdatafile):
+        vars = ['PKGV', 'PKGE', 'PKGR', 'PN', 'PV', 'PE', 'PR', 'PKGSIZE']
         with open(pkgdatafile, 'r') as f:
-            pkge = ''
-            pkgr = ''
-            pe = ''
-            pr = ''
+            vals = dict()
             for line in f:
-                if line.startswith('PKGV:'):
-                    pkg_version = line.split(':', 1)[1].strip()
-                elif line.startswith('PKGE:'):
-                    pkge = line.split(':', 1)[1].strip()
-                elif line.startswith('PKGR:'):
-                    pkgr = line.split(':', 1)[1].strip()
-                elif line.startswith('PN:'):
-                    recipe = line.split(':', 1)[1].strip()
-                elif line.startswith('PV:'):
-                    recipe_version = line.split(':', 1)[1].strip()
-                elif line.startswith('PE:'):
-                    pe = line.split(':', 1)[1].strip()
-                elif line.startswith('PR:'):
-                    pr = line.split(':', 1)[1].strip()
-                elif line.startswith('PKGSIZE'):
-                    pkg_size = line.split(':', 1)[1].strip()
-            if pkge:
-                pkg_version = pkge + ":" + pkg_version
-            if pkgr:
-                pkg_version = pkg_version + "-" + pkgr
-            if pe:
-                recipe_version = pe + ":" + recipe_version
-            if pr:
-                recipe_version = recipe_version + "-" + pr
+                for var in vars:
+                    m = re.match(var + '(?:_\S+)?:\s*(.+?)\s*$', line)
+                    if m:
+                        vals[var] = m.group(1)
+            pkg_version = vals['PKGV'] or ''
+            recipe = vals['PN'] or ''
+            recipe_version = vals['PV'] or ''
+            pkg_size = vals['PKGSIZE'] or ''
+            if 'PKGE' in vals:
+                pkg_version = vals['PKGE'] + ":" + pkg_version
+            if 'PKGR' in vals:
+                pkg_version = pkg_version + "-" + vals['PKGR']
+            if 'PE' in vals:
+                recipe_version = vals['PE'] + ":" + recipe_version
+            if 'PR' in vals:
+                recipe_version = recipe_version + "-" + vals['PR']
             print("%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size))
 
     # Handle both multiple arguments and multiple values within an arg (old syntax)
Signature · 1 line
2.12.0
#1 lore raw

PATCH 2/2 oe-pkgdata-util: package-info: Re-add support for the --extra option

Commit 64d3ce83 broke the --extra option.

---
 scripts/oe-pkgdata-util | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
scripts/oe-pkgdata-util +9 -1
index 965f473725..bd12047ea5 100755
@@ -287,8 +287,11 @@ def lookup_recipe(args):
 def package_info(args):
     def parse_pkgdatafile(pkgdatafile):
         vars = ['PKGV', 'PKGE', 'PKGR', 'PN', 'PV', 'PE', 'PR', 'PKGSIZE']
+        if args.extra:
+            vars += args.extra
         with open(pkgdatafile, 'r') as f:
             vals = dict()
+            extra = ''
             for line in f:
                 for var in vars:
                     m = re.match(var + '(?:_\S+)?:\s*(.+?)\s*$', line)
@@ -306,7 +309,12 @@ def package_info(args):
                 recipe_version = vals['PE'] + ":" + recipe_version
             if 'PR' in vals:
                 recipe_version = recipe_version + "-" + vals['PR']
-            print("%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size))
+            if args.extra:
+                for var in args.extra:
+                    if var in vals:
+                        val = re.sub(r'\s+', ' ', vals[var])
+                        extra += ' "%s"' % val
+            print("%s %s %s %s %s%s" % (pkg, pkg_version, recipe, recipe_version, pkg_size, extra))
 
     # Handle both multiple arguments and multiple values within an arg (old syntax)
     packages = []
Signature · 1 line
2.12.0