def _unparse_version_attrs(attrs): """Gets the package version from attributes. :param attrs: the relation tag attributes :return: the PackageVersion object """ return PackageVersion(attrs.get("epoch", 0), attrs.get("ver", "0.0"), attrs.get("rel"))
def _parse_package_relations(relations): """Parses yum package relations. :param relations: list of tuples (name, flags, (epoch, version, release)) :return: list of PackageRelation objects """ return [ PackageRelation( x[0], VersionRange(_OPERATORS_MAPPING[x[1]], x[1] and PackageVersion(*x[2]))) for x in relations ]
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._get_provides_from_rpm(pkg), group=hdr["group"], )