summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorScott Kyle <scott@appden.com>2024-06-23 12:00:29 -0700
committerGitHub <noreply@github.com>2024-06-23 22:00:29 +0300
commitf5ec07e7c35ac2bf7ff9ee13ccf2818da53baabd (patch)
tree3fb6bdc947eddeb420eef91221628224985eb965 /mesonbuild
parenta28dde40b5b85c97b2eefee63db62ac49e46ca0c (diff)
downloadmeson-f5ec07e7c35ac2bf7ff9ee13ccf2818da53baabd.tar.gz
Ensure private directory exists for custom targets (#13196)
* Ensure private directory exists for custom targets Some custom target commands will expect the `@PRIVATE_DIR@` to already exist, such as with `make -C @PRIVATE_DIR@ ...` * Prefer `exist_ok` over catching exception
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/backend/backends.py6
-rw-r--r--mesonbuild/backend/ninjabackend.py7
2 files changed, 5 insertions, 8 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 055211090..cfae28bab 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -1578,9 +1578,9 @@ class Backend:
dfilename = os.path.join(outdir, target.depfile)
i = i.replace('@DEPFILE@', dfilename)
if '@PRIVATE_DIR@' in i:
- if target.absolute_paths:
- pdir = self.get_target_private_dir_abs(target)
- else:
+ pdir = self.get_target_private_dir_abs(target)
+ os.makedirs(pdir, exist_ok=True)
+ if not target.absolute_paths:
pdir = self.get_target_private_dir(target)
i = i.replace('@PRIVATE_DIR@', pdir)
else:
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 30529676f..eabe75865 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -864,11 +864,8 @@ class NinjaBackend(backends.Backend):
tgt[lnk_hash] = lnk_block
def generate_target(self, target):
- try:
- if isinstance(target, build.BuildTarget):
- os.makedirs(self.get_target_private_dir_abs(target))
- except FileExistsError:
- pass
+ if isinstance(target, build.BuildTarget):
+ os.makedirs(self.get_target_private_dir_abs(target), exist_ok=True)
if isinstance(target, build.CustomTarget):
self.generate_custom_target(target)
if isinstance(target, build.RunTarget):