Skip to content
Permalink
Browse files
Fix sugar-install-bundle
Traceback (most recent call last):
  File "/usr/bin/sugar-install-bundle", line 21, in <module>
    bundle = ActivityBundle(name)
  File "/usr/lib/python3.7/dist-packages/sugar3/bundle/activitybundle.py", line 118, in __init__
    info_file = self.get_file('activity/activity.info')
  File "/usr/lib/python3.7/dist-packages/sugar3/bundle/bundle.py", line 126, in get_file
    f = six.StringIO(data)
TypeError: initial_value must be str or None, not bytes

Fix by always reading bundle and metadata as Bytes, and converting to
String before passing to ConfigParser.

Did not fix ContentBundle, as it has been unused for some time, and was
only kept for use with OLPC XO and Python 2.
  • Loading branch information
quozl committed Dec 27, 2019
1 parent e41c3a5 commit 2018c93
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
@@ -129,7 +129,7 @@ def __init__(self, path, translated=True):

def _parse_info(self, info_file):
cp = ConfigParser()
cp.readfp(info_file)
cp.read_string(info_file.read().decode())

section = 'Activity'

@@ -251,7 +251,7 @@ def _get_linfo_file(self):
def _parse_linfo(self, linfo_file):
cp = ConfigParser()
try:
cp.readfp(linfo_file)
cp.read_string(linfo_file.read().decode())

section = 'Activity'

@@ -115,15 +115,15 @@ def get_file(self, filename):
if self._zip_file is None:
path = os.path.join(self._path, filename)
try:
f = open(path, 'r')
f = open(path, 'rb')
except IOError:
logging.debug("cannot open path %s" % path)
return None
else:
path = os.path.join(self._zip_root_dir, filename)
try:
data = self._zip_file.read(path)
f = six.StringIO(data)
f = six.BytesIO(data)
except KeyError:
logging.debug('%s not found in zip %s.' % (filename, path))
return None

0 comments on commit 2018c93

Please sign in to comment.