All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] releases: build and run any QEMU release easily!
@ 2026-10-14  0:53 Pierrick Bouvier
  2026-10-14  0:53 ` [PATCH v3 1/3] tests/docker/dockerfiles: add release.docker Pierrick Bouvier
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Pierrick Bouvier @ 2026-10-14  0:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alex Bennée, Pierrick Bouvier, Philippe Mathieu-Daudé,
	mjt, peterx, Fabiano Rosas

This series was inspired by a recent post from Fabiano to provide container
images for migration tests:
https://lore.kernel.org/qemu-devel/24d04a1f-344d-4b90-a307-b582dd9a1128@oss.qualcomm.com/T/#m353f119dc1a24fa437dde8a96d1891629e64303c

The idea to be able to build and run any QEMU (past) release with containers was
in my mind for some time, so I gave it a shot. Finally, it was easier than
expected to obtain a single dockerfile (with a few hacks) that works over all
our releases.

The oldest functional distro we can find nowadays is ubuntu 12.04. Because of
this, the oldest QEMU release we can build is v0.12.0. Previous ones require an
environment we can't get easily today.

Images have the absolute minimal content possible. It's only qemu binaries,
artifacts (roms, keymap, ...), and libraries. There is no shell or any other
tool included. As a result, images have a size from 149MB (v0.12.0) to 1.48GB
(v11.1.2).

This series adds 3 pieces:
- a unique dockerfile to build any QEMU release. User has to provide an explicit
  Ubuntu version when building a given QEMU version.
- A script build_release_container.sh which automatically detects which ubuntu
  version a given release should be buildable on (based on date). It works
  great, and the heuristic works for all our versions.
- a script generate_release_links.sh which creates wrapper scripts automatically
  using prebuilt images (hosted on my dockerhub).

TLDR:
$ ./scripts/build_release_container.sh v1.6.1
$ podman run -it --rm qemu/v1.6.1 qemu-system-arm --version

$ ./script/generate_release_links.sh qemu-time-machine
$ ./qemu-time-machine/v1.6.1/qemu-system-arm --version
QEMU emulator version 1.6.1, Copyright (c) 2003-2008 Fabrice Bellard
$ ./qemu-time-machine/v11.0.0/qemu-system-arm --version
QEMU emulator version 11.0.0 (v11.0.0)
Copyright (c) 2003-2026 Fabrice Bellard and the QEMU Project developers

v3
--

- extend dockerfile to support ubuntu 12.04, and lower older revision we can
  build from v1.6.1 to v0.12.0.

v2
--

- fix generate_release_links.sh: was missing userns option for podman
- dockerfile: cleanup "|| true" and replaced with proper ifs

Pierrick Bouvier (3):
  tests/docker/dockerfiles: add release.docker
  scripts: add build_release_container.sh
  scripts: add generate_release_wrappers.sh

 scripts/build_release_container.sh      | 62 ++++++++++++++++++++
 scripts/generate_release_wrappers.sh    | 71 +++++++++++++++++++++++
 tests/docker/dockerfiles/release.docker | 76 +++++++++++++++++++++++++
 3 files changed, 209 insertions(+)
 create mode 100755 scripts/build_release_container.sh
 create mode 100755 scripts/generate_release_wrappers.sh
 create mode 100644 tests/docker/dockerfiles/release.docker

-- 
2.43.0



^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-10-27 23:28 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-14  0:53 [PATCH v3 0/3] releases: build and run any QEMU release easily! Pierrick Bouvier
2026-10-14  0:53 ` [PATCH v3 1/3] tests/docker/dockerfiles: add release.docker Pierrick Bouvier
2026-10-23 16:06   ` Fabiano Rosas
2026-10-24  0:28     ` Pierrick Bouvier
2026-10-26 14:31       ` Fabiano Rosas
2026-10-26 15:57         ` Pierrick Bouvier
2026-10-14  0:53 ` [PATCH v3 2/3] scripts: add build_release_container.sh Pierrick Bouvier
2026-10-14  0:53 ` [PATCH v3 3/3] scripts: add generate_release_wrappers.sh Pierrick Bouvier
2026-10-23 15:33 ` [PATCH v3 0/3] releases: build and run any QEMU release easily! Fabiano Rosas
2026-10-24  1:48   ` Pierrick Bouvier
2026-10-26 16:32     ` Fabiano Rosas
2026-10-26 18:08       ` Pierrick Bouvier
2026-10-27 15:36         ` Fabiano Rosas
2026-10-27 18:06           ` Pierrick Bouvier
2026-10-27 22:54             ` Fabiano Rosas
2026-10-27 23:27               ` Pierrick Bouvier
2026-10-26 21:09 ` Pierrick Bouvier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.