#!/usr/bin/env python

if not hasattr(__builtins__, "set"):
	from sets import Set as set

def find_required_licenses():
	import portage
	settings = portage.config(clone=portage.settings)
	root = settings["ROOT"]
	vardb = portage.db[root]["vartree"].dbapi
	portdb = portage.db[root]["porttree"].dbapi
	required_licenses = set()
	
	for cpv in vardb.cpv_all():
		if portdb.cpv_exists(cpv):
			mydb = portdb
		else:
			mydb = vardb
		myuse = vardb.aux_get(cpv, ["USE"])[0]
		mylicense = mydb.aux_get(cpv, ["LICENSE"])[0]
		acceptable_licenses = settings.acceptable_licenses(cpv)
		if "*" not in acceptable_licenses:
			def str_matches(myatom):
				return myatom in acceptable_licenses
			license_req = portage.dep_check(mylicense, None, settings,
				myuse=myuse, str_matches=str_matches)[1]
			required_licenses.update(license_req)
	return required_licenses

if __name__ == "__main__":
	required_licenses = find_required_licenses()
	if required_licenses:
		required_licenses = list(required_licenses)
		required_licenses.sort()
		print " ".join(required_licenses)
