diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-07-02 16:33:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-02 16:33:49 -0400 |
commit | 917e12e4e722e0c946dc4750d4d100e3b9a41bf1 (patch) | |
tree | 90f8486bc7ff8c0f2916e4b2f11e164b9f072de2 /mesonbuild/build.py | |
parent | 304841d1c7fb2e6dfbe8134e16acbeaeb338914b (diff) | |
parent | f5b95dfa06389a1fae21d998ef65af5c4d6958b6 (diff) | |
download | meson-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.py | 32 |
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'] |