On Tue, 5 May 2020 at 11:35, clime <cl...@fedoraproject.org> wrote:
>
> Hey Florian,
>
> On Mon, 4 May 2020 at 10:03, Florian Weimer <fwei...@redhat.com> wrote:
> >
> > > as part of https://hackmd.io/kIje9yXTRdWITwP7cFK2pA (annotated tags
> > > pushed by package maintainers) effort, I revisited the sorting
> > > algorithm that is used to determine the "latest" tag for a given
> > > package which is needed to determine correct package version.
> > > Basically, if the current commit is tagged, then the N-V-R information
> > > from that tag name is directly used to render version or release
> > > (depending on macro usage). If the latest tag is on some older commit,
> > > we still use information from it but the version (or release) string
> > > will contain some appendices like .git.4.abcdef12 to mark a commit
> > > offset from that latest tag. Note that only tags accessible from the
> > > current branch tip when traversing git history backward are considered
> > > to pick the latest one (i.e. tags on other separate branches are not
> > > considered).
> >
> > Is this really necessary?  Koji goes by latest tagged build, it does not
> > sort by NVR when constructing the buildroot.  The same thing seems to
> > apply to composes (but I am less sure about that).
>
> is it certain? I tried to poke around koji/kojira code, kojí IRC, and also 
> logs at: https://koji.fedoraproject.org/koji/tasks which are very slow for 
> owner:kojira, state:all but I couldn't really determine so far whether only 
> the latest build of a package gets to "build" repository (that is used for 
> builds subsequently) for a given tag.
>
> My (maybe wrong) understanding would be that all packages tagged into a 
> certain tag (let's say f33) are included in the resulting "build" repository. 
> Afterwards, dnf is used to create the actual buildroot for the package being 
> built and dnf does (E-)N-V-R sort so it filters out any older package 
> versions.
>
> If you build a package with an older version than what was there for previous 
> build, does that older version overrides the newer one? I would need to poke 
> more to find out. But it would be very interesting to know.
>
> >
> > So I don't see why you would need any sort of NVR sorting.  Basically,
> > you can go back through the history and use the first tag you encounter
> > as the baseline.
>
> Tags also need to be sorted to render changelog records from their bodies in 
> the correct order.
>
> What you suggest is the topological sort but it does not resolve the case 
> when multiple tags are attached to the same commit. I would like to have the 
> ordering defined for this scenario as well just in case.
>
> >
> > However, I think this whole approach is a bit fishy.  Tags should be
> > pushed by Koji once a build completes, so that it is easy to identify
> > matching sources reliably, not by the packager.
>
> Well, it's true that with this approach you could make sure that the tags for 
> the built packages are present after each build.
>
> That gives you a quick way to jump to a specific source code point based on a 
> package name.
>
> With my suggested approach, pushing the tags would be an optional thing so it 
> would only work for packages which do that.
>
> On the other hand, the build-induced tags are simply marks. They can't be 
> used as a primary source for either changelog or release information. They do 
> not need to be annotated, just simple tags. They can live a separate 
> namespace which is what rpmautospec gentlemanly does at the moment.
>
> > Tags can also be added
> > retroactively and backdated.  These things conflict with the advantages
> > you list (in particular, with NVR auto-generation, git is not the sole
> > source of truth).
>
> If the tag ordering function is done properly, I believe even retroactive 
> tagging (i.e. tagging into past) and/or tag backdating would be supported and 
> NVR auto-generation would work correctly. So I don't think it needs to 
> conflict. But can you perhaps expand more on "Tags can also be added 
> retroactively and backdated", please? I.e. why/when would one do that.
>
> Today, git is the sole source of truth for NVR information and changelog with 
> the exception of %{dist}, which in most cases is pretty much equivalent to 
> dist-git branch name. So, the annotated-tags proposal is such that it keeps 
> git the source of truth for NVR and changelog but to avoid conflicts between 
> branches and to allow for making those information dynamic, it moves that 
> information from spec files out to git metadata.
>
> Thank you
> clime
>
> >
> > Thanks,
> > Florian

If you have any more comments or objections, please tell. I don't know
if I got the tone in my previous email completely right. Thanks clime.
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
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@lists.fedoraproject.org

Reply via email to