#!/usr/bin/python
# Copyright Gentoo Foundation 2006
# Portage Emerge bits
# $Id$

try:
	import _emerge
except ImportError:
	from os import path as osp
	import sys
	sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
	import _emerge

if __name__ == "__main__":
	import sys
	from portage.exception import ParseError, PermissionDenied
	try:
		retval = _emerge.emerge_main()
	except PermissionDenied, e:
		sys.stderr.write("Permission denied: '%s'\n" % str(e))
		sys.exit(e.errno)
	except ParseError, e:
		sys.stderr.write("%s\n" % str(e))
		sys.exit(1)
	sys.exit(retval)
