aboutsummaryrefslogtreecommitdiff
blob: bd7b9083c1e870676c9a51f00a472ecface9ff9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env python -b
# Copyright 2005-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

"""System health checks and maintenance utilities.
"""

import sys
import errno

# 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(128 + signum)

    signal.signal(signal.SIGINT, exithandler)
    signal.signal(signal.SIGTERM, exithandler)
    signal.signal(signal.SIGPIPE, signal.SIG_DFL)

except KeyboardInterrupt:
    sys.exit(1)

from os import path as osp

if osp.isfile(
    osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), ".portage_not_installed")
):
    sys.path.insert(
        0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "lib")
    )
import portage

portage._internal_caller = True
from portage.emaint.main import emaint_main
from portage.util._eventloop.global_event_loop import global_event_loop

try:
    emaint_main(sys.argv[1:])
except IOError as e:
    if e.errno == errno.EACCES:
        print("\nemaint: Need superuser access")
        sys.exit(1)
    else:
        raise
finally:
    global_event_loop().close()