python3: Fix do_create_manifest for python3-sqlite3

Some of the sqlite3 files ended up in python3-misc incorrectly,
this is caused becuse we couldnt add the whole ${libdir}/python3/sqlite3
folder on the package because we also have another sqlite3-tests
package that needs to include another folder from that directory.

This patch not only fixes the do_create_manifest script to handle this
situation, but also patches the manifest (created using the script)
which also fixes a hiddn runtime dependency that we wouldn't have seen.

(From OE-Core rev: 3324cb31670f33ffe193e550e3b3da8380b3c8c9)

Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alejandro Enedino Hernandez Samaniego
2018-03-29 23:28:31 -07:00
committed by Richard Purdie
parent 5d288d286e
commit dc24e256a9
2 changed files with 37 additions and 21 deletions

View File

@@ -124,7 +124,6 @@ for value in old_manifest['core']['files']:
# Get module name , shouldnt be affected by libdir/bindir
value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0]
# Launch separate task for each module for deterministic behavior
# Each module will only import what is necessary for it to work in specific
print ('Getting dependencies for module: %s' % value)
@@ -203,8 +202,20 @@ for key in old_manifest:
if value not in new_manifest[key]['files']:
new_manifest[key]['files'].append(value)
continue
# Get module name , shouldnt be affected by libdir/bindir
value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0]
# We need to check if the imported module comes from another (e.g. sqlite3.dump)
path,value = os.path.split(value)
path = os.path.basename(path)
value = os.path.splitext(os.path.basename(value))[0]
# If this condition is met, it means we need to import it from another module
# or its the folder itself (e.g. unittest)
if path == key:
if value:
value = path + '.' + value
else:
value = path
# Launch separate task for each module for deterministic behavior
# Each module will only import what is necessary for it to work in specific
@@ -292,19 +303,20 @@ for key in old_manifest:
new_manifest[key]['rdepends'].append(newkey)
break
else:
# Debug
print('Adding %s to %s FILES' % (item, key))
# Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package
if isCached(item):
new_manifest[key]['cached'].append(item)
else:
new_manifest[key]['files'].append(item)
if item.endswith('*'):
wildcards.append(item)
if item not in allfiles:
allfiles.append(item)
else:
repeated.append(item)
# A module shouldn't contain itself (${libdir}/python3/sqlite3 shouldnt be on sqlite3 files)
if os.path.basename(item) != key:
print('Adding %s to %s FILES' % (item, key))
# Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package
if isCached(item):
new_manifest[key]['cached'].append(item)
else:
new_manifest[key]['files'].append(item)
if item.endswith('*'):
wildcards.append(item)
if item not in allfiles:
allfiles.append(item)
else:
repeated.append(item)
print ('The following files are repeated (contained in more than one package), please check which package should get it:')
print (repeated)
@@ -322,3 +334,4 @@ for key in new_manifest:
# Create the manifest from the data structure that was built
with open('python3-manifest.json.new','w') as outfile:
json.dump(new_manifest,outfile,sort_keys=True, indent=4)
outfile.write("\n")

View File

@@ -591,8 +591,7 @@
],
"rdepends": [
"core",
"stringold",
"netserver"
"stringold"
],
"summary": "Python logging support"
},
@@ -978,14 +977,18 @@
},
"sqlite3": {
"cached": [
"${libdir}/python3.5/sqlite3/__pycache__/*.pyc"
"${libdir}/python3.5/sqlite3/__pycache__",
"${libdir}/python3.5/sqlite3/__pycache__/dbapi2.*.pyc",
"${libdir}/python3.5/sqlite3/__pycache__/dump.*.pyc"
],
"files": [
"${libdir}/python3.5/lib-dynload/_sqlite3.*.so",
"${libdir}/python3.5/sqlite3/*.py"
"${libdir}/python3.5/sqlite3/dbapi2.py",
"${libdir}/python3.5/sqlite3/dump.py"
],
"rdepends": [
"core"
"core",
"datetime"
],
"summary": "Python Sqlite3 database support"
},
@@ -1145,4 +1148,4 @@
],
"summary": "Python XML-RPC support"
}
}
}