qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

symlink-install-tree.py (1053B)


      1 #!/usr/bin/env python3
      2 
      3 from pathlib import PurePath
      4 import errno
      5 import json
      6 import os
      7 import subprocess
      8 import sys
      9 
     10 def destdir_join(d1: str, d2: str) -> str:
     11     if not d1:
     12         return d2
     13     # c:\destdir + c:\prefix must produce c:\destdir\prefix
     14     return str(PurePath(d1, *PurePath(d2).parts[1:]))
     15 
     16 introspect = os.environ.get('MESONINTROSPECT')
     17 out = subprocess.run([*introspect.split(' '), '--installed'],
     18                      stdout=subprocess.PIPE, check=True).stdout
     19 for source, dest in json.loads(out).items():
     20     assert os.path.isabs(source)
     21     bundle_dest = destdir_join('qemu-bundle', dest)
     22     path = os.path.dirname(bundle_dest)
     23     try:
     24         os.makedirs(path, exist_ok=True)
     25     except BaseException as e:
     26         print(f'error making directory {path}', file=sys.stderr)
     27         raise e
     28     try:
     29         os.symlink(source, bundle_dest)
     30     except BaseException as e:
     31         if not isinstance(e, OSError) or e.errno != errno.EEXIST:
     32             print(f'error making symbolic link {dest}', file=sys.stderr)
     33             raise e