| #!/usr/bin/python |
| # Copyright Gentoo Foundation 2006 |
| # Portage Emerge bits |
| # $Id$ |
| |
| import sys |
| # This block ensures that ^C interrupts are handled quietly. |
| try: |
| import signal |
| |
| def exithandler(signum,frame): |
| signal.signal(signal.SIGINT, signal.SIG_IGN) |
| signal.signal(signal.SIGTERM, signal.SIG_IGN) |
| sys.exit(1) |
| |
| signal.signal(signal.SIGINT, exithandler) |
| signal.signal(signal.SIGTERM, exithandler) |
| signal.signal(signal.SIGPIPE, signal.SIG_DFL) |
| |
| except KeyboardInterrupt: |
| sys.exit(1) |
| |
| def debug_signal(signum, frame): |
| import pdb |
| pdb.set_trace() |
| signal.signal(signal.SIGUSR1, debug_signal) |
| |
| 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) |