458 ' build %(compiler)s --build-base="%(base)s"' |
458 ' build %(compiler)s --build-base="%(base)s"' |
459 ' install --force --prefix="%(prefix)s" --install-lib="%(libdir)s"' |
459 ' install --force --prefix="%(prefix)s" --install-lib="%(libdir)s"' |
460 ' --install-scripts="%(bindir)s" %(nohome)s >%(logfile)s 2>&1' |
460 ' --install-scripts="%(bindir)s" %(nohome)s >%(logfile)s 2>&1' |
461 % {'exe': sys.executable, 'py3': py3, 'pure': pure, |
461 % {'exe': sys.executable, 'py3': py3, 'pure': pure, |
462 'compiler': compiler, 'base': os.path.join(runner.hgtmp, "build"), |
462 'compiler': compiler, 'base': os.path.join(runner.hgtmp, "build"), |
463 'prefix': INST, 'libdir': PYTHONDIR, 'bindir': BINDIR, |
463 'prefix': runner.inst, 'libdir': PYTHONDIR, 'bindir': BINDIR, |
464 'nohome': nohome, 'logfile': installerrs}) |
464 'nohome': nohome, 'logfile': installerrs}) |
465 vlog("# Running", cmd) |
465 vlog("# Running", cmd) |
466 if os.system(cmd) == 0: |
466 if os.system(cmd) == 0: |
467 if not options.verbose: |
467 if not options.verbose: |
468 os.remove(installerrs) |
468 os.remove(installerrs) |
509 vlog('# Installing coverage trigger to %s' % target) |
509 vlog('# Installing coverage trigger to %s' % target) |
510 shutil.copyfile(custom, target) |
510 shutil.copyfile(custom, target) |
511 rc = os.path.join(runner.testdir, '.coveragerc') |
511 rc = os.path.join(runner.testdir, '.coveragerc') |
512 vlog('# Installing coverage rc to %s' % rc) |
512 vlog('# Installing coverage rc to %s' % rc) |
513 os.environ['COVERAGE_PROCESS_START'] = rc |
513 os.environ['COVERAGE_PROCESS_START'] = rc |
514 fn = os.path.join(INST, '..', '.coverage') |
514 fn = os.path.join(runner.inst, '..', '.coverage') |
515 os.environ['COVERAGE_FILE'] = fn |
515 os.environ['COVERAGE_FILE'] = fn |
516 |
516 |
517 def outputtimes(options): |
517 def outputtimes(options): |
518 vlog('# Producing time report') |
518 vlog('# Producing time report') |
519 times.sort(key=lambda t: (t[1], t[0]), reverse=True) |
519 times.sort(key=lambda t: (t[1], t[0]), reverse=True) |
1332 if 'PYTHONHASHSEED' not in os.environ: |
1333 if 'PYTHONHASHSEED' not in os.environ: |
1333 # use a random python hash seed all the time |
1334 # use a random python hash seed all the time |
1334 # we do the randomness ourself to know what seed is used |
1335 # we do the randomness ourself to know what seed is used |
1335 os.environ['PYTHONHASHSEED'] = str(random.getrandbits(32)) |
1336 os.environ['PYTHONHASHSEED'] = str(random.getrandbits(32)) |
1336 |
1337 |
1337 global INST, BINDIR, TMPBINDIR, PYTHONDIR, COVERAGE_FILE |
1338 global BINDIR, TMPBINDIR, PYTHONDIR, COVERAGE_FILE |
1338 runner.testdir = os.environ['TESTDIR'] = os.getcwd() |
1339 runner.testdir = os.environ['TESTDIR'] = os.getcwd() |
1339 if options.tmpdir: |
1340 if options.tmpdir: |
1340 options.keep_tmpdir = True |
1341 options.keep_tmpdir = True |
1341 tmpdir = options.tmpdir |
1342 tmpdir = options.tmpdir |
1342 if os.path.exists(tmpdir): |
1343 if os.path.exists(tmpdir): |
1360 d = os.getenv('TMP') |
1361 d = os.getenv('TMP') |
1361 tmpdir = tempfile.mkdtemp('', 'hgtests.', d) |
1362 tmpdir = tempfile.mkdtemp('', 'hgtests.', d) |
1362 runner.hgtmp = os.environ['HGTMP'] = os.path.realpath(tmpdir) |
1363 runner.hgtmp = os.environ['HGTMP'] = os.path.realpath(tmpdir) |
1363 |
1364 |
1364 if options.with_hg: |
1365 if options.with_hg: |
1365 INST = None |
1366 runner.inst = None |
1366 BINDIR = os.path.dirname(os.path.realpath(options.with_hg)) |
1367 BINDIR = os.path.dirname(os.path.realpath(options.with_hg)) |
1367 TMPBINDIR = os.path.join(runner.hgtmp, 'install', 'bin') |
1368 TMPBINDIR = os.path.join(runner.hgtmp, 'install', 'bin') |
1368 os.makedirs(TMPBINDIR) |
1369 os.makedirs(TMPBINDIR) |
1369 |
1370 |
1370 # This looks redundant with how Python initializes sys.path from |
1371 # This looks redundant with how Python initializes sys.path from |
1372 # "hg" specified by --with-hg is not the only Python script |
1373 # "hg" specified by --with-hg is not the only Python script |
1373 # executed in the test suite that needs to import 'mercurial' |
1374 # executed in the test suite that needs to import 'mercurial' |
1374 # ... which means it's not really redundant at all. |
1375 # ... which means it's not really redundant at all. |
1375 PYTHONDIR = BINDIR |
1376 PYTHONDIR = BINDIR |
1376 else: |
1377 else: |
1377 INST = os.path.join(runner.hgtmp, "install") |
1378 runner.inst = os.path.join(runner.hgtmp, "install") |
1378 BINDIR = os.environ["BINDIR"] = os.path.join(INST, "bin") |
1379 BINDIR = os.environ["BINDIR"] = os.path.join(runner.inst, "bin") |
1379 TMPBINDIR = BINDIR |
1380 TMPBINDIR = BINDIR |
1380 PYTHONDIR = os.path.join(INST, "lib", "python") |
1381 PYTHONDIR = os.path.join(runner.inst, "lib", "python") |
1381 |
1382 |
1382 os.environ["BINDIR"] = BINDIR |
1383 os.environ["BINDIR"] = BINDIR |
1383 os.environ["PYTHON"] = PYTHON |
1384 os.environ["PYTHON"] = PYTHON |
1384 |
1385 |
1385 path = [BINDIR] + os.environ["PATH"].split(os.pathsep) |
1386 path = [BINDIR] + os.environ["PATH"].split(os.pathsep) |