From: Andre Muezerie <andremue@linux.microsoft.com>
To: andremue@linux.microsoft.com
Cc: dev@dpdk.org
Subject: [PATCH v3 1/1] buildtools: avoid break due to failure to cleanup temporary directory
Date: Wed, 7 May 2025 07:21:11 -0700 [thread overview]
Message-ID: <1746627671-28659-2-git-send-email-andremue@linux.microsoft.com> (raw)
In-Reply-To: <1746627671-28659-1-git-send-email-andremue@linux.microsoft.com>
When compiling drivers on Windows, instances have been seen where a
temporary directory fails to get cleaned up due to
ERROR_SHARING_VIOLATION (32).
This issue was not seen on operating systems other than Windows.
This patch eliminates the use of tempfile.TemporaryDirectory, which
was triggering the issue.
Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
---
buildtools/gen-pmdinfo-cfile.py | 26 +++++++++++++-------------
buildtools/meson.build | 2 +-
drivers/meson.build | 2 +-
3 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/buildtools/gen-pmdinfo-cfile.py b/buildtools/gen-pmdinfo-cfile.py
index 5fbd51658a..8ffc192c40 100644
--- a/buildtools/gen-pmdinfo-cfile.py
+++ b/buildtools/gen-pmdinfo-cfile.py
@@ -5,17 +5,17 @@
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)
+_, 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:
+ if not os.path.exists(tmp_dir):
+ os.makedirs(tmp_dir)
+ 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/buildtools/meson.build b/buildtools/meson.build
index 1cd1ce02fd..e7c53c9a84 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -34,7 +34,7 @@ install_data([
install_dir: 'bin')
# select library and object file format
-pmdinfo = py3 + files('gen-pmdinfo-cfile.py') + [meson.current_build_dir()]
+pmdinfo = py3 + files('gen-pmdinfo-cfile.py')
pmdinfogen = py3 + files('pmdinfogen.py')
if host_machine.system() == 'windows'
if cc.get_id() == 'gcc'
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
next prev parent reply other threads:[~2025-05-07 14:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 19:46 [PATCH 0/1] avoid break due to failure to cleanup temporary directory Andre Muezerie
2025-05-05 19:46 ` [PATCH 1/1] buildtools: " Andre Muezerie
2025-05-05 20:09 ` Andre Muezerie
2025-05-05 22:47 ` Dmitry Kozlyuk
2025-05-06 22:12 ` Andre Muezerie
2025-05-06 22:14 ` [PATCH v2 0/1] " Andre Muezerie
2025-05-06 22:14 ` [PATCH v2 1/1] buildtools: " Andre Muezerie
2025-05-06 22:31 ` Dmitry Kozlyuk
2025-05-07 14:21 ` [PATCH v3 0/1] " Andre Muezerie
2025-05-07 14:21 ` Andre Muezerie [this message]
2025-05-07 15:32 ` [PATCH v3 1/1] buildtools: " Dmitry Kozlyuk
2025-05-16 9:34 ` David Marchand
2025-05-16 13:14 ` Andre Muezerie
2025-06-04 10:34 ` David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1746627671-28659-2-git-send-email-andremue@linux.microsoft.com \
--to=andremue@linux.microsoft.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.