Re: untar builder fails with error
Mats Wichmann <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <[email protected]> |
On 11/8/22 08:21, daggs wrote: > I've decided to debug it on my home setup, it uses scons 4.4.0 and python 3.10.8 > the code I'm using is this: https://dpaste.com/CA5CGYWNC and I'm getting this: > dagg@NCC-5001D ~/workspace/scons_untar $ scons . > scons: Reading SConscript files ... > AttributeError: 'map' object has no attribute 'side_effect': > File "/home/dagg/workspace/scons_untar/SConstruct", line 40: > thirdPartyEnvironment.UnTar(source="apr-1.3.3") > File "/usr/lib/python3.10/site-packages/SCons/Environment.py", line 238: > return super().__call__(target, source, *args, **kw) > File "/usr/lib/python3.10/site-packages/SCons/Util.py", line 737: > return self.method(*nargs, **kwargs) > File "/usr/lib/python3.10/site-packages/SCons/Builder.py", line 663: > return self._execute(env, target, source, OverrideWarner(kw), ekw) > File "/usr/lib/python3.10/site-packages/SCons/Builder.py", line 579: > _node_errors(self, env, tlist, slist) > File "/usr/lib/python3.10/site-packages/SCons/Builder.py", line 291: > if t.side_effect: In Python 3, the map function returns a map object, which is an iterable, not a list. You can iterate over it - which is the usual operation - but not otherwise do much with it. You will have to create a list out of the result of mapping (we could argue that SCons' logic should accept any iterable here but that's a different story). >>> x = [1, 2, 3] >>> y = map(str, x) >>> print(y) <map object at 0x7ff5e5590d00> >>> print(list(y)) ['1', '2', '3'] So probably this will help: newTargets = list(map(tarInfoToNode, tarFileContents))