summaryrefslogtreecommitdiff
path: root/portato.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xportato.py90
1 files changed, 2 insertions, 88 deletions
diff --git a/portato.py b/portato.py
index bdf3ddb..0f0a61b 100755
--- a/portato.py
+++ b/portato.py
@@ -14,93 +14,7 @@
from __future__ import with_statement, absolute_import
-import sys, os
-import subprocess, threading
-import atexit
-from optparse import OptionParser, SUPPRESS_HELP
-
-from portato import get_listener, log, start
-from portato.su import detect_su_command
-from portato.helper import debug, info, error
-from portato.constants import VERSION
-
-def main ():
- start() # the first thing to do :)
-
- # build the parser
- desc = "Portato - A Portage GUI."
- usage = "%prog [options] [frontend]"
- vers = "%%prog v. %s" % VERSION
-
- parser = OptionParser(version = vers, prog = "Portato", description = desc, usage = usage)
-
- parser.add_option("--shm", action = "store", nargs = 3, type="long", dest = "shm",
- help = SUPPRESS_HELP)
-
- parser.add_option("-F", "--no-fork", "-L", action = "store_true", dest = "nofork", default = False,
- help = _("do not fork off as root") + (" (%s)" % _("-L is deprecated")))
-
- # run parser
- (options, args) = parser.parse_args()
-
- # close listener at exit
- atexit.register(get_listener().close)
-
- if options.nofork or os.getuid() == 0: # start GUI
- log.start(file = True) # start logging to file
-
- from portato.gui import run
- info("%s v. %s", _("Starting Portato"), VERSION)
-
- if options.shm:
- get_listener().set_send(*options.shm)
- else:
- get_listener().set_send()
-
- try:
- run()
- except KeyboardInterrupt:
- debug("Got KeyboardInterrupt.")
-
- else: # start us again in root modus and launch listener
-
- import shm_wrapper as shm
-
- mem = shm.create_memory(1024, permissions=0600)
- sig = shm.create_semaphore(InitialValue = 0, permissions = 0600)
- rw = shm.create_semaphore(InitialValue = 1, permissions = 0600)
-
- # start listener
- lt = threading.Thread(target=get_listener().set_recv, args = (mem, sig, rw))
- lt.setDaemon(False)
- lt.start()
-
- try:
- # set DBUS_SESSION_BUS_ADDRESS to "" to make dbus work as root ;)
- env = os.environ.copy()
- env.update(DBUS_SESSION_BUS_ADDRESS="")
-
- su = detect_su_command()
- if su:
- debug("Using '%s' as su command.", su.bin)
- cmd = su.cmd("%s --no-fork --shm %ld %ld %ld" % (sys.argv[0], mem.key, sig.key, rw.key))
-
- sp = subprocess.Popen(cmd, env = env)
-
- # wait for process to finish
- try:
- sp.wait()
- debug("Subprocess finished")
- except KeyboardInterrupt:
- debug("Got KeyboardInterrupt.")
-
- else:
- error(_("No valid su command detected. Aborting."))
-
- finally:
- if lt.isAlive():
- debug("Listener is still running. Close it.")
- get_listener().close()
+from portato import start
if __name__ == "__main__":
- main()
+ start()