def iter_package_info(self): '''Iterate over ghost_package, blob_id, locator for this section. The directory is visited recursively and in a repeatable order. ''' for root, dirnames, files in os.walk(self.full_path, topdown = True): dirnames.sort() files.sort() for candidate in files: full_path = pjoin(root, candidate) try: package_type = get_package_type(filename = candidate) except UnknownPackageTypeError: # if we don't know the the file is, we skip it. continue control = package_type.extract_header(full_path) iterator = gen_file_fragments(full_path) md51_digest = md5() for block in iterator: md51_digest.update(block) size = get_size(full_path) blob_id = 'md5:' + md51_digest.hexdigest() url = 'file://' + cpath(root) locator = FileLocator(url, candidate, blob_id, size, self.loader_factory) package = package_type.parse(control, blob_id) yield package, control, blob_id, locator for extra_blob_id, extra_size, extra_filename \ in package.extra_files: make_extra = locator.make_extra_file_locator extra_locator = make_extra(extra_filename, extra_blob_id, extra_size) yield None, None, extra_blob_id, extra_locator
def iter_package_info(self): '''Iterate over ghost_package, blob_id, locator for this section. The directory is visited recursively and in a repeatable order. ''' for root, dirnames, files in os.walk(self.full_path, topdown=True): dirnames.sort() files.sort() for candidate in files: full_path = pjoin(root, candidate) try: package_type = get_package_type(filename=candidate) except UnknownPackageTypeError: # if we don't know the the file is, we skip it. continue control = package_type.extract_header(full_path) iterator = gen_file_fragments(full_path) md51_digest = md5() for block in iterator: md51_digest.update(block) size = get_size(full_path) blob_id = 'md5:' + md51_digest.hexdigest() url = 'file://' + cpath(root) locator = FileLocator(url, candidate, blob_id, size, self.loader_factory) package = package_type.parse(control, blob_id) yield package, control, blob_id, locator for extra_blob_id, extra_size, extra_filename \ in package.extra_files: make_extra = locator.make_extra_file_locator extra_locator = make_extra(extra_filename, extra_blob_id, extra_size) yield None, None, extra_blob_id, extra_locator
def get_package(self, blob_id, type_string): '''Get a (ghost) package object for the blob_id.''' headers = self.index_file.get(('ent-id', blob_id), 1) for header in headers: if header is None: continue package_type = get_package_type(format = type_string) return package_type.parse(header, blob_id)
def get_package(self, blob_id, type_string): '''Get a (ghost) package object for the blob_id.''' headers = self.index_file.get(('ent-id', blob_id), 1) for header in headers: if header is None: continue package_type = get_package_type(format=type_string) return package_type.parse(header, blob_id)
def iter_world_items(records, section_name): '''Get WorldItems for all the objects in the given (one) channel. ''' for type_string, header, blob_id, locator in records: if type_string and header: package_type = get_package_type(format = type_string) package = package_type.parse(header, blob_id) found_filename = os.path.basename(locator.filename) package['pdk', 'found-filename'] = found_filename else: package = None item = WorldItem(section_name, package, blob_id, locator) yield item
def iter_world_items(records, section_name): '''Get WorldItems for all the objects in the given (one) channel. ''' for type_string, header, blob_id, locator in records: if type_string and header: package_type = get_package_type(format=type_string) package = package_type.parse(header, blob_id) found_filename = os.path.basename(locator.filename) package['pdk', 'found-filename'] = found_filename else: package = None item = WorldItem(section_name, package, blob_id, locator) yield item
def load_package(self, blob_id, package_format): """Load the raw header data into memory from a package """ package_type = get_package_type(format=package_format) header_file = self.get_header_filename(blob_id) # check if the header file is already present # don't bother with synchronization issues. if os.path.basename(header_file) not in self: # Suck the header out and install it blob_filename = self.file_path(blob_id) try: header = package_type.extract_header(blob_filename) except IOError, error: if error.errno == 2: message = "Missing package file in file cache\n" message += "ref = '%s'\n" % blob_id message += "Consider running pdk download on any new " message += "or recently modified components." raise SemanticError, message self.add_header(header, blob_id)
def load_package(self, blob_id, package_format): """Load the raw header data into memory from a package """ package_type = get_package_type(format = package_format) header_file = self.get_header_filename(blob_id) # check if the header file is already present # don't bother with synchronization issues. if os.path.basename(header_file) not in self: # Suck the header out and install it blob_filename = self.file_path(blob_id) try: header = package_type.extract_header(blob_filename) except IOError, error: if error.errno == 2: message = "Missing package file in file cache\n" message += "ref = '%s'\n" % blob_id message += "Consider running pdk download on any new " message += "or recently modified components." raise SemanticError, message self.add_header(header, blob_id)
def test_get_package_type(self): self.assert_equal(deb, get_package_type(filename='a.deb')) self.assert_equals(udeb, get_package_type(filename='a.udeb')) self.assert_equal(dsc, get_package_type(filename='a.dsc')) self.assert_equals(srpm, get_package_type(filename='a.src.rpm')) self.assert_equals(rpm, get_package_type(filename='a.rpm')) self.assert_equals(deb, get_package_type(format='deb')) self.assert_equals(udeb, get_package_type(format='udeb')) self.assert_equals(dsc, get_package_type(format='dsc')) self.assert_equals(srpm, get_package_type(format='srpm')) self.assert_equals(rpm, get_package_type(format='rpm')) try: get_package_type(filename='a') except UnknownPackageTypeError: pass else: self.fail('"a" is an invalid filetype') try: get_package_type(format='a') except UnknownPackageTypeError: pass else: self.fail('"a" is an invalid package format')
def test_get_package_type(self): self.assert_equal(deb, get_package_type(filename = 'a.deb')) self.assert_equals(udeb, get_package_type(filename = 'a.udeb')) self.assert_equal(dsc, get_package_type(filename = 'a.dsc')) self.assert_equals(srpm, get_package_type(filename = 'a.src.rpm')) self.assert_equals(rpm, get_package_type(filename = 'a.rpm')) self.assert_equals(deb, get_package_type(format = 'deb')) self.assert_equals(udeb, get_package_type(format = 'udeb')) self.assert_equals(dsc, get_package_type(format = 'dsc')) self.assert_equals(srpm, get_package_type(format = 'srpm')) self.assert_equals(rpm, get_package_type(format = 'rpm')) try: get_package_type(filename = 'a') except UnknownPackageTypeError: pass else: self.fail('"a" is an invalid filetype') try: get_package_type(format = 'a') except UnknownPackageTypeError: pass else: self.fail('"a" is an invalid package format')