Welcome to PR service which you need to run and use during yocto builds:

https://wiki.yoctoproject.org/wiki/PR_Service

Alex

On Wed, 28 Feb 2024 at 12:56, <patrick.huesm...@desy.de> wrote:
>
> Hi,
>
> I noticed a strange behavior of dnf not updating a package from the package 
> feed, and when I told it to explicitly install that newest package version it 
> went "Downgrading: ...." as if the newest version were a older one.
>
> The "competing" packages were:
> foo-bar-1.0.0+git0+93a939c4-r0.24
> foo-bar-1.0.0+git0+f95bf929-r0.26
>
> So we have a system where foo-bar-1.0.0+git0+93a939c4-r0.24 is installed, and 
> a package feed which offers foo-bar-1.0.0+git0+f95bf929-r0.26,
> dnf is convinced that f95bf929-r0.26 is older than 93a939c4-r0.24 - which is 
> not as expected, IMHO.
>
> BitBake has the "Package version for package XYZ went backwards which would 
> break package feeds" error message, but it wouldn't even trigger in this 
> case, since after a lexical comparison, f95bf929 is "higher" than 93a939c4. 
> But turns out that libsolv implements a whole different algorithm for 
> comparing version strings [1] which splits them into 'tokens' of either only 
> numerical or only alpha characters, and compares the length of each. In above 
> example it arrives at the commit hash after everything preceding it is equal, 
> then it processes "93" for the 93a939c4 (delimited by "a") and "" for 
> f95bf929 (delimited by "f"). Comparing "93" and "" the former is 2 characters 
> longer, so the 93a939c4 version is considered more recent.
>
> I think this behavior is counter-intuitive and there are lots of upstream 
> recipes that append "git0+<hash>" to their PV; is the general consensus that 
> you *must never* change the Git revision of such a package without 
> incrementing the PV preceding the "git0" part? (Incrementing the PR doesn't 
> help here, since dnf/libsolv never considers the PR if a PV is found to be 
> newer).
>
> I patched libsolv on our systems now to ignore everything following a "git0" 
> in a PV, since we absolutely need to be able to update packages between 
> version bumps.
>
> Would be interested to learn if this behavior of dnf/libsolv is already known 
> and what is the commonly accepted "best practice" dealing with it.
>
> Thanks,
> Patrick
>
> [1]: 
> https://github.com/openSUSE/libsolv/blob/7b0788fb7ee937b7d38829bcec47760e42779a66/src/evr.c#L74-L155
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#62630): https://lists.yoctoproject.org/g/yocto/message/62630
Mute This Topic: https://lists.yoctoproject.org/mt/104621339/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to