mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00
recipetool: create: improve mapping for autotools program macros
Make the following improvements to mapping items specified in AC_CHECK_PROG, AC_PATH_PROG and AX_WITH_PROG to recipes/classes: * Produce a map of native recipe -> binary for all binaries currently in STAGING_BINDIR_NATIVE and use this when mapping items * Add some more entries to the class map * Ignore autotools binaries since they are covered by the inherit of autotools * Ignore coreutils-native since that would almost always be a bogus dependency (From OE-Core rev: 5614c5ae6a004d4367eccc34dd3cc7ee61fb7e57) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
1607fac521
commit
2b6a35212d
|
@ -1,6 +1,6 @@
|
||||||
# Recipe creation tool - create command plugin
|
# Recipe creation tool - create command plugin
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2015 Intel Corporation
|
# Copyright (C) 2014-2016 Intel Corporation
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License version 2 as
|
# it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -44,6 +44,7 @@ class RecipeHandler(object):
|
||||||
recipelibmap = {}
|
recipelibmap = {}
|
||||||
recipeheadermap = {}
|
recipeheadermap = {}
|
||||||
recipecmakefilemap = {}
|
recipecmakefilemap = {}
|
||||||
|
recipebinmap = {}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def load_libmap(d):
|
def load_libmap(d):
|
||||||
|
@ -121,6 +122,23 @@ class RecipeHandler(object):
|
||||||
for fn in cmakefiles:
|
for fn in cmakefiles:
|
||||||
RecipeHandler.recipecmakefilemap[fn] = pn
|
RecipeHandler.recipecmakefilemap[fn] = pn
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def load_binmap(d):
|
||||||
|
'''Build up native binary->recipe mapping'''
|
||||||
|
if RecipeHandler.recipebinmap:
|
||||||
|
return
|
||||||
|
sstate_manifests = d.getVar('SSTATE_MANIFESTS', True)
|
||||||
|
staging_bindir_native = d.getVar('STAGING_BINDIR_NATIVE', True)
|
||||||
|
build_arch = d.getVar('BUILD_ARCH', True)
|
||||||
|
fileprefix = 'manifest-%s-' % build_arch
|
||||||
|
for fn in glob.glob(os.path.join(sstate_manifests, '%s*-native.populate_sysroot' % fileprefix)):
|
||||||
|
with open(fn, 'r') as f:
|
||||||
|
pn = os.path.basename(fn).rsplit('.', 1)[0][len(fileprefix):]
|
||||||
|
for line in f:
|
||||||
|
if line.startswith(staging_bindir_native):
|
||||||
|
prog = os.path.basename(line.rstrip())
|
||||||
|
RecipeHandler.recipebinmap[prog] = pn
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def checkfiles(path, speclist, recursive=False):
|
def checkfiles(path, speclist, recursive=False):
|
||||||
results = []
|
results = []
|
||||||
|
@ -143,7 +161,7 @@ class RecipeHandler(object):
|
||||||
RecipeHandler.load_libmap(d)
|
RecipeHandler.load_libmap(d)
|
||||||
|
|
||||||
ignorelibs = ['socket']
|
ignorelibs = ['socket']
|
||||||
ignoredeps = ['gcc-runtime', 'glibc', 'uclibc', 'musl', 'tar-native', 'binutils-native']
|
ignoredeps = ['gcc-runtime', 'glibc', 'uclibc', 'musl', 'tar-native', 'binutils-native', 'coreutils-native']
|
||||||
|
|
||||||
unmappedpc = []
|
unmappedpc = []
|
||||||
pcdeps = list(set(pcdeps))
|
pcdeps = list(set(pcdeps))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Recipe creation tool - create command build system handlers
|
# Recipe creation tool - create command build system handlers
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Intel Corporation
|
# Copyright (C) 2014-2016 Intel Corporation
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License version 2 as
|
# it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -404,14 +404,34 @@ class AutotoolsRecipeHandler(RecipeHandler):
|
||||||
values = {}
|
values = {}
|
||||||
inherits = []
|
inherits = []
|
||||||
|
|
||||||
# FIXME this mapping is very thin
|
# Hardcoded map, we also use a dynamic one based on what's in the sysroot
|
||||||
progmap = {'flex': 'flex-native',
|
progmap = {'flex': 'flex-native',
|
||||||
'bison': 'bison-native',
|
'bison': 'bison-native',
|
||||||
'm4': 'm4-native',
|
'm4': 'm4-native',
|
||||||
'tar': 'tar-native',
|
'tar': 'tar-native',
|
||||||
'ar': 'binutils-native'}
|
'ar': 'binutils-native',
|
||||||
|
'ranlib': 'binutils-native',
|
||||||
|
'ld': 'binutils-native',
|
||||||
|
'strip': 'binutils-native',
|
||||||
|
'libtool': '',
|
||||||
|
'autoconf': '',
|
||||||
|
'autoheader': '',
|
||||||
|
'automake': '',
|
||||||
|
'uname': '',
|
||||||
|
'rm': '',
|
||||||
|
'cp': '',
|
||||||
|
'mv': '',
|
||||||
|
'find': '',
|
||||||
|
'awk': '',
|
||||||
|
'sed': '',
|
||||||
|
}
|
||||||
progclassmap = {'gconftool-2': 'gconf',
|
progclassmap = {'gconftool-2': 'gconf',
|
||||||
'pkg-config': 'pkgconfig'}
|
'pkg-config': 'pkgconfig',
|
||||||
|
'python': 'pythonnative',
|
||||||
|
'python3': 'python3native',
|
||||||
|
'perl': 'perlnative',
|
||||||
|
'makeinfo': 'texinfo',
|
||||||
|
}
|
||||||
|
|
||||||
pkg_re = re.compile('PKG_CHECK_MODULES\(\s*\[?[a-zA-Z0-9_]*\]?,\s*\[?([^,\]]*)\]?[),].*')
|
pkg_re = re.compile('PKG_CHECK_MODULES\(\s*\[?[a-zA-Z0-9_]*\]?,\s*\[?([^,\]]*)\]?[),].*')
|
||||||
pkgce_re = re.compile('PKG_CHECK_EXISTS\(\s*\[?([^,\]]*)\]?[),].*')
|
pkgce_re = re.compile('PKG_CHECK_EXISTS\(\s*\[?([^,\]]*)\]?[),].*')
|
||||||
|
@ -462,6 +482,8 @@ class AutotoolsRecipeHandler(RecipeHandler):
|
||||||
deps = []
|
deps = []
|
||||||
unmapped = []
|
unmapped = []
|
||||||
|
|
||||||
|
RecipeHandler.load_binmap(tinfoil.config_data)
|
||||||
|
|
||||||
def process_macro(keyword, value):
|
def process_macro(keyword, value):
|
||||||
for handler in handlers:
|
for handler in handlers:
|
||||||
if handler.process_macro(srctree, keyword, value, process_value, libdeps, pcdeps, deps, outlines, inherits, values):
|
if handler.process_macro(srctree, keyword, value, process_value, libdeps, pcdeps, deps, outlines, inherits, values):
|
||||||
|
@ -498,10 +520,12 @@ class AutotoolsRecipeHandler(RecipeHandler):
|
||||||
if progclass:
|
if progclass:
|
||||||
inherits.append(progclass)
|
inherits.append(progclass)
|
||||||
else:
|
else:
|
||||||
|
progdep = RecipeHandler.recipebinmap.get(prog, None)
|
||||||
|
if not progdep:
|
||||||
progdep = progmap.get(prog, None)
|
progdep = progmap.get(prog, None)
|
||||||
if progdep:
|
if progdep:
|
||||||
deps.append(progdep)
|
deps.append(progdep)
|
||||||
else:
|
elif progdep is None:
|
||||||
if not prog.startswith('$'):
|
if not prog.startswith('$'):
|
||||||
unmapped.append(prog)
|
unmapped.append(prog)
|
||||||
elif keyword == 'AC_CHECK_LIB':
|
elif keyword == 'AC_CHECK_LIB':
|
||||||
|
|
Loading…
Reference in New Issue
Block a user