-
-
Notifications
You must be signed in to change notification settings - Fork 334
Open
Labels
Description
I'm not sure if this is accidental but get_contents_entry()
and get_contents_dir()
are returning str
s (line 209, 219):
Lines 198 to 219 in 6ef35d8
def get_contents_entry(node): | |
"""Fetch the contents of the entry. Returns the exact binary | |
contents of the file.""" | |
try: | |
node = node.disambiguate(must_exist=1) | |
except SCons.Errors.UserError: | |
# There was nothing on disk with which to disambiguate | |
# this entry. Leave it as an Entry, but return a null | |
# string so calls to get_contents() in emitters and the | |
# like (e.g. in qt.py) don't have to disambiguate by hand | |
# or catch the exception. | |
return '' | |
else: | |
return _get_contents_map[node._func_get_contents](node) | |
def get_contents_dir(node): | |
"""Return content signatures and names of all our children | |
separated by new-lines. Ensure that the nodes are sorted.""" | |
contents = [] | |
for n in sorted(node.children(), key=lambda t: t.name): | |
contents.append('%s %s\n' % (n.get_csig(), n.name)) | |
return ''.join(contents) |
I ran into this when trying to debug this SConstruct,
v = Value('x')
e = Entry('something')
v.add_dependency([e])
v.get_contents()
which was producing the output,
AttributeError: 'str' object has no attribute 'decode':
File ".../SConstruct", line 5:
v.get_contents()
File ".../SCons/Node/Python.py", line 155:
text_contents = self.get_text_contents()
File ".../SCons/Node/Python.py", line 147:
contents = contents + kid.get_contents().decode()
I think this is because Value.get_text_contents()
is expecting kid.get_contents()
to be of type bytes
.