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.
			
			
This commit is contained in:
		
							parent
							
								
									e41c3a5f35
								
							
						
					
					
						commit
						2018c930ad
					
				| @ -129,7 +129,7 @@ class ActivityBundle(Bundle): | |||||||
| 
 | 
 | ||||||
|     def _parse_info(self, info_file): |     def _parse_info(self, info_file): | ||||||
|         cp = ConfigParser() |         cp = ConfigParser() | ||||||
|         cp.readfp(info_file) |         cp.read_string(info_file.read().decode()) | ||||||
| 
 | 
 | ||||||
|         section = 'Activity' |         section = 'Activity' | ||||||
| 
 | 
 | ||||||
| @ -251,7 +251,7 @@ class ActivityBundle(Bundle): | |||||||
|     def _parse_linfo(self, linfo_file): |     def _parse_linfo(self, linfo_file): | ||||||
|         cp = ConfigParser() |         cp = ConfigParser() | ||||||
|         try: |         try: | ||||||
|             cp.readfp(linfo_file) |             cp.read_string(linfo_file.read().decode()) | ||||||
| 
 | 
 | ||||||
|             section = 'Activity' |             section = 'Activity' | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -115,7 +115,7 @@ class Bundle(object): | |||||||
|         if self._zip_file is None: |         if self._zip_file is None: | ||||||
|             path = os.path.join(self._path, filename) |             path = os.path.join(self._path, filename) | ||||||
|             try: |             try: | ||||||
|                 f = open(path, 'r') |                 f = open(path, 'rb') | ||||||
|             except IOError: |             except IOError: | ||||||
|                 logging.debug("cannot open path %s" % path) |                 logging.debug("cannot open path %s" % path) | ||||||
|                 return None |                 return None | ||||||
| @ -123,7 +123,7 @@ class Bundle(object): | |||||||
|             path = os.path.join(self._zip_root_dir, filename) |             path = os.path.join(self._zip_root_dir, filename) | ||||||
|             try: |             try: | ||||||
|                 data = self._zip_file.read(path) |                 data = self._zip_file.read(path) | ||||||
|                 f = six.StringIO(data) |                 f = six.BytesIO(data) | ||||||
|             except KeyError: |             except KeyError: | ||||||
|                 logging.debug('%s not found in zip %s.' % (filename, path)) |                 logging.debug('%s not found in zip %s.' % (filename, path)) | ||||||
|                 return None |                 return None | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 James Cameron
						James Cameron