[Scons-users] untar builder fails with error

Mats Wichmann mats at wichmann.us
Fri Nov 4 10:42:33 EDT 2022


On 11/4/22 08:33, daggs wrote:
> Greetings,
> 
> I"m trying to implement the untar builder from https://github.com/SCons/scons/wiki/UnTarBuilder on scons v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691 (ubuntu 20.04)
> and I'm getting this error:
> AttributeError: 'TarInfo' object has no attribute 'target_peers':
>    File "/home/dagg/project/site_scons/build_utils.py", line 471:
>      env.Unpack(get_target(), deps_targets_list,
>    File "/usr/lib/scons/SCons/Environment.py", line 255:
>      return MethodWrapper.__call__(self, target, source, *args, **kw)
>    File "/usr/lib/scons/SCons/Environment.py", line 219:
>      return self.method(*nargs, **kwargs)
>    File "/usr/lib/scons/SCons/Builder.py", line 651:
>      return self._execute(env, target, source, OverrideWarner(kw), ekw)
>    File "/usr/lib/scons/SCons/Builder.py", line 570:
>      t.target_peers = tlist
> Compilation failed
> 
> has anyone encountered this issue? I cannot seem to be able to find target_peers in reference to python anywhere
> 
> the builder looks like this:
> import tarfile, os
> 
> def message(target, source, env):
>      return "Unpacking..."
> 
> def builder(target, source, env):
>      tar_file = tarfile.open(env['path'])
>      tar_file.extractall(env['target'])
>      tar_file.close()
> 
>      return None
> 
> def content_emitter(target, source, env):
>      fn = os.path.basename(str(source[0]))
>      print("Reading content...")
>      tar_file = tarfile.open(str(source[0]), "r")
>      new_targets = [ ent for ent in tar_file.getmembers() if ent.isfile() ]
>      tar_file.close()
>      print("Done")
> 
>      return (new_targets, source)
> 
> def generate(env, **kwargs):
>      unpacker = env.Builder(
>          action = env.Action(builder, message),
>          src_suffix = ".tar.bz2",
>          emitter = content_emitter,
>      )
> 
>      env.Append(BUILDERS = { 'Unpack' : unpacker })
> 
> def exists(env):
>      return True
> 
> Thanks,
> 
> dagg

I've used (a fork of) that one, but it's not been for like six years.

Current scons certainly has a target_peers in the node class, and it's 
actively used by the ninja tool. Ninja support, of course, is much newer 
than SCons 3.1.2 - can't really tell the history without more 
prospecting, maybe someone else knows.



More information about the Scons-users mailing list