[+] add csize to package_t and compile_entry_t, emit --size= in compiled output

1. add csize field to package_t (general model) for compressed download size;
  2. add csize field to compile_entry_t;
  3. compile.py passes pkg.csize into compile entry;
  4. to_txt() emits --size=BYTES after --hash= when csize > 0;
  5. download parser extracts --size= into download_entry_t.csize;
  6. progress uses csize for byte-based ETA when all entries have sizes;
This commit is contained in:
LLM 2026-04-13 09:00:00 +00:00
parent b7f7d3d291
commit 96ab3c23e5
2 changed files with 5 additions and 0 deletions

@ -167,6 +167,7 @@ def main(args: list[str]) -> int:
repo=pkg.repo, repo=pkg.repo,
url=url, url=url,
sha256=pkg.sha256sum if compile_options.generate_hashes else '', sha256=pkg.sha256sum if compile_options.generate_hashes else '',
csize=pkg.csize,
pinned=is_pinned, pinned=is_pinned,
depends=pkg.depends, depends=pkg.depends,
) )

@ -176,6 +176,7 @@ class package_t:
filename: str = '' filename: str = ''
repo: str = '' repo: str = ''
sha256sum: str = '' sha256sum: str = ''
csize: int = 0
depends: list[package_constraint_t] = dataclasses.field(default_factory=list) depends: list[package_constraint_t] = dataclasses.field(default_factory=list)
provides: list[package_constraint_t] = dataclasses.field(default_factory=list) provides: list[package_constraint_t] = dataclasses.field(default_factory=list)
conflicts: list[package_constraint_t] = dataclasses.field(default_factory=list) conflicts: list[package_constraint_t] = dataclasses.field(default_factory=list)
@ -242,6 +243,7 @@ class compile_entry_t:
repo: str repo: str
url: str url: str
sha256: str = '' sha256: str = ''
csize: int = 0
pinned: bool = False pinned: bool = False
depends: list[package_constraint_t] = dataclasses.field( depends: list[package_constraint_t] = dataclasses.field(
default_factory=list default_factory=list
@ -262,6 +264,8 @@ class compile_result_t:
line = '%s==%s' % (e.name, e.version) line = '%s==%s' % (e.name, e.version)
if e.sha256: if e.sha256:
line += ' --hash=sha256:%s' % e.sha256 line += ' --hash=sha256:%s' % e.sha256
if e.csize > 0:
line += ' --size=%d' % e.csize
if e.pinned: if e.pinned:
line += ' # pinned' line += ' # pinned'
comment = '# %s' % e.url if e.url else '# %s/%s' % (e.repo, e.filename) comment = '# %s' % e.url if e.url else '# %s/%s' % (e.repo, e.filename)