aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-07-01 02:10:02 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2017-07-01 02:10:02 +0300
commitad3dc937f11af894576032dcad4fb88042bdf253 (patch)
tree14a055d9b4cf26c9d5fe193e6b676ccfc00ca772 /mesonbuild/build.py
parentecde592b86e9c25fc82a612085761c4825017841 (diff)
downloadmeson-ad3dc937f11af894576032dcad4fb88042bdf253.zip
meson-ad3dc937f11af894576032dcad4fb88042bdf253.tar.gz
meson-ad3dc937f11af894576032dcad4fb88042bdf253.tar.bz2
Fix remaining Interpreter object leaks.
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r--mesonbuild/build.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 9dd0fa0..a797e9f 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -546,10 +546,14 @@ class BuildTarget(Target):
d = [d]
newd = []
for i in d:
- if hasattr(i, 'held_object'):
- newd.append(i.held_object)
- else:
- newd.append(i)
+ if isinstance(i, list):
+ i = self.unpack_holder(i)
+ elif hasattr(i, 'held_object'):
+ i = i.held_object
+ for t in ['dependencies', 'link_with', 'include_directories', 'sources']:
+ if hasattr(i, t):
+ setattr(i, t, self.unpack_holder(getattr(i, t)))
+ newd.append(i)
return newd
def copy_kwargs(self, kwargs):
@@ -557,10 +561,14 @@ class BuildTarget(Target):
# This sucks quite badly. Arguments
# are holders but they can't be pickled
# so unpack those known.
- if 'dependencies' in self.kwargs:
- self.kwargs['dependencies'] = self.unpack_holder(self.kwargs['dependencies'])
- if 'link_with' in self.kwargs:
- self.kwargs['link_with'] = self.unpack_holder(self.kwargs['link_with'])
+ for k, v in self.kwargs.items():
+ if isinstance(v, list):
+ self.kwargs[k] = self.unpack_holder(v)
+ if hasattr(v, 'held_object'):
+ self.kwargs[k] = v.held_object
+ for t in ['dependencies', 'link_with', 'include_directories', 'sources']:
+ if t in self.kwargs:
+ self.kwargs[t] = self.unpack_holder(self.kwargs[t])
def extract_objects(self, srclist):
obj_src = []