コード例 #1
0
def handle_list(args):
	logging.info(
		"System info for %s, %s" % (pegasus.__name__, pegasus.__version__)
	)
	logging.info("")

	logging.info("-- (%i) Architectures --" % (len(Architecture.enum_keys)))
	for key in Architecture.enum_keys:
		logging.info("\t%s" % key)
	logging.info("")

	logging.info("-- (%i) Languages --" % (len(Language.enum_keys)))
	for key in Language.enum_keys:
		logging.info("\t%s" % key)
	logging.info("")

	logging.info(
		"-- (%i) Host Platforms --" % (len(HostPlatform.__subclasses__()))
	)
	for d in HostPlatform.__subclasses__():
		logging.info("\t%s" % d.__name__)
	logging.info("")

	logging.info(
		"-- (%i) Target Platforms --" % (len(TargetPlatform.__subclasses__()))
	)
	for d in TargetPlatform.__subclasses__():
		logging.info("\t%s" % d.__name__)
	logging.info("")

	logging.info("-- (%i) Compilers --" % (len(Compiler.__subclasses__())))
	for d in Compiler.__subclasses__():
		logging.info("\t%s" % d.__name__)
	logging.info("")

	logging.info("-- (%i) Drivers --" % (len(Core.driver_classes)))
	for d in Core.driver_classes:
		logging.info("\t%s" % d.__name__)
	logging.info("")

	buildfile = BuildFile(args.build_file)

	# need to mockup a parser here:
	parser = argparse.ArgumentParser()
	buildfile.execute("arguments", parser)
	args = parser.parse_args("")

	global_params = Attributes()

	products = buildfile.get_products(
		args=args,
		host_platform=HostPlatform,
		target_platform=TargetPlatform.instance,
		global_params=global_params
	)

	if not products or type(products[0]) is not Product:
		raise Exception(
			"BuildFile returned an invalid value for products()!"
		)

	logging.info(
		"Listing products for build file '%s' and platform '%s'" % \
			(buildfile.abs_buildfile_path, HostPlatform.get())
	)
	logging.info("")

	logging.info("-- (%i) Products --" % len(products))
	for p in products:
		logging.info("\t\"%s\": %s" % (p.name, p.output))