rpm: make local repodata deterministic (fixes #117) #118

Merged
benvin merged 1 commits from benvin/rpm-repodata-deterministic into master 2026-08-12 23:14:52 +10:00

1 Commits

Author SHA1 Message Date
unkin-agent d4dfc4421a rpm: make local repodata deterministic
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
repomd.xml regenerates per request and advertised a primary.xml.gz sha256
that drifted every second (time.Now() embedded in the gzipped primary.xml),
so dnf failed the checksum on the content-addressed <sha256>-primary.xml.gz.

Fixes #117.

- Derive <time file=> from the persisted rpm_metadata.created_at instead of
  time.Now(); unset timestamps collapse to a fixed 0.
- Derive repomd <revision>/<timestamp> from the newest package upload time so
  repomd.xml is byte-identical across replicas and requests.
- Add a total-order file_path tiebreak to the metadata ORDER BY.
- Pin the gzip header so compressed bytes depend only on the payload.
2026-08-12 22:49:04 +10:00