Lines Matching refs:self
40 def __init__(self, target_package_images_dir,
44 self.target_package_images_dir = target_package_images_dir
45 self.full_img_list = full_img_list
46 self.full_img_name_list = full_img_name_list
47 self.verse_script = verse_script
48 self.full_image_path_list = full_image_path_list
49 self.no_zip = no_zip
51 def update_full_image(self):
59 for idx, each_name in enumerate(self.full_img_list):
60 full_image_content = self.get_full_image_content(
61 self.full_image_path_list[idx])
62 img_name = self.full_img_name_list[idx][:-4]
69 dir=self.target_package_images_dir,
77 update_image_set = set(self.full_img_list) - FORBIDEN_UPDATE_IMAGE_SET
78 if not self.no_zip and len(update_image_set) != 0:
80 image_write_cmd = self.verse_script.full_image_update(UPDATE_BIN_FILE_NAME)
83 self.verse_script.add_command(cmd=cmd)
87 len(self.full_img_list))
115 def __init__(self, image_path, map_path):
121 self.image_path = image_path
122 self.map_path = map_path
123 self.offset_value_list = []
124 self.care_block_range = None
125 self.extended_range = None
126 self.reserved_blocks = BlocksManager("0")
127 self.file_map = []
128 self.offset_index = []
129 self.block_size = None
130 self.total_blocks = None
131 self.parse_raw_image_file(image_path, map_path)
133 def parse_raw_image_file(self, image_path, map_path):
139 self.block_size = block_size = 4096
140 self.total_blocks = total_blocks = \
141 os.path.getsize(self.image_path) // self.block_size
142 reference = b'\0' * self.block_size
146 for i in range(self.total_blocks):
147 blocks_data = f_r.read(self.block_size)
151 self.care_block_range = BlocksManager(nonzero_blocks)
152 care_value_list = list(self.care_block_range.range_data)
162 self.offset_index = [i[0] for i in offset_value_list]
163 self.offset_value_list = offset_value_list
165 self.care_block_range.extend_value_to_blocks(EXTEND_VALUE)
167 self.extended_range = \
169 get_subtract_with_other(self.care_block_range)
170 self.parse_block_map_file(map_path, f_r)
172 def parse_block_map_file(self, map_path, image_file_r):
179 remain_range = self.care_block_range
196 reserved_blocks = self.reserved_blocks
205 default_zero_block = ('\0' * self.block_size).encode()
208 self.apply_remain_range(
212 temp_file_map = self.get_file_map(
215 self.file_map = temp_file_map
217 def apply_remain_range(self, *args):
226 # bisect 二分查找,b在self.offset_index中的位置
227 idx = bisect.bisect_right(self.offset_index, each_value) - 1
229 self.offset_value_list[idx]
230 data = self.get_file_data(self.block_size, chunk_start,
235 self.get_zero_nonzero_blocks_list(
330 def range_sha256(self, ranges):
337 for data in self.__get_blocks_set_data(ranges):
341 def write_range_data_2_fd(self, ranges, file_obj):
348 for data in self.__get_blocks_set_data(ranges):
351 def get_ranges(self, ranges):
357 return [each_data for each_data in self.__get_blocks_set_data(ranges)]
359 def __get_blocks_set_data(self, blocks_set_data):
363 with open(self.image_path, 'rb') as f_r:
366 idx = bisect.bisect_right(self.offset_index, start) - 1
368 self.offset_value_list[idx]
373 pos = file_pos + ((start - chunk_start) * self.block_size)
375 yield f_r.read(this_read * self.block_size)
377 yield fill_data * (this_read * (self.block_size >> 2))
383 self.offset_value_list[idx]
387 yield f_r.read(this_read * self.block_size)
389 yield fill_data * (this_read * (self.block_size >> 2))