Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging
[qemu/ar7.git] / scripts / symlink-install-tree.py
bloba5bf0b0d6d7c3f796ccb1923ef8146984cfa347a
1 #!/usr/bin/env python3
3 from pathlib import PurePath
4 import errno
5 import json
6 import os
7 import subprocess
8 import sys
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:]))
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