def _add_files_to_release(release, basepath, files): """Adds information about meta files to debian release. :param release: the deb822.Release instance :param basepath: the suite folder path :param files: the sequence of files """ files_info = utils.get_size_and_checksum_for_files( files, _checksum_collector ) for filepath, size, cs in files_info: fname = filepath[len(basepath) + 1:] size = six.text_type(size) for m, checksum in six.moves.zip(_CHECKSUM_METHODS, cs): for v in release[m]: if v["name"] == fname: v[m] = checksum v["size"] = size break else: release[m].append(deb822.Deb822Dict({ m: checksum, "size": size, "name": fname }))
def _add_files_to_release(release, basepath, files): """Adds information about meta files to debian release. :param release: the deb822.Release instance :param basepath: the suite folder path :param files: the sequence of files """ files_info = utils.get_size_and_checksum_for_files( files, _checksum_collector) for filepath, size, cs in files_info: fname = filepath[len(basepath) + 1:] size = six.text_type(size) for m, checksum in six.moves.zip(_CHECKSUM_METHODS, cs): for v in release[m]: if v["name"] == fname: v[m] = checksum v["size"] = size break else: release[m].append( deb822.Deb822Dict({ m: checksum, "size": size, "name": fname }))
def load_package_from_file(self, repository, filename): filepath = utils.get_path_from_url(repository.url + filename) _, size, checksum = next(iter(utils.get_size_and_checksum_for_files( [filepath], _checksum_collector) )) with closing(debfile.DebFile(filepath)) as deb: debcontrol = deb822.Packages( deb.control.get_content(debfile.CONTROL_FILE) ) return Package( repository=repository, name=debcontrol["package"], version=Version(debcontrol['version']), filesize=int(debcontrol.get('size', size)), filename=filename, checksum=FileChecksum(*checksum), mandatory=self._is_mandatory(debcontrol), requires=self._get_relations( debcontrol, "depends", "pre-depends", "recommends" ), provides=self._get_relations(debcontrol, "provides"), obsoletes=[], group=debcontrol.get('section'), )
def test_get_size_and_checksum_for_files(self, os, open): files = ["/file1.txt", "/file2.txt"] os.fstat.side_effect = [ mock.MagicMock(st_size=1), mock.MagicMock(st_size=2) ] r = list( utils.get_size_and_checksum_for_files( files, mock.MagicMock(side_effect=["1", "2"]))) self.assertEqual([("/file1.txt", 1, "1"), ("/file2.txt", 2, "2")], r)
def test_get_size_and_checksum_for_files(self, os, open): files = [ "/file1.txt", "/file2.txt" ] os.fstat.side_effect = [ mock.MagicMock(st_size=1), mock.MagicMock(st_size=2) ] r = list(utils.get_size_and_checksum_for_files( files, mock.MagicMock(side_effect=["1", "2"]) )) self.assertEqual( [("/file1.txt", 1, "1"), ("/file2.txt", 2, "2")], r )
def load_package_from_file(self, repository, filepath): fullpath = utils.get_path_from_url(repository.url + filepath) _, size, checksum = next(iter(utils.get_size_and_checksum_for_files( [fullpath], _checksum_collector) )) pkg = createrepo.yumbased.YumLocalPackage(filename=fullpath) hdr = pkg.returnLocalHeader() return Package( repository=repository, name=hdr["name"], version=PackageVersion( hdr['epoch'], hdr['version'], hdr['release'] ), filesize=int(hdr['size']), filename=filepath, checksum=FileChecksum(*checksum), mandatory=False, requires=self._parse_package_relations(pkg.requires), obsoletes=self._parse_package_relations(pkg.obsoletes), provides=self._parse_package_relations(pkg.provides), )
def load_package_from_file(self, repository, filepath): fullpath = utils.get_path_from_url(repository.url + filepath) _, size, checksum = next( iter( utils.get_size_and_checksum_for_files([fullpath], _checksum_collector))) pkg = createrepo.yumbased.YumLocalPackage(filename=fullpath) hdr = pkg.returnLocalHeader() return Package( repository=repository, name=hdr["name"], version=RpmPackageVersion(hdr['epoch'], hdr['version'], hdr['release']), filesize=int(hdr['size']), filename=filepath, checksum=FileChecksum(*checksum), mandatory=False, requires=self._parse_package_relations(pkg.requires), obsoletes=self._parse_package_relations(pkg.obsoletes), provides=self._get_provides_from_rpm(pkg), group=hdr["group"], )
def load_package_from_file(self, repository, filename): filepath = utils.get_path_from_url(repository.url + filename) _, size, checksum = next( iter( utils.get_size_and_checksum_for_files([filepath], _checksum_collector))) with closing(debfile.DebFile(filepath)) as deb: debcontrol = deb822.Packages( deb.control.get_content(debfile.CONTROL_FILE)) return Package( repository=repository, name=debcontrol["package"], version=Version(debcontrol['version']), filesize=int(debcontrol.get('size', size)), filename=filename, checksum=FileChecksum(*checksum), mandatory=self._is_mandatory(debcontrol), requires=self._get_relations(debcontrol, "depends", "pre-depends", "recommends"), provides=self._get_relations(debcontrol, "provides"), obsoletes=[], group=debcontrol.get('section'), )