#!/usr/bin/env python3 from pathlib import PurePath import errno import json import os import shlex import subprocess import sys def destdir_join(d1: str, d2: str) -> str: if not d1: return d2 # c:\destdir + c:\prefix must produce c:\destdir\prefix return str(PurePath(d1, *PurePath(d2).parts[1:])) introspect = os.environ.get('MESONINTROSPECT') out = subprocess.run([*shlex.split(introspect), '--installed'], stdout=subprocess.PIPE, check=True).stdout for source, dest in json.loads(out).items(): bundle_dest = destdir_join('qemu-bundle', dest) path = os.path.dirname(bundle_dest) try: os.makedirs(path, exist_ok=True) except BaseException as e: print(f'error making directory {path}', file=sys.stderr) raise e try: os.symlink(source, bundle_dest) except BaseException as e: if not isinstance(e, OSError) or e.errno != errno.EEXIST: if os.name == 'nt': print('Please enable Developer Mode to support soft link ' 'without Administrator permission') print(f'error making symbolic link {dest}', file=sys.stderr) raise e