summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2021-08-16 16:01:06 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-08-17 09:53:04 +0100
commitdd6b55d70c0616e69ecc7366650cd0f7e1678bd8 (patch)
treed00f23f07f237d833ee7e11df584fa17dd7c41cc /scripts
parent12e1f9815d7f0bf6dbe22e8e9cff6d1bda9241ce (diff)
downloadpoky-dd6b55d70c0616e69ecc7366650cd0f7e1678bd8.tar.gz
package/scripts: Fix FILES_INFO handling
There is a long standing bug where FILES_INFO isn't written into pkgdata with a package suffix. This means if the files are read into the datastore as intended, the last one "wins". Fix this to work as intended. Most of the call sites using the data need to be updated to handle this and the overrides change correctly. Also fix some other problematic references noticed along the way. (From OE-Core rev: a1190903e0a61a12c9854c96af918ae8d12c6327) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/devtool/search.py5
-rw-r--r--scripts/lib/recipetool/append.py8
-rw-r--r--scripts/lib/recipetool/create.py4
-rw-r--r--scripts/lib/recipetool/create_buildsys_python.py2
-rwxr-xr-xscripts/oe-pkgdata-util4
5 files changed, 12 insertions, 11 deletions
diff --git a/scripts/lib/devtool/search.py b/scripts/lib/devtool/search.py
index d81cdd876f..70b81cac5e 100644
--- a/scripts/lib/devtool/search.py
+++ b/scripts/lib/devtool/search.py
@@ -62,10 +62,11 @@ def search(args, config, basepath, workspace):
62 with open(os.path.join(pkgdata_dir, 'runtime', pkg), 'r') as f: 62 with open(os.path.join(pkgdata_dir, 'runtime', pkg), 'r') as f:
63 for line in f: 63 for line in f:
64 if ': ' in line: 64 if ': ' in line:
65 splitline = line.split(':', 1) 65 splitline = line.split(': ', 1)
66 key = splitline[0] 66 key = splitline[0]
67 value = splitline[1].strip() 67 value = splitline[1].strip()
68 if key in ['PKG:%s' % pkg, 'DESCRIPTION', 'FILES_INFO'] or key.startswith('FILERPROVIDES_'): 68 key = key.replace(":" + pkg, "")
69 if key in ['PKG', 'DESCRIPTION', 'FILES_INFO', 'FILERPROVIDES']:
69 if keyword_rc.search(value): 70 if keyword_rc.search(value):
70 match = True 71 match = True
71 break 72 break
diff --git a/scripts/lib/recipetool/append.py b/scripts/lib/recipetool/append.py
index 5f629c07d8..88ed8c5f01 100644
--- a/scripts/lib/recipetool/append.py
+++ b/scripts/lib/recipetool/append.py
@@ -72,15 +72,15 @@ def find_target_file(targetpath, d, pkglist=None):
72 # This does assume that PN comes before other values, but that's a fairly safe assumption 72 # This does assume that PN comes before other values, but that's a fairly safe assumption
73 for line in f: 73 for line in f:
74 if line.startswith('PN:'): 74 if line.startswith('PN:'):
75 pn = line.split(':', 1)[1].strip() 75 pn = line.split(': ', 1)[1].strip()
76 elif line.startswith('FILES_INFO:'): 76 elif line.startswith('FILES_INFO'):
77 val = line.split(':', 1)[1].strip() 77 val = line.split(': ', 1)[1].strip()
78 dictval = json.loads(val) 78 dictval = json.loads(val)
79 for fullpth in dictval.keys(): 79 for fullpth in dictval.keys():
80 if fnmatch.fnmatchcase(fullpth, targetpath): 80 if fnmatch.fnmatchcase(fullpth, targetpath):
81 recipes[targetpath].append(pn) 81 recipes[targetpath].append(pn)
82 elif line.startswith('pkg_preinst:') or line.startswith('pkg_postinst:'): 82 elif line.startswith('pkg_preinst:') or line.startswith('pkg_postinst:'):
83 scriptval = line.split(':', 1)[1].strip().encode('utf-8').decode('unicode_escape') 83 scriptval = line.split(': ', 1)[1].strip().encode('utf-8').decode('unicode_escape')
84 if 'update-alternatives --install %s ' % targetpath in scriptval: 84 if 'update-alternatives --install %s ' % targetpath in scriptval:
85 recipes[targetpath].append('?%s' % pn) 85 recipes[targetpath].append('?%s' % pn)
86 elif targetpath_re.search(scriptval): 86 elif targetpath_re.search(scriptval):
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index 0ac97e02e9..5cd72ea0a7 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -115,8 +115,8 @@ class RecipeHandler(object):
115 for line in f: 115 for line in f:
116 if line.startswith('PN:'): 116 if line.startswith('PN:'):
117 pn = line.split(':', 1)[-1].strip() 117 pn = line.split(':', 1)[-1].strip()
118 elif line.startswith('FILES_INFO:'): 118 elif line.startswith('FILES_INFO:%s:' % pkg):
119 val = line.split(':', 1)[1].strip() 119 val = line.split(': ', 1)[1].strip()
120 dictval = json.loads(val) 120 dictval = json.loads(val)
121 for fullpth in sorted(dictval): 121 for fullpth in sorted(dictval):
122 if fullpth.startswith(includedir) and fullpth.endswith('.h'): 122 if fullpth.startswith(includedir) and fullpth.endswith('.h'):
diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
index fdd3366038..8aa44650d3 100644
--- a/scripts/lib/recipetool/create_buildsys_python.py
+++ b/scripts/lib/recipetool/create_buildsys_python.py
@@ -545,7 +545,7 @@ class PythonRecipeHandler(RecipeHandler):
545 with open(pkgdatafile, 'r') as f: 545 with open(pkgdatafile, 'r') as f:
546 for line in f.readlines(): 546 for line in f.readlines():
547 field, value = line.split(': ', 1) 547 field, value = line.split(': ', 1)
548 if field == 'FILES_INFO': 548 if field.startswith('FILES_INFO'):
549 files_info = ast.literal_eval(value) 549 files_info = ast.literal_eval(value)
550 break 550 break
551 else: 551 else:
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index 94d44002ab..ffa3850b8b 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -431,7 +431,7 @@ def list_pkg_files(args):
431 for line in f: 431 for line in f:
432 if line.startswith('FILES_INFO:'): 432 if line.startswith('FILES_INFO:'):
433 found = True 433 found = True
434 val = line.split(':', 1)[1].strip() 434 val = line.split(': ', 1)[1].strip()
435 dictval = json.loads(val) 435 dictval = json.loads(val)
436 if long: 436 if long:
437 width = max(map(len, dictval), default=0) 437 width = max(map(len, dictval), default=0)
@@ -500,7 +500,7 @@ def find_path(args):
500 with open(os.path.join(root,fn)) as f: 500 with open(os.path.join(root,fn)) as f:
501 for line in f: 501 for line in f:
502 if line.startswith('FILES_INFO:'): 502 if line.startswith('FILES_INFO:'):
503 val = line.split(':', 1)[1].strip() 503 val = line.split(': ', 1)[1].strip()
504 dictval = json.loads(val) 504 dictval = json.loads(val)
505 for fullpth in dictval.keys(): 505 for fullpth in dictval.keys():
506 if fnmatch.fnmatchcase(fullpth, args.targetpath): 506 if fnmatch.fnmatchcase(fullpth, args.targetpath):