When compiling drivers on Windows, instances have been seen where a temporary directory fails to get cleaned up due to ERROR_SHARING_VIOLATION (32).
Code inspection did not reveal problems with the DPDK code and scripts, and this issue was only seen on Windows. Adding a 1 second sleep before cleaning up the temporary directory seems to be effective, but to guarantee that this break does not happen anymore, flag "ignore_cleanup_errors" is set to "True". Signed-off-by: Andre Muezerie <andre...@linux.microsoft.com> --- buildtools/gen-pmdinfo-cfile.py | 24 +++++++++++------------- drivers/meson.build | 2 +- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/buildtools/gen-pmdinfo-cfile.py b/buildtools/gen-pmdinfo-cfile.py index 5fbd51658a..cf8881297f 100644 --- a/buildtools/gen-pmdinfo-cfile.py +++ b/buildtools/gen-pmdinfo-cfile.py @@ -5,17 +5,15 @@ import os import subprocess import sys -import tempfile -_, tmp_root, ar, archive, output, *pmdinfogen = sys.argv -with tempfile.TemporaryDirectory(dir=tmp_root) as temp: - paths = [] - for name in subprocess.run([ar, "t", archive], stdout=subprocess.PIPE, - check=True).stdout.decode().splitlines(): - if os.path.exists(name): - paths.append(name) - else: - subprocess.run([ar, "x", os.path.abspath(archive), name], - check=True, cwd=temp) - paths.append(os.path.join(temp, name)) - subprocess.run(pmdinfogen + paths + [output], check=True) +_, tmp_root, ar, tmp_dir, archive, output, *pmdinfogen = sys.argv +paths = [] +for name in subprocess.run([ar, "t", archive], stdout=subprocess.PIPE, + check=True).stdout.decode().splitlines(): + if os.path.exists(name): + paths.append(name) + else: + subprocess.run([ar, "x", os.path.abspath(archive), name], + check=True, cwd=tmp_dir) + paths.append(os.path.join(tmp_dir, name)) +subprocess.run(pmdinfogen + paths + [output], check=True) diff --git a/drivers/meson.build b/drivers/meson.build index caee1e3b79..8aad099c40 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -274,7 +274,7 @@ foreach subpath:subdirs c_args: cflags) objs += tmp_lib.extract_all_objects(recursive: true) sources_pmd_info = custom_target(out_filename, - command: [pmdinfo, tmp_lib.full_path(), '@OUTPUT@', pmdinfogen], + command: [pmdinfo, '@PRIVATE_DIR@', tmp_lib.full_path(), '@OUTPUT@', pmdinfogen], output: out_filename, depends: [tmp_lib]) -- 2.49.0.vfs.0.2