1396 class RustExtension(Extension): |
1396 class RustExtension(Extension): |
1397 """Base classes for concrete Rust Extension classes.""" |
1397 """Base classes for concrete Rust Extension classes.""" |
1398 |
1398 |
1399 rusttargetdir = os.path.join('rust', 'target', 'release') |
1399 rusttargetdir = os.path.join('rust', 'target', 'release') |
1400 |
1400 |
1401 def __init__( |
1401 def __init__(self, mpath, sources, rustlibname, subcrate, **kw): |
1402 self, mpath, sources, rustlibname, subcrate, py3_features=None, **kw |
|
1403 ): |
|
1404 Extension.__init__(self, mpath, sources, **kw) |
1402 Extension.__init__(self, mpath, sources, **kw) |
1405 srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
1403 srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
1406 self.py3_features = py3_features |
|
1407 |
1404 |
1408 # adding Rust source and control files to depends so that the extension |
1405 # adding Rust source and control files to depends so that the extension |
1409 # gets rebuilt if they've changed |
1406 # gets rebuilt if they've changed |
1410 self.depends.append(os.path.join(srcdir, 'Cargo.toml')) |
1407 self.depends.append(os.path.join(srcdir, 'Cargo.toml')) |
1411 cargo_lock = os.path.join(srcdir, 'Cargo.lock') |
1408 cargo_lock = os.path.join(srcdir, 'Cargo.lock') |
1449 |
1446 |
1450 cargocmd = ['cargo', 'rustc', '--release'] |
1447 cargocmd = ['cargo', 'rustc', '--release'] |
1451 |
1448 |
1452 feature_flags = [] |
1449 feature_flags = [] |
1453 |
1450 |
1454 if sys.version_info[0] == 3 and self.py3_features is not None: |
1451 cargocmd.append('--no-default-features') |
1455 feature_flags.append(self.py3_features) |
1452 if sys.version_info[0] == 2: |
1456 cargocmd.append('--no-default-features') |
1453 feature_flags.append('python27') |
|
1454 elif sys.version_info[0] == 3: |
|
1455 feature_flags.append('python3') |
1457 |
1456 |
1458 rust_features = env.get("HG_RUST_FEATURES") |
1457 rust_features = env.get("HG_RUST_FEATURES") |
1459 if rust_features: |
1458 if rust_features: |
1460 feature_flags.append(rust_features) |
1459 feature_flags.append(rust_features) |
1461 |
1460 |
1573 'hgext.fsmonitor.pywatchman.bser', |
1572 'hgext.fsmonitor.pywatchman.bser', |
1574 ['hgext/fsmonitor/pywatchman/bser.c'], |
1573 ['hgext/fsmonitor/pywatchman/bser.c'], |
1575 extra_compile_args=common_cflags, |
1574 extra_compile_args=common_cflags, |
1576 ), |
1575 ), |
1577 RustStandaloneExtension( |
1576 RustStandaloneExtension( |
1578 'mercurial.rustext', 'hg-cpython', 'librusthg', py3_features='python3' |
1577 'mercurial.rustext', |
|
1578 'hg-cpython', |
|
1579 'librusthg', |
1579 ), |
1580 ), |
1580 ] |
1581 ] |
1581 |
1582 |
1582 |
1583 |
1583 sys.path.insert(0, 'contrib/python-zstandard') |
1584 sys.path.insert(0, 'contrib/python-zstandard') |