Daniel P. Berrangé <[email protected]> writes:

> On Wed, Oct 14, 2026 at 02:56:46PM -0300, Fabiano Rosas wrote:
>> Daniel P. Berrangé <[email protected]> writes:
>> 
>> > On Mon, Sep 14, 2026 at 08:58:09PM -0300, Fabiano Rosas wrote:
>> >> Hi, I just wanted to share and ask for feedback on some container images
>> >> I've been building as part of my testing of migration pull-requests.
>> >> 
>> >> From a Dockerfile from ./tests/docker/dockerfiles/ I'm producing the
>> >> following:
>> >> 
>> >> $ docker images
>> >> qemu-build-base:11.0.0                        b6efa198e93a        5.8GB
>> >> qemu-rootfs-base:11.0.0                       72bcb5418f4d       4.08GB
>> >> qemu:11.0.0                                   018a3f0f4dcc          2GB
>> >
>> > snip
>> >
>> >> 2) Neither the QEMU build nor the distro repos are reliable enough to
>> >> allow me to just "go back in time" and rebuild at any moment, I need to
>> >> keep the artifacts cached to avoid rebuilding. Otherwise it comes time
>> >> to send a PR and I discover that some python piece has changed or the
>> >> distro messed up the older repository.
>> >
>> > Yes, in general building old QEMU on new distros periodically
>> > hits trouble.  If building old QEMU, better reliability is
>> > achieved by using a distro release that was from the same
>> > timeframe as QEMU.  Is using containers targetting such old
>> > distro versions not an option ? The tests/docker/dockerfiles
>> > from the old QEMU branch ought to work ?
>> >
>> 
>> Yes, I'm doing just that. Some tweaks are needed still. For instance, my
>> script has something like this:
>> 
>>   dockerfile="tests/docker/dockerfiles/opensuse-leap.docker"
>> 
>>   sed -i 's/ncurses-devel//' $dockerfile
>> 
>>   if [ "$tag" = "10.1.0" ]; then
>>       sed -i 's/libLLVM19//' $dockerfile
>>   fi
>
> If that's needed, shouldn't we patch the QEMU stable branch ? I
> would have thought that would be a problem for doing releases on
> stable if the containers have bugs ?
>

Right, but that's not simply regular development work touching the
dockerfiles and they sitting there just working. I see the overall
benefits of having the dependencies listed in a dockerfile under our
control, but for this particular use-case it's a bit of a pain point.

To be clear, this is not an issue I'm particularly concerned with, we
can fix it in stable or hack away in a script like I did. And issues
like this should be on the rarer side.

I'm more interested in the other part, which is having some infra that
can take whatever base image and produce a container that's standin for
the actual qemu binary. This allows quick switching of QEMU release
versions for testing and debugging and keeps the migration testing
concerns separate.

>> > How far back in time do you need/want to go for migration
>> > testing ?  Is it sufficient to merely target versions for
>> > which mjt is still doing active maint work, so we can
>> > expect the containers to still work.
>> >
>> 
>> I'm currently testing against the previous 3 releases. I think 2
>> releases is probably enough.
>
> I guess if we test   X -> Y and then later test Y -> Z, then
> we have transitively validated X -> Z. So in theory only 1
> historical release is enough, but it makes sense to test one
> or two more variants just in case.
>

Yes, but sometimes we have weird compatibility knobs, I feel more
comfortable with more testing. They're quick tests, it's not too much
work. I usually run migration-test (small set) for every PR with:

x86_64: dev -> X, dev -> X-1, dev -> X-2
        dev <- X, dev <- X-1, dev <- X-2

s390x: dev -> X, dev -> X-1
       dev <- X, dev <- X-1

pcc64le: dev -> X
         dev <- X

But there's also testing in the sense of working with bug reports,
debugging and development in general. So having a few versions available
improves productivity.

> With regards,
> Daniel

Reply via email to