Nicolas Mailhot via devel wrote: > So if you want to push Fedora release logic to its ultimate conclusion, > the thing that should be in charge of committing the new > release/changelog build state to package history in git is bodhi, not > koji. Why do build events need to be recorded in the Git history in the first place? A version control system is supposed to track changes to the source code. A rebuild that doesn't change any sources, patches, scriptlets or metadata shouldn't need to change anything in Git. As far as I can tell, this happens only because Koji refuses to build a NEVR that has been built before, so a rebuild requires a new release number, which requires an RPM changelog entry, and both of those are defined in the spec, which is stored in Git. So why is NEVR required to change when nothing in the package source has changed? Apparently because *other* packages are likely to have changed: new versions of libraries, compiler et cetera causing differences in the generated code. That's the usual reason for rebuilds after all. But if one takes a source package and rebuilds it locally, then one won't have the same version of every other package, so one gets another binary package with the same NEVR but probably different binary code. It seems that several problems would just disappear if a rebuild would generate a unique package ID without a Git commit. Instead of a lot of complex tooling to automate release and changelog bumping, I would like to see the need for release and changelog bumping go away. Here's an idea: We could mandate that Release must expand a macro called buildtag. This macro would have a new value every time, monotonically increasing. A timestamp seems easiest, but that should be an implementation detail that could be changed without breaking things. The macro could be defined like this for example: %buildtag .%(date +%%s) It would be used in each spec like this: Release: 1%{?dist}%{?buildtag} Putting the buildtag after the disttag makes it possible to change how the buildtag is generated in a future Fedora release without breaking upgrade paths. (The build time is already stored in packages, and could theoretically be used to tell builds apart, but that would require changes to lots of tools I guess.) Mass rebuilds would no longer make any Git commits. They would just take the latest version and submit it for building. The release number would remain as a downstream version number. Packagers would update the release number when they make actual changes to the package. When one wants a specific version of a package, one would look at the version and release numbers, ignoring the buildtag. The buildtag would distinguish between different builds of the same version-release. What flaws can you all find in this idea? Björn Persson
Attachment:
pgpmFQ6FRYd06.pgp
Description: OpenPGP digital signatur
_______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx