Message ID | 20250111215244.1680931-1-sw@weilnetz.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | scripts/nsis.py: Run dependency check for each DLL file only once | expand |
On 11/1/25 22:52, Stefan Weil via wrote: > Each DLL should only be checked once for dependencies, but > several hundred (781 in my test) unneeded checks were done. > > Now the script is significantly faster (16 s in my build). > > Signed-off-by: Stefan Weil <sw@weilnetz.de> > --- > scripts/nsis.py | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/scripts/nsis.py b/scripts/nsis.py > index d0914c88a7..d0ac61f6ab 100644 > --- a/scripts/nsis.py > +++ b/scripts/nsis.py > @@ -37,10 +37,10 @@ def find_deps(exe_or_dll, search_path, analyzed_deps): > > analyzed_deps.add(dep) > # locate the dll dependencies recursively > - rdeps = find_deps(dll, search_path, analyzed_deps) > + analyzed_deps, rdeps = find_deps(dll, search_path, analyzed_deps) > deps.extend(rdeps) > > - return deps > + return analyzed_deps, deps > > def main(): > parser = argparse.ArgumentParser(description="QEMU NSIS build helper.") > @@ -92,18 +92,18 @@ def main(): > dlldir = os.path.join(destdir + prefix, "dll") > os.mkdir(dlldir) > > + analyzed_deps = set() > for exe in glob.glob(os.path.join(destdir + prefix, "*.exe")): > signcode(exe) > > # find all dll dependencies > - deps = set(find_deps(exe, search_path, set())) > + analyzed_deps, deps = find_deps(exe, search_path, analyzed_deps) > + deps = set(deps) > deps.remove(exe) > > # copy all dlls to the DLLDIR > for dep in deps: > dllfile = os.path.join(dlldir, os.path.basename(dep)) > - if (os.path.exists(dllfile)): > - continue > print("Copying '%s' to '%s'" % (dep, dllfile)) > shutil.copy(dep, dllfile) > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 1/11/25 13:52, Stefan Weil via wrote: > Each DLL should only be checked once for dependencies, but > several hundred (781 in my test) unneeded checks were done. > > Now the script is significantly faster (16 s in my build). > > Signed-off-by: Stefan Weil <sw@weilnetz.de> > --- > scripts/nsis.py | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/scripts/nsis.py b/scripts/nsis.py > index d0914c88a7..d0ac61f6ab 100644 > --- a/scripts/nsis.py > +++ b/scripts/nsis.py > @@ -37,10 +37,10 @@ def find_deps(exe_or_dll, search_path, analyzed_deps): > > analyzed_deps.add(dep) > # locate the dll dependencies recursively > - rdeps = find_deps(dll, search_path, analyzed_deps) > + analyzed_deps, rdeps = find_deps(dll, search_path, analyzed_deps) > deps.extend(rdeps) > > - return deps > + return analyzed_deps, deps > > def main(): > parser = argparse.ArgumentParser(description="QEMU NSIS build helper.") > @@ -92,18 +92,18 @@ def main(): > dlldir = os.path.join(destdir + prefix, "dll") > os.mkdir(dlldir) > > + analyzed_deps = set() > for exe in glob.glob(os.path.join(destdir + prefix, "*.exe")): > signcode(exe) > > # find all dll dependencies > - deps = set(find_deps(exe, search_path, set())) > + analyzed_deps, deps = find_deps(exe, search_path, analyzed_deps) > + deps = set(deps) > deps.remove(exe) > > # copy all dlls to the DLLDIR > for dep in deps: > dllfile = os.path.join(dlldir, os.path.basename(dep)) > - if (os.path.exists(dllfile)): > - continue > print("Copying '%s' to '%s'" % (dep, dllfile)) > shutil.copy(dep, dllfile) > Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Stefan Weil via <qemu-devel@nongnu.org> writes: > Each DLL should only be checked once for dependencies, but > several hundred (781 in my test) unneeded checks were done. > > Now the script is significantly faster (16 s in my build). > > Signed-off-by: Stefan Weil <sw@weilnetz.de> Queued to maintainer/jan-2025, thanks.
diff --git a/scripts/nsis.py b/scripts/nsis.py index d0914c88a7..d0ac61f6ab 100644 --- a/scripts/nsis.py +++ b/scripts/nsis.py @@ -37,10 +37,10 @@ def find_deps(exe_or_dll, search_path, analyzed_deps): analyzed_deps.add(dep) # locate the dll dependencies recursively - rdeps = find_deps(dll, search_path, analyzed_deps) + analyzed_deps, rdeps = find_deps(dll, search_path, analyzed_deps) deps.extend(rdeps) - return deps + return analyzed_deps, deps def main(): parser = argparse.ArgumentParser(description="QEMU NSIS build helper.") @@ -92,18 +92,18 @@ def main(): dlldir = os.path.join(destdir + prefix, "dll") os.mkdir(dlldir) + analyzed_deps = set() for exe in glob.glob(os.path.join(destdir + prefix, "*.exe")): signcode(exe) # find all dll dependencies - deps = set(find_deps(exe, search_path, set())) + analyzed_deps, deps = find_deps(exe, search_path, analyzed_deps) + deps = set(deps) deps.remove(exe) # copy all dlls to the DLLDIR for dep in deps: dllfile = os.path.join(dlldir, os.path.basename(dep)) - if (os.path.exists(dllfile)): - continue print("Copying '%s' to '%s'" % (dep, dllfile)) shutil.copy(dep, dllfile)
Each DLL should only be checked once for dependencies, but several hundred (781 in my test) unneeded checks were done. Now the script is significantly faster (16 s in my build). Signed-off-by: Stefan Weil <sw@weilnetz.de> --- scripts/nsis.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)