setup.py
changeset 48182 01c3dd208c75
parent 48180 f78d8b8c46d7
child 48303 2ce31dbde4b1
equal deleted inserted replaced
48181:c95f6c2d1f4e 48182:01c3dd208c75
  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')