diff --git a/pyopencl/cache.py b/pyopencl/cache.py index 8ef187447bf587737e891e3706e7972c81b16df8..59f41349101aaddc2037906e79120658b1521752 100644 --- a/pyopencl/cache.py +++ b/pyopencl/cache.py @@ -28,6 +28,13 @@ def _erase_dir(dir): unlink(join(dir, name)) rmdir(dir) +def update_checksum(checksum, obj): + if isinstance(obj, unicode): + checksum.update(obj.encode("utf8")) + else: + checksum.update(obj) + + @@ -144,7 +151,7 @@ def get_dependencies(src, include_path): src_file.close() checksum = new_hash() - checksum.update(included_src.encode("utf8")) + update_checksum(checksum, included_src) _inner(included_src) result[included_file_name] = ( @@ -173,7 +180,7 @@ def get_file_md5sum(fname): contents = inf.read() finally: inf.close() - checksum.update(contents.encode("utf8")) + update_checksum(checksum, contents) return checksum.hexdigest() @@ -207,9 +214,9 @@ def get_device_cache_id(device): def get_cache_key(device, options, src): checksum = new_hash() - checksum.update(src.encode("utf8")) - checksum.update(" ".join(options).encode("utf8")) - checksum.update(str(get_device_cache_id(device)).encode("utf8")) + update_checksum(checksum, src) + update_checksum(checksum, " ".join(options)) + update_checksum(checksum, str(get_device_cache_id(device))) return checksum.hexdigest() # }}}