22
22
# along with this program; if not, write to the Free Software
23
23
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25
# Some junk to try finding Python 2.3, if "python" on this system
28
if sys.hexversion >= 0x2030000:
31
if os.getenv('PYTHON'):
33
os.execvp(os.getenv('PYTHON'), [os.getenv('PYTHON')] + sys.argv)
37
os.execvp('python2.3', ['python2.3'] + sys.argv)
40
sys.stderr.write("This program requires Python 2.3\n")
28
version_info = sys.version_info
29
except AttributeError:
30
version_info = 1, 5 # 1.5 or older
32
REINVOKE = "__PQM_REINVOKE"
34
KNOWN_PYTHONS = ('python2.4', 'python2.5')
36
if version_info < NEED_VERS:
37
if not os.environ.has_key(REINVOKE):
38
# mutating os.environ doesn't work in old Pythons
39
os.putenv(REINVOKE, "1")
40
for python in KNOWN_PYTHONS:
42
os.execvp(python, [python] + sys.argv)
45
sys.stderr.write("error: cannot find a suitable python interpreter")
46
sys.stderr.write(" (need %d.%d or later)" % NEED_VERS)
49
if hasattr(os, "unsetenv"):
43
52
import string, stat, re, glob, getopt, time, traceback, gzip, getpass, popen2
44
53
import smtplib, email
45
54
import logging, logging.handlers
68
77
def do_run_mode(queuedir, logger, logdir, mail_reply, mail_server,
69
from_address, fromaddr, options):
78
from_address, fromaddr, configp, options):
70
79
scripts = find_patches(
71
80
queuedir, logger, rev_optionhandler, configp, options)
72
81
(goodscripts, badscripts) = ([], [])
73
82
for script in scripts:
74
83
if not os.path.isfile("%s/stop.patch" % queuedir):
75
84
run_one_script(logger, script, logdir, goodscripts, badscripts,
76
mail_reply, mail_server, from_address, fromaddr,
85
mail_reply, mail_server, from_address, fromaddr, options)
79
87
if options.print_report:
80
88
for (patchname, logname) in goodscripts:
183
def run(pqm_subdir, queuedir, logger, logdir, mail_reply,
184
mail_server, from_address, fromaddr, options):
186
os.path.join(pqm_subdir, 'pqm.lock'), logger,
191
def run(pqm_subdir, queuedir, logger, logdir, mail_reply, mail_server,
192
from_address, fromaddr, options):
193
lockfile=LockFile(os.path.join(pqm_subdir, 'pqm.lock'), logger,
187
194
options.no_act, options.cron_mode)
188
195
lockfile.acquire()
190
197
if options.run_mode:
191
198
do_run_mode(queuedir, logger, logdir, mail_reply, mail_server,
192
from_address, fromaddr, options)
199
from_address, fromaddr, configp, options)
194
201
lockfile.release()
293
300
fromaddr = '%s <%s>' % (myname, from_address)
295
302
mail_reply=configp.get_boolean_option('DEFAULT', 'mail_reply',1)
296
# The command line paramter overrides the setting in the config file.
303
# The command line parameter overrides the setting in the config file.
297
304
if options.verify_sigs:
298
305
options.verify_sigs = configp.get_boolean_option(
299
306
'DEFAULT', 'verify_sigs', True)
342
349
if not options.no_log:
343
350
if not os.path.isabs(logfile_name):
344
351
logfile_name = os.path.join(pqm_subdir, logfile_name)
345
logger.debug("Adding log file: %s" % logfile_name)
352
logger.debug("Adding log file: %s" % (logfile_name,))
346
353
filehandler = logging.FileHandler(logfile_name)
347
354
if options.loglevel >= logging.WARN:
348
355
filehandler.setLevel(logging.INFO)