deb/apk: make local repodata deterministic #119
Reference in New Issue
Block a user
Delete Branch "benvin/deb-apk-repodata-deterministic"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #117. Local generated repodata must be byte-identical across the two no-affinity replicas and across every regeneration, so apt/apk never hit a checksum mismatch between an index's advertised hash and the bytes actually served. This does the deb+apk half (the rpm half landed in #118).
How:
ReleaseDate:from the newest persistedcreated_at(RFC1123Z, UTC) instead oftime.Now(); carrycreated_atthrough the deb metadata SELECT andDebMetadata. An empty repo falls back to the Unix epoch. This also stopsDate:running ahead of wall clock.APKINDEXtar headerModTimeto the Unix epoch instead of the zero-valuetime.Time, so it is never wall-clock derived.file_pathtiebreak (name/version/arch is not unique).Releasechecksum/size matches the servedPackages/Packages.gzbytes (the exact apt invariant);Date:pinned tocreated_at; apk index byte-identical and tarModTimepinned to epoch.