diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-08-16 16:01:06 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-08-17 09:53:04 +0100 |
commit | dd6b55d70c0616e69ecc7366650cd0f7e1678bd8 (patch) | |
tree | d00f23f07f237d833ee7e11df584fa17dd7c41cc /scripts/lib | |
parent | 12e1f9815d7f0bf6dbe22e8e9cff6d1bda9241ce (diff) | |
download | poky-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/lib')
-rw-r--r-- | scripts/lib/devtool/search.py | 5 | ||||
-rw-r--r-- | scripts/lib/recipetool/append.py | 8 | ||||
-rw-r--r-- | scripts/lib/recipetool/create.py | 4 | ||||
-rw-r--r-- | scripts/lib/recipetool/create_buildsys_python.py | 2 |
4 files changed, 10 insertions, 9 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: |