1
0
mirror of https://git.yoctoproject.org/poky synced 2026-07-17 04:07:06 +00:00

recipetool: create: improve CMake package mapping

* Package names are actually case sensitive near as I can tell, so we
  shouldn't be lowercasing them everywhere.
* Look for CMake packages in pkgdata and map those back to recipes,
  so we aren't dependent on the hardcoded mappings (though those are
  still preserved).
* Avoid duplicates in the unmapped package list

(From OE-Core rev: 2ddad52ccca07245eea43d9b844c6c7d4b667ca3)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2016-02-19 22:39:02 +13:00
committed by Richard Purdie
parent 7b6e5b025e
commit 524ee088b3
2 changed files with 40 additions and 14 deletions
+12 -3
View File
@@ -43,6 +43,7 @@ def tinfoil_init(instance):
class RecipeHandler(object):
recipelibmap = {}
recipeheadermap = {}
recipecmakefilemap = {}
@staticmethod
def load_libmap(d):
@@ -90,15 +91,18 @@ class RecipeHandler(object):
RecipeHandler.recipelibmap['GLESv2'] = 'virtual/libgles2'
@staticmethod
def load_headermap(d):
'''Build up lib headerfile->recipe mapping'''
def load_devel_filemap(d):
'''Build up development file->recipe mapping'''
if RecipeHandler.recipeheadermap:
return
pkgdata_dir = d.getVar('PKGDATA_DIR', True)
includedir = d.getVar('includedir', True)
cmakedir = os.path.join(d.getVar('libdir', True), 'cmake')
for pkg in glob.glob(os.path.join(pkgdata_dir, 'runtime', '*-dev')):
with open(os.path.join(pkgdata_dir, 'runtime', pkg)) as f:
pn = None
headers = []
cmakefiles = []
for line in f:
if line.startswith('PN:'):
pn = line.split(':', 1)[-1].strip()
@@ -108,9 +112,14 @@ class RecipeHandler(object):
for fullpth in sorted(dictval):
if fullpth.startswith(includedir) and fullpth.endswith('.h'):
headers.append(os.path.relpath(fullpth, includedir))
elif fullpth.startswith(cmakedir) and fullpth.endswith('.cmake'):
cmakefiles.append(os.path.relpath(fullpth, cmakedir))
if pn and headers:
for header in headers:
RecipeHandler.recipeheadermap[header] = pn
if pn and cmakefiles:
for fn in cmakefiles:
RecipeHandler.recipecmakefilemap[fn] = pn
@staticmethod
def checkfiles(path, speclist, recursive=False):
@@ -172,7 +181,7 @@ class RecipeHandler(object):
deps.append(recipe)
elif recipe is None:
if header:
RecipeHandler.load_headermap(d)
RecipeHandler.load_devel_filemap(d)
recipe = RecipeHandler.recipeheadermap.get(header, None)
if recipe:
deps.append(recipe)