本文整理汇总了Python中recipetool.create.RecipeHandler类的典型用法代码示例。如果您正苦于以下问题:Python RecipeHandler类的具体用法?Python RecipeHandler怎么用?Python RecipeHandler使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了RecipeHandler类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: process
def process(self, srctree, classes, lines_before, lines_after, handled):
if 'buildsystem' in handled:
return False
autoconf = False
if RecipeHandler.checkfiles(srctree, ['configure.ac', 'configure.in']):
autoconf = True
values = AutotoolsRecipeHandler.extract_autotools_deps(lines_before, srctree)
classes.extend(values.pop('inherit', '').split())
for var, value in values.iteritems():
lines_before.append('%s = "%s"' % (var, value))
else:
conffile = RecipeHandler.checkfiles(srctree, ['configure'])
if conffile:
# Check if this is just a pre-generated autoconf configure script
with open(conffile[0], 'r') as f:
for i in range(1, 10):
if 'Generated by GNU Autoconf' in f.readline():
autoconf = True
break
if autoconf:
lines_before.append('# NOTE: if this software is not capable of being built in a separate build directory')
lines_before.append('# from the source, you should replace autotools with autotools-brokensep in the')
lines_before.append('# inherit line')
classes.append('autotools')
lines_after.append('# Specify any options you want to pass to the configure script using EXTRA_OECONF:')
lines_after.append('EXTRA_OECONF = ""')
lines_after.append('')
handled.append('buildsystem')
return True
return False
开发者ID:Brainbuster,项目名称:opennfr-buildumgebung,代码行数:33,代码来源:create_buildsys.py
示例2: find_cmake_package
def find_cmake_package(pkg):
RecipeHandler.load_devel_filemap(tinfoil.config_data)
for fn, pn in RecipeHandler.recipecmakefilemap.iteritems():
splitname = fn.split('/')
if len(splitname) > 1:
if splitname[0].lower().startswith(pkg.lower()):
if splitname[1] == '%s-config.cmake' % pkg.lower() or splitname[1] == '%sConfig.cmake' % pkg or splitname[1] == 'Find%s.cmake' % pkg:
return pn
return None
开发者ID:devcurmudgeon,项目名称:poky,代码行数:9,代码来源:create_buildsys.py
示例3: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if 'buildsystem' in handled:
return False
autoconf = False
if RecipeHandler.checkfiles(srctree, ['configure.ac', 'configure.in']):
autoconf = True
values = AutotoolsRecipeHandler.extract_autotools_deps(lines_before, srctree, extravalues)
classes.extend(values.pop('inherit', '').split())
for var, value in values.iteritems():
lines_before.append('%s = "%s"' % (var, value))
else:
conffile = RecipeHandler.checkfiles(srctree, ['configure'])
if conffile:
# Check if this is just a pre-generated autoconf configure script
with open(conffile[0], 'r') as f:
for i in range(1, 10):
if 'Generated by GNU Autoconf' in f.readline():
autoconf = True
break
if autoconf and not ('PV' in extravalues and 'PN' in extravalues):
# Last resort
conffile = RecipeHandler.checkfiles(srctree, ['configure'])
if conffile:
with open(conffile[0], 'r') as f:
for line in f:
line = line.strip()
if line.startswith('VERSION=') or line.startswith('PACKAGE_VERSION='):
pv = line.split('=')[1].strip('"\'')
if pv and not 'PV' in extravalues and validate_pv(pv):
extravalues['PV'] = pv
elif line.startswith('PACKAGE_NAME=') or line.startswith('PACKAGE='):
pn = line.split('=')[1].strip('"\'')
if pn and not 'PN' in extravalues:
extravalues['PN'] = pn
if autoconf:
lines_before.append('')
lines_before.append('# NOTE: if this software is not capable of being built in a separate build directory')
lines_before.append('# from the source, you should replace autotools with autotools-brokensep in the')
lines_before.append('# inherit line')
classes.append('autotools')
lines_after.append('# Specify any options you want to pass to the configure script using EXTRA_OECONF:')
lines_after.append('EXTRA_OECONF = ""')
lines_after.append('')
handled.append('buildsystem')
return True
return False
开发者ID:32bitmicro,项目名称:riscv-poky,代码行数:50,代码来源:create_buildsys.py
示例4: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if "buildsystem" in handled:
return False
autoconf = False
if RecipeHandler.checkfiles(srctree, ["configure.ac", "configure.in"]):
autoconf = True
values = AutotoolsRecipeHandler.extract_autotools_deps(lines_before, srctree, extravalues)
classes.extend(values.pop("inherit", "").split())
for var, value in values.iteritems():
lines_before.append('%s = "%s"' % (var, value))
else:
conffile = RecipeHandler.checkfiles(srctree, ["configure"])
if conffile:
# Check if this is just a pre-generated autoconf configure script
with open(conffile[0], "r") as f:
for i in range(1, 10):
if "Generated by GNU Autoconf" in f.readline():
autoconf = True
break
if autoconf and not ("PV" in extravalues and "PN" in extravalues):
# Last resort
conffile = RecipeHandler.checkfiles(srctree, ["configure"])
if conffile:
with open(conffile[0], "r") as f:
for line in f:
line = line.strip()
if line.startswith("VERSION=") or line.startswith("PACKAGE_VERSION="):
pv = line.split("=")[1].strip("\"'")
if pv and not "PV" in extravalues and validate_pv(pv):
extravalues["PV"] = pv
elif line.startswith("PACKAGE_NAME=") or line.startswith("PACKAGE="):
pn = line.split("=")[1].strip("\"'")
if pn and not "PN" in extravalues:
extravalues["PN"] = pn
if autoconf:
lines_before.append("")
lines_before.append("# NOTE: if this software is not capable of being built in a separate build directory")
lines_before.append("# from the source, you should replace autotools with autotools-brokensep in the")
lines_before.append("# inherit line")
classes.append("autotools")
lines_after.append("# Specify any options you want to pass to the configure script using EXTRA_OECONF:")
lines_after.append('EXTRA_OECONF = ""')
lines_after.append("")
handled.append("buildsystem")
return True
return False
开发者ID:shenki,项目名称:openbmc,代码行数:50,代码来源:create_buildsys.py
示例5: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if 'PV' in extravalues and 'PN' in extravalues:
return
filelist = RecipeHandler.checkfiles(srctree, ['*.spec'], recursive=True)
valuemap = {'Name': 'PN',
'Version': 'PV',
'Summary': 'SUMMARY',
'Url': 'HOMEPAGE',
'License': 'LICENSE'}
foundvalues = {}
for fileitem in filelist:
linecount = 0
with open(fileitem, 'r', errors='surrogateescape') as f:
for line in f:
for value, varname in valuemap.items():
if line.startswith(value + ':') and not varname in foundvalues:
foundvalues[varname] = line.split(':', 1)[1].strip()
break
if len(foundvalues) == len(valuemap):
break
if 'PV' in foundvalues:
if not validate_pv(foundvalues['PV']):
del foundvalues['PV']
license = foundvalues.pop('LICENSE', None)
if license:
liccomment = '# NOTE: spec file indicates the license may be "%s"' % license
for i, line in enumerate(lines_before):
if line.startswith('LICENSE ='):
lines_before.insert(i, liccomment)
break
else:
lines_before.append(liccomment)
extravalues.update(foundvalues)
开发者ID:darknighte,项目名称:poky,代码行数:33,代码来源:create_buildsys.py
示例6: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if 'buildsystem' in handled:
return False
if RecipeHandler.checkfiles(srctree, ['CMakeLists.txt']):
classes.append('cmake')
values = CmakeRecipeHandler.extract_cmake_deps(lines_before, srctree, extravalues)
for var, value in values.iteritems():
lines_before.append('%s = "%s"' % (var, value))
lines_after.append('# Specify any options you want to pass to cmake using EXTRA_OECMAKE:')
lines_after.append('EXTRA_OECMAKE = ""')
lines_after.append('')
handled.append('buildsystem')
return True
return False
开发者ID:Taapat,项目名称:openembedded-core,代码行数:15,代码来源:create_buildsys.py
示例7: extract_cmake_deps
def extract_cmake_deps(outlines, srctree, extravalues, cmakelistsfile=None):
values = {}
if cmakelistsfile:
srcfiles = [cmakelistsfile]
else:
srcfiles = RecipeHandler.checkfiles(srctree, ['CMakeLists.txt'])
proj_re = re.compile('project\(([^)]*)\)', re.IGNORECASE)
with open(srcfiles[0], 'r') as f:
for line in f:
res = proj_re.match(line.strip())
if res:
extravalues['PN'] = res.group(1).split()[0]
return values
开发者ID:Taapat,项目名称:openembedded-core,代码行数:16,代码来源:create_buildsys.py
示例8: parse_qt_pro
def parse_qt_pro(self, fn, deps, unmappedqt):
with open(fn, "r") as f:
for line in f:
if re.match("^QT\s*[+=]+", line):
if "=" in line:
for item in line.split("=")[1].split():
dep = Qmake5RecipeHandler.qt_map.get(item, None)
if dep:
deps.append(dep)
elif dep is not None:
unmappedqt.append(item)
elif re.match("^SUBDIRS\s*[+=]+", line):
if "=" in line:
for item in line.split("=")[1].split():
subfiles = RecipeHandler.checkfiles(os.path.join(os.path.dirname(fn), item), ["*.pro"])
for subfn in subfiles:
self.parse_qt_pro(subfn, deps, unmappedqt)
elif "qml" in line.lower():
deps.append("qtdeclarative")
开发者ID:Chertz,项目名称:meta-qt5,代码行数:19,代码来源:create_qt5.py
示例9: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if 'buildsystem' in handled:
return False
files = RecipeHandler.checkfiles(srctree, ['package.json'])
if files:
with open(files[0], 'r') as f:
data = json.loads(f.read())
if 'name' in data and 'version' in data:
extravalues['PN'] = data['name']
extravalues['PV'] = data['version']
classes.append('npm')
handled.append('buildsystem')
if 'description' in data:
lines_before.append('SUMMARY = "%s"' % data['description'])
if 'homepage' in data:
lines_before.append('HOMEPAGE = "%s"' % data['homepage'])
return True
return False
开发者ID:devcurmudgeon,项目名称:poky,代码行数:20,代码来源:create_npm.py
示例10: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
# There's not a conclusive way to tell a Qt2/3/4/5 .pro file apart, so we
# just assume that qmake5 is a reasonable default if you have this layer
# enabled
if 'buildsystem' in handled:
return False
unmappedqt = []
files = RecipeHandler.checkfiles(srctree, ['*.pro'])
deps = []
if files:
for fn in files:
self.parse_qt_pro(fn, deps, unmappedqt)
classes.append('qmake5')
if unmappedqt:
outlines.append('# NOTE: the following QT dependencies are unknown, ignoring: %s' % ' '.join(list(set(unmappedqt))))
if deps:
lines_before.append('DEPENDS = "%s"' % ' '.join(list(set(deps))))
handled.append('buildsystem')
return True
return False
开发者ID:kraj,项目名称:meta-qt5,代码行数:22,代码来源:create_qt5.py
示例11: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
import bb.utils
import oe.package
from collections import OrderedDict
if 'buildsystem' in handled:
return False
def read_package_json(fn):
with open(fn, 'r', errors='surrogateescape') as f:
return json.loads(f.read())
files = RecipeHandler.checkfiles(srctree, ['package.json'])
if files:
d = bb.data.createCopy(tinfoil.config_data)
npm_bindir = self._ensure_npm()
if not npm_bindir:
sys.exit(14)
d.prependVar('PATH', '%s:' % npm_bindir)
data = read_package_json(files[0])
if 'name' in data and 'version' in data:
extravalues['PN'] = data['name']
extravalues['PV'] = data['version']
classes.append('npm')
handled.append('buildsystem')
if 'description' in data:
extravalues['SUMMARY'] = data['description']
if 'homepage' in data:
extravalues['HOMEPAGE'] = data['homepage']
fetchdev = extravalues['fetchdev'] or None
deps, optdeps, devdeps = self.get_npm_package_dependencies(data, fetchdev)
self._handle_dependencies(d, deps, optdeps, devdeps, lines_before, srctree)
# Shrinkwrap
localfilesdir = tempfile.mkdtemp(prefix='recipetool-npm')
self._shrinkwrap(srctree, localfilesdir, extravalues, lines_before, d)
# Lockdown
self._lockdown(srctree, localfilesdir, extravalues, lines_before, d)
# Split each npm module out to is own package
npmpackages = oe.package.npm_split_package_dirs(srctree)
licvalues = None
for item in handled:
if isinstance(item, tuple):
if item[0] == 'license':
licvalues = item[1]
break
if not licvalues:
licvalues = handle_license_vars(srctree, lines_before, handled, extravalues, d)
if licvalues:
# Augment the license list with information we have in the packages
licenses = {}
license = self._handle_license(data)
if license:
licenses['${PN}'] = license
for pkgname, pkgitem in npmpackages.items():
_, pdata = pkgitem
license = self._handle_license(pdata)
if license:
licenses[pkgname] = license
# Now write out the package-specific license values
# We need to strip out the json data dicts for this since split_pkg_licenses
# isn't expecting it
packages = OrderedDict((x,y[0]) for x,y in npmpackages.items())
packages['${PN}'] = ''
pkglicenses = split_pkg_licenses(licvalues, packages, lines_after, licenses)
all_licenses = list(set([item.replace('_', ' ') for pkglicense in pkglicenses.values() for item in pkglicense]))
if '&' in all_licenses:
all_licenses.remove('&')
extravalues['LICENSE'] = ' & '.join(all_licenses)
# Need to move S setting after inherit npm
for i, line in enumerate(lines_before):
if line.startswith('S ='):
lines_before.pop(i)
lines_after.insert(0, '# Must be set after inherit npm since that itself sets S')
lines_after.insert(1, line)
break
return True
return False
开发者ID:01org,项目名称:luv-yocto,代码行数:85,代码来源:create_npm.py
示例12: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if 'buildsystem' in handled:
return False
if not RecipeHandler.checkfiles(srctree, ['setup.py']):
return
# setup.py is always parsed to get at certain required information, such as
# distutils vs setuptools
#
# If egg info is available, we use it for both its PKG-INFO metadata
# and for its requires.txt for install_requires.
# If PKG-INFO is available but no egg info is, we use that for metadata in preference to
# the parsed setup.py, but use the install_requires info from the
# parsed setup.py.
setupscript = os.path.join(srctree, 'setup.py')
try:
setup_info, uses_setuptools, setup_non_literals, extensions = self.parse_setup_py(setupscript)
except Exception:
logger.exception("Failed to parse setup.py")
setup_info, uses_setuptools, setup_non_literals, extensions = {}, True, [], []
egginfo = glob.glob(os.path.join(srctree, '*.egg-info'))
if egginfo:
info = self.get_pkginfo(os.path.join(egginfo[0], 'PKG-INFO'))
requires_txt = os.path.join(egginfo[0], 'requires.txt')
if os.path.exists(requires_txt):
with codecs.open(requires_txt) as f:
inst_req = []
extras_req = collections.defaultdict(list)
current_feature = None
for line in f.readlines():
line = line.rstrip()
if not line:
continue
if line.startswith('['):
current_feature = line[1:-1]
elif current_feature:
extras_req[current_feature].append(line)
else:
inst_req.append(line)
info['Install-requires'] = inst_req
info['Extras-require'] = extras_req
elif RecipeHandler.checkfiles(srctree, ['PKG-INFO']):
info = self.get_pkginfo(os.path.join(srctree, 'PKG-INFO'))
if setup_info:
if 'Install-requires' in setup_info:
info['Install-requires'] = setup_info['Install-requires']
if 'Extras-require' in setup_info:
info['Extras-require'] = setup_info['Extras-require']
else:
if setup_info:
info = setup_info
else:
info = self.get_setup_args_info(setupscript)
# Grab the license value before applying replacements
license_str = info.get('License', '').strip()
self.apply_info_replacements(info)
if uses_setuptools:
classes.append('setuptools')
else:
classes.append('distutils')
if license_str:
for i, line in enumerate(lines_before):
if line.startswith('LICENSE = '):
lines_before.insert(i, '# NOTE: License in setup.py/PKGINFO is: %s' % license_str)
break
if 'Classifier' in info:
existing_licenses = info.get('License', '')
licenses = []
for classifier in info['Classifier']:
if classifier in self.classifier_license_map:
license = self.classifier_license_map[classifier]
if license == 'Apache' and 'Apache-2.0' in existing_licenses:
license = 'Apache-2.0'
elif license == 'GPL':
if 'GPL-2.0' in existing_licenses or 'GPLv2' in existing_licenses:
license = 'GPL-2.0'
elif 'GPL-3.0' in existing_licenses or 'GPLv3' in existing_licenses:
license = 'GPL-3.0'
elif license == 'LGPL':
if 'LGPL-2.1' in existing_licenses or 'LGPLv2.1' in existing_licenses:
license = 'LGPL-2.1'
elif 'LGPL-2.0' in existing_licenses or 'LGPLv2' in existing_licenses:
license = 'LGPL-2.0'
elif 'LGPL-3.0' in existing_licenses or 'LGPLv3' in existing_licenses:
license = 'LGPL-3.0'
licenses.append(license)
if licenses:
info['License'] = ' & '.join(licenses)
#.........这里部分代码省略.........
开发者ID:VCTLabs,项目名称:poky,代码行数:101,代码来源:create_buildsys_python.py
示例13: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
import bb.process
if 'buildsystem' in handled:
return False
module_inc_re = re.compile(r'^#include\s+<linux/module.h>$')
makefiles = []
is_module = False
makefiles = []
files = RecipeHandler.checkfiles(srctree, ['*.c', '*.h'], recursive=True)
if files:
for cfile in files:
# Look in same dir or parent for Makefile
for makefile in [os.path.join(os.path.dirname(cfile), 'Makefile'), os.path.join(os.path.dirname(os.path.dirname(cfile)), 'Makefile')]:
if makefile in makefiles:
break
else:
if os.path.exists(makefile):
makefiles.append(makefile)
break
else:
continue
with open(cfile, 'r') as f:
for line in f:
if module_inc_re.match(line.strip()):
is_module = True
break
if is_module:
break
if is_module:
classes.append('module')
handled.append('buildsystem')
# module.bbclass and the classes it inherits do most of the hard
# work, but we need to tweak it slightly depending on what the
# Makefile does (and there is a range of those)
# Check the makefile for the appropriate install target
install_lines = []
compile_lines = []
in_install = False
in_compile = False
install_target = None
with open(makefile, 'r') as f:
for line in f:
if line.startswith('install:'):
if not install_lines:
in_install = True
install_target = 'install'
elif line.startswith('modules_install:'):
install_lines = []
in_install = True
install_target = 'modules_install'
elif line.startswith('modules:'):
compile_lines = []
in_compile = True
elif line.startswith(('all:', 'default:')):
if not compile_lines:
in_compile = True
elif line:
if line[0] == '\t':
if in_install:
install_lines.append(line)
elif in_compile:
compile_lines.append(line)
elif ':' in line:
in_install = False
in_compile = False
def check_target(lines, install):
kdirpath = ''
manual_install = False
for line in lines:
splitline = line.split()
if splitline[0] in ['make', 'gmake', '$(MAKE)']:
if '-C' in splitline:
idx = splitline.index('-C') + 1
if idx < len(splitline):
kdirpath = splitline[idx]
break
elif install and splitline[0] == 'install':
if '.ko' in line:
manual_install = True
return kdirpath, manual_install
kdirpath = None
manual_install = False
if install_lines:
kdirpath, manual_install = check_target(install_lines, install=True)
if compile_lines and not kdirpath:
kdirpath, _ = check_target(compile_lines, install=False)
if manual_install or not install_lines:
lines_after.append('EXTRA_OEMAKE_append_task-install = " -C ${STAGING_KERNEL_DIR} M=${S}"')
elif install_target and install_target != 'modules_install':
lines_after.append('MODULES_INSTALL_TARGET = "install"')
warnmsg = None
kdirvar = None
#.........这里部分代码省略.........
开发者ID:KenChenIEC,项目名称:openbmc,代码行数:101,代码来源:create_kmod.py
示例14: process
def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
if "buildsystem" in handled:
return False
if not RecipeHandler.checkfiles(srctree, ["setup.py"]):
return
# setup.py is always parsed to get at certain required information, such as
# distutils vs setuptools
#
# If egg info is available, we use it for both its PKG-INFO metadata
# and for its requires.txt for install_requires.
# If PKG-INFO is available but no egg info is, we use that for metadata in preference to
# the parsed setup.py, but use the install_requires info from the
# parsed setup.py.
setupscript = os.path.join(srctree, "setup.py")
try:
setup_info, uses_setuptools, setup_non_literals, extensions = self.parse_setup_py(setupscript)
except Exception:
logger.exception("Failed to parse setup.py")
setup_info, uses_setuptools, setup_non_literals, extensions = {}, True, [], []
egginfo = glob.glob(os.path.join(srctree, "*.egg-info"))
if egginfo:
info = self.get_pkginfo(os.path.join(egginfo[0], "PKG-INFO"))
requires_txt = os.path.join(egginfo[0], "requires.txt")
if os.path.exists(requires_txt):
with codecs.open(requires_txt) as f:
inst_req = []
extras_req = collections.defaultdict(list)
current_feature = None
for line in f.readlines():
line = line.rstrip()
if not line:
continue
if line.startswith("["):
current_feature = line[1:-1]
elif current_feature:
extras_req[current_feature].append(line)
else:
inst_req.append(line)
info["Install-requires"] = inst_req
info["Extras-require"] = extras_req
elif RecipeHandler.checkfiles(srctree, ["PKG-INFO"]):
info = self.get_pkginfo(os.path.join(srctree, "PKG-INFO"))
if setup_info:
if "Install-requires" in setup_info:
info["Install-requires"] = setup_info["Install-requires"]
if "Extras-require" in setup_info:
info["Extras-require"] = setup_info["Extras-require"]
else:
if setup_info:
info = setup_info
else:
info = self.get_setup_args_info(setupscript)
self.apply_info_replacements(info)
if uses_setuptools:
classes.append("setuptools")
else:
classes.append("distutils")
if "Classifier" in info:
licenses = []
for classifier in info["Classifier"]:
if classifier in self.classifier_license_map:
license = self.classifier_license_map[classifier]
licenses.append(license)
if licenses:
info["License"] = " & ".join(licenses)
# Map PKG-INFO & setup.py fields to bitbake variables
bbinfo = {}
for field, values in info.iteritems():
if field in self.excluded_fields:
continue
if field not in self.bbvar_map:
continue
if isinstance(values, basestring):
value = values
else:
value = " ".join(str(v) for v in values if v)
bbvar = self.bbvar_map[field]
if bbvar not in bbinfo and value:
bbinfo[bbvar] = value
comment_lic_line = None
for pos, line in enumerate(list(lines_before)):
if line.startswith("#") and "LICENSE" in line:
comment_lic_line = pos
elif line.startswith("LICENSE =") and "LICENSE" in bbinfo:
if line in ('LICENSE = "Unknown"', 'LICENSE = "CLOSED"'):
#.........这里部分代码省略.........
开发者ID:schleichdi2,项目名称:opennfr-build-5.3,代码行数:101,代码来源:create_buildsys_python.py
示例15: extract_cmake_deps
def extract_cmake_deps(outlines, srctree, extravalues, cmakelistsfile=None):
values = {}
inherits = []
if cmakelistsfile:
srcfiles = [cmakelistsfile]
else:
srcfiles = RecipeHandler.checkfiles(srctree, ['CMakeLists.txt'])
# Note that some of these are non-standard, but probably better to
# be able to map them anyway if we see them
cmake_pkgmap = {'alsa': 'alsa-lib',
'aspell': 'aspell',
'atk': 'atk',
'bison': 'bison-native',
'boost': 'boost',
'bzip2': 'bzip2',
'cairo': 'cairo',
'cups': 'cups',
'curl': 'curl',
'curses': 'ncurses',
'cvs': 'cvs',
'drm': 'libdrm',
'dbus': 'dbus',
'dbusglib': 'dbus-glib',
'egl': 'virtual/egl',
'expat': 'expat',
'flex': 'flex-native',
'fontconfig': 'fontconfig',
'freetype': 'freetype',
'gettext': '',
'git': '',
'gio': 'glib-2.0',
'giounix': 'glib-2.0',
'glew': 'glew',
'glib': 'glib-2.0',
'glib2': 'glib-2.0',
'glu': 'libglu',
'glut': 'freeglut',
'gobject': 'glib-2.0',
'gperf': 'gperf-native',
'gnutls': 'gnutls',
'gtk2': 'gtk+',
'gtk3': 'gtk+3',
'gtk': 'gtk+3',
'harfbuzz': 'harfbuzz',
'icu': 'icu',
'intl': 'virtual/libintl',
'jpeg': 'jpeg',
'libarchive': 'libarchive',
'libiconv': 'virtual/libiconv',
'liblzma': 'xz',
'libxml2': 'libxml2',
'libxslt': 'libxslt',
'opengl': 'virtual/libgl',
'openmp': '',
'openssl': 'openssl',
'pango': 'pango',
'perl': '',
'perllibs': '',
'pkgconfig': '',
'png': 'libpng',
'pthread': '',
'pythoninterp': '',
'pythonlibs': '',
'ruby': 'ruby-native',
'sdl': 'libsdl',
'sdl2': 'libsdl2',
'subversion': 'subversion-native',
'swig': 'swig-native',
'tcl': 'tcl-native',
'threads': '',
'tiff': 'tiff',
'wget': 'wget',
'x11': 'libx11',
'xcb': 'libxcb',
'xext': 'libxext',
'xfixes': 'libxfixes',
'zlib': 'zlib',
}
pcdeps = []
libdeps = []
deps = []
unmappedpkgs = []
proj_re = re.compile('project\s*\(([^)]*)\)', re.IGNORECASE)
pkgcm_re = re.compile('pkg_check_modules\s*\(\s*[a-zA-Z0-9-_]+\s*(REQUIRED)?\s+([^)\s]+)\s*\)', re.IGNORECASE)
pkgsm_re = re.compile('pkg_search_module\s*\(\s*[a-zA-Z0-9-_]+\s*(REQUIRED)?((\s+[^)\s]+)+)\s*\)', re.IGNORECASE)
findpackage_re = re.compile('find_package\s*\(\s*([a-zA-Z0-9-_]+)\s*.*', re.IGNORECASE)
checklib_re = re.compile('check_library_exists\s*\(\s*([^\s)]+)\s*.*', re.IGNORECASE)
include_re = re.compile('include\s*\(\s*([^)\s]*)\s*\)', re.IGNORECASE)
subdir_re = re.compile('add_subdirectory\s*\(\s*([^)\s]*)\s*([^)\s]*)\s*\)', re.IGNORECASE)
dep_re = re.compile('([^ ><=]+)( *[<>=]+ *[^ ><=]+)?')
def interpret_value(value):
return value.strip('"')
def parse_cmake_file(fn, paths=None):
searchpaths = (paths or []) + [os.path.dirname(fn)]
#.........这里部分代码省略.........
开发者ID:32bitmicro,项目名称:riscv-poky,代码行数:101,代码来源:create_buildsys.py
示例16: extract_autotools_deps
def extract_autotools_deps(outlines, srctree, extravalues=None, acfile=None):
import shlex
values = {}
inherits = []
# FIXME this mapping is very thin
progmap = {'flex': 'flex-native',
'bison': 'bison-native',
'm4': 'm4-native',
'tar': 'tar-native',
'ar': 'binutils-native'}
progclassmap = {'gconftool-2': 'gconf',
'pkg-config': 'pkgconfig'}
pkg_re = re.compile('PKG_CHECK_MODULES\(\[?[a-zA-Z0-9_]*\]?, *\[?([^,\]]*)\]?[),].*')
pkgce_re = re.compile('PKG_CHECK_EXISTS\(\[?([^,\]]*)\]?[),].*')
lib_re = re.compile('AC_CHECK_LIB\(\[?([^,\]]*)\]?,.*')
libx_re = re.compile('AX_CHECK_LIBRARY\(\[?[^,\]]*\]?, *\[?([^,\]]*)\]?, *\[?([a-zA-Z0-9-]*)\]?,.*')
progs_re = re.compile('_PROGS?\(\[?[a-zA-Z0-9_]*\]?, \[?([^,\]]*)\]?[),].*')
dep_re = re.compile('([^ ><=]+)( [<>=]+ [^ ><=]+)?')
ac_init_re = re.compile('AC_INIT\(([^,]+), *([^,]+)[,)].*')
am_init_re = re.compile('AM_INIT_AUTOMAKE\(([^,]+), *([^,]+)[,)].*')
define_re = re.compile(' *(m4_)?define\(([^,]+), *([^,]+)\)')
defines = {}
def subst_defines(value):
newvalue = value
for define, defval in defines.iteritems():
newvalue = newvalue.replace(define, defval)
if newvalue != value:
return subst_defines(newvalue)
return value
def process_value(value):
value = value.replace('[', '').replace(']', '')
if value.startswith('m4_esyscmd(') or value.startswith('m4_esyscmd_s('):
cmd = subst_defines(value[value.index('(')+1:-1])
try:
if '|' in cmd:
cmd = 'set -o pipefail; ' + cmd
stdout, _ = bb.process.run(cmd, cwd=srctree, shell=True)
ret = stdout.rstrip()
except bb.process.ExecutionError as e:
ret = ''
elif value.startswith('m4_'):
return None
ret = subst_defines(value)
if ret:
ret = ret.strip('"\'')
return ret
# Since a configure.ac file is essentially a program, this is only ever going to be
# a hack unfortunately; but it ought to be enough of an approximation
if acfile:
srcfiles = [acfile]
else:
srcfiles = RecipeHandler.checkfiles(srctree, ['acinclude.m4', 'configure.ac', 'configure.in'])
pcdeps = []
libdeps = []
deps = []
unmapped = []
def process_macro(keyword, value):
if keyword == 'PKG_CHECK_MODULES':
res = pkg_re.search(value)
if res:
res = dep_re.findall(res.group(1))
if res:
pcdeps.extend([x[0] for x in res])
inherits.append('pkgconfig')
elif keyword == 'PKG_CHECK_EXISTS':
res = pkgce_re.search(value)
if res:
res = dep_re.findall(res.group(1))
if res:
pcdeps.extend([x[0] for x in res])
inherits.append('pkgconfig')
elif keyword in ('AM_GNU_GETTEXT', 'AM_GLIB_GNU_GETTEXT', 'GETTEXT_PACKAGE'):
inherits.append('gettext')
elif keyword in ('AC_PROG_INTLTOOL', 'IT_PROG_INTLTOOL'):
deps.append('intltool-native')
elif keyword == 'AM_PATH_GLIB_2_0':
deps.append('glib-2.0')
elif keyword in ('AC_CHECK_PROG', 'AC_PATH_PROG', 'AX_WITH_PROG'):
res = progs_re.search(value)
if res:
for prog in shlex.split(res.group(1)):
prog = prog.split()[0]
progclass = progclassmap.get(prog, None)
if progclass:
inherits.append(progclass)
else:
progdep = progmap.get(prog, None)
if progdep:
deps.append(progdep)
else:
if not prog.startswith('$'):
unmapped.append(prog)
#.........这里部分代码省略.........
开发者ID:32bitmicro,项目名称:riscv-poky,代码行数:101,代码来源:create_buildsys.py
示例17: extract_autotools_deps
def extract_autotools_deps(outlines, srctree, extravalues=None, acfile=None):
import shlex
import oe.package
values = {}
inherits = []
# FIXME this mapping is very thin
progmap = {'flex': 'flex-native',
'bison': 'bison-native',
'm4': 'm4-native',
'tar': 'tar-native',
'ar': 'binutils-native'}
progclassmap = {'gconftool-2': 'gconf',
'pkg-config': 'pkgconfig'}
ignoredeps = ['gcc-runtime', 'glibc', 'uclibc', 'tar-native', 'binutils-native']
ignorelibs = ['socket']
pkg_re = re.compile('PKG_CHECK_MODULES\(\[?[a-zA-Z0-9]*\]?, \[?([^,\]]*)[),].*')
lib_re = re.compile('AC_CHECK_LIB\(\[?([a-zA-Z0-9]*)\]?, .*')
progs_re = re.compile('_PROGS?\(\[?[a-zA-Z0-9]*\]?, \[?([^,\]]*)\]?[),].*')
dep_re = re.compile('([^ ><=]+)( [<>=]+ [^ ><=]+)?')
ac_init_re = re.compile('AC_
|
请发表评论