equal
deleted
inserted
replaced
51 import distutils.version as version |
51 import distutils.version as version |
52 import errno |
52 import errno |
53 import json |
53 import json |
54 import multiprocessing |
54 import multiprocessing |
55 import os |
55 import os |
|
56 import platform |
56 import random |
57 import random |
57 import re |
58 import re |
58 import shutil |
59 import shutil |
59 import signal |
60 import signal |
60 import socket |
61 import socket |
553 "--pure", |
554 "--pure", |
554 action="store_true", |
555 action="store_true", |
555 help="use pure Python code instead of C extensions", |
556 help="use pure Python code instead of C extensions", |
556 ) |
557 ) |
557 hgconf.add_argument( |
558 hgconf.add_argument( |
|
559 "--rust", |
|
560 action="store_true", |
|
561 help="use Rust code alongside C extensions", |
|
562 ) |
|
563 hgconf.add_argument( |
|
564 "--no-rust", |
|
565 action="store_true", |
|
566 help="do not use Rust code even if compiled", |
|
567 ) |
|
568 hgconf.add_argument( |
558 "--with-chg", |
569 "--with-chg", |
559 metavar="CHG", |
570 metavar="CHG", |
560 help="use specified chg wrapper in place of hg", |
571 help="use specified chg wrapper in place of hg", |
561 ) |
572 ) |
562 hgconf.add_argument( |
573 hgconf.add_argument( |
634 options = parser.parse_args(args) |
645 options = parser.parse_args(args) |
635 |
646 |
636 # jython is always pure |
647 # jython is always pure |
637 if 'java' in sys.platform or '__pypy__' in sys.modules: |
648 if 'java' in sys.platform or '__pypy__' in sys.modules: |
638 options.pure = True |
649 options.pure = True |
|
650 |
|
651 if platform.python_implementation() != 'CPython' and options.rust: |
|
652 parser.error('Rust extensions are only available with CPython') |
|
653 |
|
654 if options.pure and options.rust: |
|
655 parser.error('--rust cannot be used with --pure') |
|
656 |
|
657 if options.rust and options.no_rust: |
|
658 parser.error('--rust cannot be used with --no-rust') |
639 |
659 |
640 if options.local: |
660 if options.local: |
641 if options.with_hg or options.with_chg: |
661 if options.with_hg or options.with_chg: |
642 parser.error('--local cannot be used with --with-hg or --with-chg') |
662 parser.error('--local cannot be used with --with-hg or --with-chg') |
643 testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0]))) |
663 testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0]))) |
3091 osenvironb[IMPL_PATH] = sepb.join(pypath) |
3111 osenvironb[IMPL_PATH] = sepb.join(pypath) |
3092 |
3112 |
3093 if self.options.pure: |
3113 if self.options.pure: |
3094 os.environ["HGTEST_RUN_TESTS_PURE"] = "--pure" |
3114 os.environ["HGTEST_RUN_TESTS_PURE"] = "--pure" |
3095 os.environ["HGMODULEPOLICY"] = "py" |
3115 os.environ["HGMODULEPOLICY"] = "py" |
|
3116 if self.options.rust: |
|
3117 os.environ["HGMODULEPOLICY"] = "rust+c" |
|
3118 if self.options.no_rust: |
|
3119 current_policy = os.environ.get("HGMODULEPOLICY", "") |
|
3120 if current_policy.startswith("rust+"): |
|
3121 os.environ["HGMODULEPOLICY"] = current_policy[len("rust+") :] |
|
3122 os.environ.pop("HGWITHRUSTEXT", None) |
3096 |
3123 |
3097 if self.options.allow_slow_tests: |
3124 if self.options.allow_slow_tests: |
3098 os.environ["HGTEST_SLOW"] = "slow" |
3125 os.environ["HGTEST_SLOW"] = "slow" |
3099 elif 'HGTEST_SLOW' in os.environ: |
3126 elif 'HGTEST_SLOW' in os.environ: |
3100 del os.environ['HGTEST_SLOW'] |
3127 del os.environ['HGTEST_SLOW'] |
3424 if self.options.compiler: |
3451 if self.options.compiler: |
3425 compiler = '--compiler ' + self.options.compiler |
3452 compiler = '--compiler ' + self.options.compiler |
3426 setup_opts = b"" |
3453 setup_opts = b"" |
3427 if self.options.pure: |
3454 if self.options.pure: |
3428 setup_opts = b"--pure" |
3455 setup_opts = b"--pure" |
|
3456 elif self.options.rust: |
|
3457 setup_opts = b"--rust" |
|
3458 elif self.options.no_rust: |
|
3459 setup_opts = b"--no-rust" |
3429 |
3460 |
3430 # Run installer in hg root |
3461 # Run installer in hg root |
3431 script = os.path.realpath(sys.argv[0]) |
3462 script = os.path.realpath(sys.argv[0]) |
3432 exe = sysexecutable |
3463 exe = sysexecutable |
3433 if PYTHON3: |
3464 if PYTHON3: |