pmb.core.package_metadata: Introduce (MR 2425)

This commit is contained in:
Stefan Hansson 2024-10-06 13:04:14 +02:00 committed by Newbyte
parent c5551f5924
commit 566b43edd4
No known key found for this signature in database
GPG key ID: 8A700086A9FE41FD

View file

@ -0,0 +1,44 @@
# Copyright 2024 Stefan Hansson
# SPDX-License-Identifier: GPL-3.0-or-later
from dataclasses import dataclass
from typing import Any
import pmb.build._package
from pmb.core.apkindex_block import ApkindexBlock
from pmb.core.context import get_context
@dataclass
class PackageMetadata:
# This can't be list[Arch] because it can have values like "noarch" and "!armhf"
arch: list[str]
depends: list[str]
pkgname: str
provides: list[str]
version: str
@staticmethod
def from_apkindex_block(apkindex_block: ApkindexBlock) -> "PackageMetadata":
return PackageMetadata(
arch=[str(apkindex_block.arch)],
depends=apkindex_block.depends or [],
pkgname=apkindex_block.pkgname,
provides=apkindex_block.provides,
version=apkindex_block.version,
)
@staticmethod
def from_pmaport(pmaport: dict[str, Any]) -> "PackageMetadata":
pmaport_arches = pmaport["arch"]
pmaport_depends = pmb.build._package.get_depends(get_context(), pmaport)
pmaport_pkgname = pmaport["pkgname"]
pmaport_provides = pmaport["provides"]
pmaport_version = pmaport["pkgver"] + "-r" + pmaport["pkgrel"]
return PackageMetadata(
arch=pmaport_arches,
depends=pmaport_depends or [],
pkgname=pmaport_pkgname,
provides=pmaport_provides,
version=pmaport_version,
)