aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py6
-rw-r--r--mesonbuild/backend/ninjabackend.py7
-rw-r--r--test cases/common/277 custom target private dir/meson.build16
3 files changed, 21 insertions, 8 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 0552110..cfae28b 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 3052967..eabe758 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):
diff --git a/test cases/common/277 custom target private dir/meson.build b/test cases/common/277 custom target private dir/meson.build
new file mode 100644
index 0000000..dc48d1a
--- /dev/null
+++ b/test cases/common/277 custom target private dir/meson.build
@@ -0,0 +1,16 @@
+project('277 custom target private dir')
+
+python = find_program('python3')
+
+custom_target(
+ 'check-private-dir',
+ command: [
+ python,
+ '-c',
+ 'import os, sys; os.chdir(sys.argv[1]); open(sys.argv[2], "w")',
+ '@PRIVATE_DIR@',
+ '@OUTPUT@',
+ ],
+ output: 'check-private-dir',
+ build_by_default: true,
+)