aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-07-02 16:33:49 -0400
committerGitHub <noreply@github.com>2017-07-02 16:33:49 -0400
commit917e12e4e722e0c946dc4750d4d100e3b9a41bf1 (patch)
tree90f8486bc7ff8c0f2916e4b2f11e164b9f072de2 /mesonbuild/build.py
parent304841d1c7fb2e6dfbe8134e16acbeaeb338914b (diff)
parentf5b95dfa06389a1fae21d998ef65af5c4d6958b6 (diff)
downloadmeson-917e12e4e722e0c946dc4750d4d100e3b9a41bf1.zip
meson-917e12e4e722e0c946dc4750d4d100e3b9a41bf1.tar.gz
meson-917e12e4e722e0c946dc4750d4d100e3b9a41bf1.tar.bz2
Merge pull request #2017 from mesonbuild/fix2012
Do not pickle interpreter objects by accident
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r--mesonbuild/build.py32
1 files changed, 22 insertions, 10 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index dd4f7b7..fb56cea 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 = []
@@ -1490,8 +1498,12 @@ class CustomTarget(Target):
def process_kwargs(self, kwargs):
super().process_kwargs(kwargs)
- self.sources = kwargs.get('input', [])
- self.sources = flatten(self.sources)
+ sources = flatten(kwargs.get('input', []))
+ self.sources = []
+ for s in sources:
+ if hasattr(s, 'held_object'):
+ s = s.held_object
+ self.sources.append(s)
if 'output' not in kwargs:
raise InvalidArguments('Missing keyword argument "output".')
self.outputs = kwargs['output']