On 7/29/25 13:08, Daniel P. Berrangé wrote:
> On Tue, Jul 29, 2025 at 01:02:18PM +0200, Peter Krempa via Devel wrote:
>> On Tue, Jul 29, 2025 at 10:42:09 +0200, Michal Prívozník via Devel wrote:
>>> On 7/24/25 15:49, James Le Cuirot wrote:
>>>> From: James Le Cuirot <jlecui...@microsoft.com>
>>>>
>>>> Distros may provide compatibility symlinks after moving firmware files
>>>> around, but they won't work for existing VMs when doing a straight
>>>> string comparison.
>>>>
>>>> virFileComparePaths has been used to do this, but it was previously
>>>> only resolving the last path component, despite what the description
>>>> says.
>>>>
>>>> James Le Cuirot (2):
>>>>   util: Fully resolve paths with virFileComparePaths
>>>>   qemu: Match firmware with fully resolved and canonicalized paths
>>>>
>>>>  src/qemu/qemu_firmware.c | 11 ++++++-----
>>>>  src/util/virfile.c       |  4 ++--
>>>>  2 files changed, 8 insertions(+), 7 deletions(-)
>>>>
>>>> --
>>>> 2.49.0
>>>>
>>>
>>> Reviewed-by: Michal Privoznik <mpriv...@redhat.com>
>>>
>>> and merged. Congratulations on your first libvirt contribution!
>>
>> Note that this patch made the tests depend on host. While the pipelines
>> did pass the local build on Fedora caused differences in test output
>> which I attempted to fix, but ultimately that broke the pipelines in
>> turn.
> 
> More details is that qemuxmlconftest.c has installed mock content
> for /usr/share/edk2:
> 
>   tests/qemuxmlconftest.c:    virFileWrapperAddPrefix("/sys/devices/system",
>   tests/qemuxmlconftest.c:    virFileWrapperAddPrefix(SYSCONFDIR 
> "/qemu/firmware",
>   tests/qemuxmlconftest.c:    virFileWrapperAddPrefix(PREFIX 
> "/share/qemu/firmware",
>   tests/qemuxmlconftest.c:    
> virFileWrapperAddPrefix("/home/user/.config/qemu/firmware",
>   tests/qemuxmlconftest.c:    virFileWrapperAddPrefix(SYSCONFDIR 
> "/qemu/vhost-user",
>   tests/qemuxmlconftest.c:    virFileWrapperAddPrefix(PREFIX 
> "/share/qemu/vhost-user",
>   tests/qemuxmlconftest.c:    
> virFileWrapperAddPrefix("/home/user/.config/qemu/vhost-user",
>   tests/qemuxmlconftest.c:    
> virFileWrapperAddPrefix("/usr/libexec/qemu/vhost-user",
>   tests/qemuxmlconftest.c:    
> virFileWrapperAddPrefix("/usr/libexec/virtiofsd",
> 
> 
> Somewhere the new file canonicalization, however, it bypassing the
> rewritten paths, and working off the real /usr/share/edk2 that
> contains symlinks, which get rewritten. Thus we can the non-determinstic
> build failures depending on the build environment/OS.

But our vifilewrapper.c doesn't mock realpath() nor
virFileCanonicalizePath(). And even if it did we don't store those files
in our tree, so there's nowhere for us to redirect
realpah()/virFileCanonicalizePath() to. I'll try to come up with a fix.

But given how close we are to the release, let me revert these for the
time being and repost them with proper test suite fixes for merge after
the release.

Michal

Reply via email to