__init__.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import sys,os,shutil
  2. def get_overlay_dir(repo_root):
  3. return os.path.join(repo_root,'test','overlay','tree')
  4. def overlay_setup(repo_root):
  5. def process_srcdir(d):
  6. relpath = d.split('.')
  7. srcdir = os.path.join(repo_root,*relpath)
  8. destdir = os.path.join(overlay_dir,*relpath)
  9. fakemod_dir = os.path.join(fakemod_root,*(relpath[1:]))
  10. os.makedirs(destdir)
  11. for fn in os.listdir(srcdir):
  12. if (
  13. fn.endswith('.py') or
  14. d == 'mmgen.data' or
  15. d == 'mmgen' and fn.startswith('secp256k1')
  16. ):
  17. if os.path.exists(os.path.join(fakemod_dir,fn)):
  18. make_link(
  19. os.path.join(fakemod_dir,fn),
  20. os.path.join(destdir,fn) )
  21. # link_fn = fn.removesuffix('.py') + '_orig.py' # Python 3.9
  22. link_fn = fn[:-3] + '_orig.py'
  23. else:
  24. link_fn = fn
  25. make_link(
  26. os.path.join(srcdir,fn),
  27. os.path.join(destdir,link_fn) )
  28. overlay_dir = get_overlay_dir(repo_root)
  29. fakemod_root = os.path.join(repo_root,'test','overlay','fakemods')
  30. make_link = os.symlink if sys.platform == 'linux' else shutil.copy2
  31. if not os.path.exists(os.path.join(overlay_dir,'mmgen','main.py')):
  32. sys.stderr.write('Setting up overlay tree\n')
  33. shutil.rmtree(overlay_dir,ignore_errors=True)
  34. for d in (
  35. 'mmgen',
  36. 'mmgen.contrib',
  37. 'mmgen.base_proto',
  38. 'mmgen.base_proto.bitcoin',
  39. 'mmgen.base_proto.bitcoin.tx',
  40. 'mmgen.base_proto.bitcoin.tw',
  41. 'mmgen.base_proto.ethereum',
  42. 'mmgen.base_proto.ethereum.pyethereum',
  43. 'mmgen.base_proto.ethereum.rlp',
  44. 'mmgen.base_proto.ethereum.rlp.sedes',
  45. 'mmgen.base_proto.ethereum.tx',
  46. 'mmgen.base_proto.ethereum.tw',
  47. 'mmgen.base_proto.monero',
  48. 'mmgen.data',
  49. 'mmgen.proto',
  50. 'mmgen.share',
  51. 'mmgen.tool',
  52. 'mmgen.tx',
  53. 'mmgen.tw',
  54. 'mmgen.wallet',
  55. 'mmgen.wordlist' ):
  56. process_srcdir(d)
  57. return overlay_dir