Browse Source
Developers often run QEMU without installing. The bundle mechanism allows to look up files which should be present in installation even in such a situation. It is a general mechanism and can find any files in the installation tree. The build tree will have a new directory, qemu-bundle, to represent what files the installation tree would have for reference by the executables. Note that it abandons compatibility with Windows older than 8. The extended support for the prior version, 7 ended more than 2 years ago, and it is unlikely that someone would like to run the latest QEMU on such an old system. Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com> Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20220624145039.49929-3-akihiko.odaki@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>pull/213/head
committed by
Paolo Bonzini
7 changed files with 102 additions and 26 deletions
@ -0,0 +1,33 @@ |
|||
#!/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(): |
|||
assert os.path.isabs(source) |
|||
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: |
|||
print(f'error making symbolic link {dest}', file=sys.stderr) |
|||
raise e |
|||
Loading…
Reference in new issue