1426 class RustExtension(Extension): |
1426 class RustExtension(Extension): |
1427 """Base classes for concrete Rust Extension classes.""" |
1427 """Base classes for concrete Rust Extension classes.""" |
1428 |
1428 |
1429 rusttargetdir = os.path.join('rust', 'target', 'release') |
1429 rusttargetdir = os.path.join('rust', 'target', 'release') |
1430 |
1430 |
1431 def __init__( |
1431 def __init__(self, mpath, sources, rustlibname, subcrate, **kw): |
1432 self, mpath, sources, rustlibname, subcrate, py3_features=None, **kw |
|
1433 ): |
|
1434 Extension.__init__(self, mpath, sources, **kw) |
1432 Extension.__init__(self, mpath, sources, **kw) |
1435 srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
1433 srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
1436 self.py3_features = py3_features |
|
1437 |
1434 |
1438 # adding Rust source and control files to depends so that the extension |
1435 # adding Rust source and control files to depends so that the extension |
1439 # gets rebuilt if they've changed |
1436 # gets rebuilt if they've changed |
1440 self.depends.append(os.path.join(srcdir, 'Cargo.toml')) |
1437 self.depends.append(os.path.join(srcdir, 'Cargo.toml')) |
1441 cargo_lock = os.path.join(srcdir, 'Cargo.lock') |
1438 cargo_lock = os.path.join(srcdir, 'Cargo.lock') |
1479 |
1476 |
1480 cargocmd = ['cargo', 'rustc', '--release'] |
1477 cargocmd = ['cargo', 'rustc', '--release'] |
1481 |
1478 |
1482 feature_flags = [] |
1479 feature_flags = [] |
1483 |
1480 |
1484 if sys.version_info[0] == 3 and self.py3_features is not None: |
1481 cargocmd.append('--no-default-features') |
1485 feature_flags.append(self.py3_features) |
1482 if sys.version_info[0] == 2: |
1486 cargocmd.append('--no-default-features') |
1483 feature_flags.append('python27') |
|
1484 elif sys.version_info[0] == 3: |
|
1485 feature_flags.append('python3') |
1487 |
1486 |
1488 rust_features = env.get("HG_RUST_FEATURES") |
1487 rust_features = env.get("HG_RUST_FEATURES") |
1489 if rust_features: |
1488 if rust_features: |
1490 feature_flags.append(rust_features) |
1489 feature_flags.append(rust_features) |
1491 |
1490 |
1603 'hgext.fsmonitor.pywatchman.bser', |
1602 'hgext.fsmonitor.pywatchman.bser', |
1604 ['hgext/fsmonitor/pywatchman/bser.c'], |
1603 ['hgext/fsmonitor/pywatchman/bser.c'], |
1605 extra_compile_args=common_cflags, |
1604 extra_compile_args=common_cflags, |
1606 ), |
1605 ), |
1607 RustStandaloneExtension( |
1606 RustStandaloneExtension( |
1608 'mercurial.rustext', 'hg-cpython', 'librusthg', py3_features='python3' |
1607 'mercurial.rustext', |
|
1608 'hg-cpython', |
|
1609 'librusthg', |
1609 ), |
1610 ), |
1610 ] |
1611 ] |
1611 |
1612 |
1612 |
1613 |
1613 sys.path.insert(0, 'contrib/python-zstandard') |
1614 sys.path.insert(0, 'contrib/python-zstandard') |