2022-06-24 16:50:37 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
from pathlib import PurePath
|
|
|
|
import errno
|
|
|
|
import json
|
|
|
|
import os
|
|
|
|
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([*introspect.split(' '), '--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:
|
2023-05-04 23:11:01 +02:00
|
|
|
if os.name == 'nt':
|
|
|
|
print('Please enable Developer Mode to support soft link '
|
|
|
|
'without Administrator permission')
|
2022-06-24 16:50:37 +02:00
|
|
|
print(f'error making symbolic link {dest}', file=sys.stderr)
|
|
|
|
raise e
|