diff options
author | Alejandro Enedino Hernandez Samaniego <alejandro.enedino.hernandez-samaniego@xilinx.com> | 2018-04-02 13:08:41 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-04-03 23:53:20 +0100 |
commit | b9d51eceac50afd77e2d725253c1d9b35b67aeee (patch) | |
tree | 86793b0be674cc350d36309ded54984b5724d696 /meta/recipes-devtools | |
parent | 4f7e90a0afa9ca685d5c4356255df33f95d915b8 (diff) | |
download | poky-b9d51eceac50afd77e2d725253c1d9b35b67aeee.tar.gz |
python3: Improve logging capabilities for do_create_manifest
Adds a couple of prints to get a nicer log, and creates a
small summary or report after checking every module, it
makes it more feasible for adoption, easier to debug why
a module ended at a certain package and see how the
manifest was created.
(From OE-Core rev: 4c2af72f51a7bf187615fc0b3a229d25c3e191e9)
Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r-- | meta/recipes-devtools/python/python3/create_manifest3.py | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py index 212ddd434a..44f3454582 100644 --- a/meta/recipes-devtools/python/python3/create_manifest3.py +++ b/meta/recipes-devtools/python/python3/create_manifest3.py | |||
@@ -80,7 +80,7 @@ with open('python3-manifest.json') as manifest: | |||
80 | 80 | ||
81 | # First pass to get core-package functionality, because we base everything on the fact that core is actually working | 81 | # First pass to get core-package functionality, because we base everything on the fact that core is actually working |
82 | # Not exactly the same so it should not be a function | 82 | # Not exactly the same so it should not be a function |
83 | print ('Getting dependencies for core package:') | 83 | print ('Getting dependencies for package: core') |
84 | 84 | ||
85 | # Special call to check for core package | 85 | # Special call to check for core package |
86 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') | 86 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') |
@@ -128,6 +128,7 @@ for value in old_manifest['core']['files']: | |||
128 | # Each module will only import what is necessary for it to work in specific | 128 | # Each module will only import what is necessary for it to work in specific |
129 | print ('Getting dependencies for module: %s' % value) | 129 | print ('Getting dependencies for module: %s' % value) |
130 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8') | 130 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8') |
131 | print ('The following dependencies were found for module %s:\n' % value) | ||
131 | print (output) | 132 | print (output) |
132 | for item in output.split(): | 133 | for item in output.split(): |
133 | # We append it so it doesnt hurt what we currently have: | 134 | # We append it so it doesnt hurt what we currently have: |
@@ -170,7 +171,10 @@ for key in old_manifest: | |||
170 | 171 | ||
171 | # Handle special cases, we assume that when they were manually added | 172 | # Handle special cases, we assume that when they were manually added |
172 | # to the manifest we knew what we were doing. | 173 | # to the manifest we knew what we were doing. |
174 | print('\n') | ||
175 | print('--------------------------') | ||
173 | print ('Handling package %s' % key) | 176 | print ('Handling package %s' % key) |
177 | print('--------------------------') | ||
174 | special_packages=['misc', 'modules', 'dev'] | 178 | special_packages=['misc', 'modules', 'dev'] |
175 | if key in special_packages or 'staticdev' in key: | 179 | if key in special_packages or 'staticdev' in key: |
176 | print('Passing %s package directly' % key) | 180 | print('Passing %s package directly' % key) |
@@ -219,11 +223,16 @@ for key in old_manifest: | |||
219 | 223 | ||
220 | # Launch separate task for each module for deterministic behavior | 224 | # Launch separate task for each module for deterministic behavior |
221 | # Each module will only import what is necessary for it to work in specific | 225 | # Each module will only import what is necessary for it to work in specific |
222 | print ('Getting dependencies for module: %s' % value) | 226 | print ('\nGetting dependencies for module: %s' % value) |
223 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8') | 227 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8') |
224 | # We can print dependencies for debugging purposes | 228 | # We can print dependencies for debugging purposes |
229 | print ('The following dependencies were found for module %s:\n' % value) | ||
225 | print (output) | 230 | print (output) |
226 | # Output will have all dependencies | 231 | # Output will have all dependencies |
232 | |||
233 | reportFILES = [] | ||
234 | reportRDEPS = [] | ||
235 | |||
227 | for item in output.split(): | 236 | for item in output.split(): |
228 | 237 | ||
229 | # Warning: This first part is ugly | 238 | # Warning: This first part is ugly |
@@ -255,7 +264,7 @@ for key in old_manifest: | |||
255 | #print('Checking folder %s on package %s' % (item,keyfolder)) | 264 | #print('Checking folder %s on package %s' % (item,keyfolder)) |
256 | for file_folder in old_manifest[keyfolder]['files'] or file_folder in old_manifest[keyfolder]['cached']: | 265 | for file_folder in old_manifest[keyfolder]['files'] or file_folder in old_manifest[keyfolder]['cached']: |
257 | if file_folder==folder: | 266 | if file_folder==folder: |
258 | print ('%s found in %s' % (folder, keyfolder)) | 267 | print ('%s folder found in %s' % (folder, keyfolder)) |
259 | folderFound = True | 268 | folderFound = True |
260 | if keyfolder not in new_manifest[key]['rdepends'] and keyfolder != key: | 269 | if keyfolder not in new_manifest[key]['rdepends'] and keyfolder != key: |
261 | new_manifest[key]['rdepends'].append(keyfolder) | 270 | new_manifest[key]['rdepends'].append(keyfolder) |
@@ -267,6 +276,7 @@ for key in old_manifest: | |||
267 | if inFolders: | 276 | if inFolders: |
268 | continue | 277 | continue |
269 | 278 | ||
279 | |||
270 | # We might already have it on the dictionary since it could depend on a (previously checked) module | 280 | # We might already have it on the dictionary since it could depend on a (previously checked) module |
271 | if item not in new_manifest[key]['files'] and item not in new_manifest[key]['cached']: | 281 | if item not in new_manifest[key]['files'] and item not in new_manifest[key]['cached']: |
272 | # Handle core as a special package, we already did it so we pass it to NEW data structure directly | 282 | # Handle core as a special package, we already did it so we pass it to NEW data structure directly |
@@ -287,6 +297,7 @@ for key in old_manifest: | |||
287 | 297 | ||
288 | else: | 298 | else: |
289 | 299 | ||
300 | |||
290 | # Check if this dependency is already contained on another package, so we add it | 301 | # Check if this dependency is already contained on another package, so we add it |
291 | # as an RDEPENDS, or if its not, it means it should be contained on the current | 302 | # as an RDEPENDS, or if its not, it means it should be contained on the current |
292 | # package, so we should add it to FILES | 303 | # package, so we should add it to FILES |
@@ -298,19 +309,19 @@ for key in old_manifest: | |||
298 | if(newkey!=key): | 309 | if(newkey!=key): |
299 | if newkey not in new_manifest[key]['rdepends']: | 310 | if newkey not in new_manifest[key]['rdepends']: |
300 | # Add it to the new manifest data struct | 311 | # Add it to the new manifest data struct |
301 | # Debug | 312 | reportRDEPS.append('Adding %s to %s RDEPENDS, because it contains %s\n' % (newkey, key, item)) |
302 | print('Adding %s to %s RDEPENDS, because it contains %s' % (newkey, key, item)) | ||
303 | new_manifest[key]['rdepends'].append(newkey) | 313 | new_manifest[key]['rdepends'].append(newkey) |
304 | break | 314 | break |
305 | else: | 315 | else: |
306 | # A module shouldn't contain itself (${libdir}/python3/sqlite3 shouldnt be on sqlite3 files) | 316 | # A module shouldn't contain itself (${libdir}/python3/sqlite3 shouldnt be on sqlite3 files) |
307 | if os.path.basename(item) != key: | 317 | if os.path.basename(item) != key: |
308 | print('Adding %s to %s FILES' % (item, key)) | 318 | reportFILES.append(('Adding %s to %s FILES\n' % (item, key))) |
309 | # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package | 319 | # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package |
310 | if isCached(item): | 320 | if isCached(item): |
311 | new_manifest[key]['cached'].append(item) | 321 | new_manifest[key]['cached'].append(item) |
312 | else: | 322 | else: |
313 | new_manifest[key]['files'].append(item) | 323 | new_manifest[key]['files'].append(item) |
324 | |||
314 | if item.endswith('*'): | 325 | if item.endswith('*'): |
315 | wildcards.append(item) | 326 | wildcards.append(item) |
316 | if item not in allfiles: | 327 | if item not in allfiles: |
@@ -318,6 +329,15 @@ for key in old_manifest: | |||
318 | else: | 329 | else: |
319 | repeated.append(item) | 330 | repeated.append(item) |
320 | 331 | ||
332 | print('\n') | ||
333 | print('#################################') | ||
334 | print('Summary for module %s' % value) | ||
335 | print('FILES found for module %s:' % value) | ||
336 | print(''.join(reportFILES)) | ||
337 | print('RDEPENDS found for module %s:' % value) | ||
338 | print(''.join(reportRDEPS)) | ||
339 | print('#################################') | ||
340 | |||
321 | print ('The following files are repeated (contained in more than one package), please check which package should get it:') | 341 | print ('The following files are repeated (contained in more than one package), please check which package should get it:') |
322 | print (repeated) | 342 | print (repeated) |
323 | print('The following files contain wildcards, please check they are necessary') | 343 | print('The following files contain wildcards, please check they are necessary') |
@@ -334,4 +354,4 @@ for key in new_manifest: | |||
334 | # Create the manifest from the data structure that was built | 354 | # Create the manifest from the data structure that was built |
335 | with open('python3-manifest.json.new','w') as outfile: | 355 | with open('python3-manifest.json.new','w') as outfile: |
336 | json.dump(new_manifest,outfile,sort_keys=True, indent=4) | 356 | json.dump(new_manifest,outfile,sort_keys=True, indent=4) |
337 | outfile.write("\n") | 357 | outfile.write('\n') |