setup.py
branchstable
changeset 48315 a44bb185f6bd
parent 48303 2ce31dbde4b1
child 48423 fff5942d445f
child 48743 a1538c05d855
equal deleted inserted replaced
48314:6f43569729d4 48315:a44bb185f6bd
  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')