예제 #1
0
    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
                        }))
예제 #3
0
    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'),
        )
예제 #4
0
 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)
예제 #5
0
 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
     )
예제 #6
0
 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),
     )
예제 #7
0
 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'),
        )