Move setproctitle() stuff into title.py.

This removes another instance of magical code running at module import
time.  And the process title wasn't really part of the state database
anyway.

Unfortunately this uncovered a bug: the recent change to use
'python -S' makes it not find the setproctitle module if installed.

My goodness, I hate the horrible python easy_install module gunk that
makes startup linearly slower the more modules you have installed,
whether you import them or not, if you don't use -S.  But oh well,
we're stuck with it for now.
This commit is contained in:
Avery Pennarun 2018-12-05 02:17:17 -05:00
commit 0b648521fd
3 changed files with 20 additions and 12 deletions

View file

@ -18,13 +18,15 @@ case $1 in
read py <../redo/whichpython read py <../redo/whichpython
cmd=${1#redo-} cmd=${1#redo-}
cat >$3 <<-EOF cat >$3 <<-EOF
#!$py -S #!$py
import sys, os; import sys, os;
exe = os.path.realpath(os.path.abspath(sys.argv[0])) exe = os.path.realpath(os.path.abspath(sys.argv[0]))
exedir = os.path.dirname(exe) exedir = os.path.dirname(exe)
sys.path.insert(0, os.path.join(exedir, '../lib')) sys.path.insert(0, os.path.join(exedir, '../lib'))
sys.path.insert(0, os.path.join(exedir, '..')) sys.path.insert(0, os.path.join(exedir, '..'))
import redo.title
import redo.cmd_$cmd import redo.cmd_$cmd
redo.title.auto()
redo.cmd_$cmd.main() redo.cmd_$cmd.main()
EOF EOF
chmod a+x "$3" chmod a+x "$3"

View file

@ -3,17 +3,6 @@ import cycles, env
from helpers import unlink, close_on_exec, join from helpers import unlink, close_on_exec, join
from logs import warn, debug2, debug3 from logs import warn, debug2, debug3
# When the module is imported, change the process title.
# We do it here because this module is imported by all the scripts.
try:
from setproctitle import setproctitle
except ImportError:
pass
else:
cmdline = sys.argv[:]
cmdline[0] = os.path.splitext(os.path.basename(cmdline[0]))[0]
setproctitle(" ".join(cmdline))
SCHEMA_VER = 2 SCHEMA_VER = 2
TIMEOUT = 60 TIMEOUT = 60

17
redo/title.py Normal file
View file

@ -0,0 +1,17 @@
import os, sys
# FIXME: setproctitle module is only usable if *not* using python -S,
# and without -S, python startup time is annoyingly longer
try:
from setproctitle import setproctitle
except ImportError:
def setproctitle(name):
pass
def auto():
"""Automatically clean up the title as seen by 'ps', based on argv."""
exe = sys.argv[0]
exename, ext = os.path.splitext(os.path.basename(sys.argv[0]))
title = ' '.join([exename] + sys.argv[1:])
setproctitle(title)