Move initial signal handlers to the launcher script.
[portage.git] / bin / emerge
1 #!/usr/bin/python
2 # Copyright Gentoo Foundation 2006
3 # Portage Emerge bits
4 # $Id$
5
6 import sys
7 # This block ensures that ^C interrupts are handled quietly.
8 try:
9         import signal
10
11         def exithandler(signum,frame):
12                 signal.signal(signal.SIGINT, signal.SIG_IGN)
13                 signal.signal(signal.SIGTERM, signal.SIG_IGN)
14                 sys.exit(1)
15
16         signal.signal(signal.SIGINT, exithandler)
17         signal.signal(signal.SIGTERM, exithandler)
18         signal.signal(signal.SIGPIPE, signal.SIG_DFL)
19
20 except KeyboardInterrupt:
21         sys.exit(1)
22
23 try:
24         import _emerge
25 except ImportError:
26         from os import path as osp
27         import sys
28         sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
29         import _emerge
30
31 if __name__ == "__main__":
32         import sys
33         from portage.exception import ParseError, PermissionDenied
34         try:
35                 retval = _emerge.emerge_main()
36         except PermissionDenied, e:
37                 sys.stderr.write("Permission denied: '%s'\n" % str(e))
38                 sys.exit(e.errno)
39         except ParseError, e:
40                 sys.stderr.write("%s\n" % str(e))
41                 sys.exit(1)
42         sys.exit(retval)