From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Cc: qemu-devel@nongnu.org,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Andrew Melnychenko" <andrew@daynix.com>,
"Jason Wang" <jasowang@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
alex.bennee@linaro.org,
"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>,
"Fabiano Rosas" <farosas@suse.de>,
"Kevin Wolf" <kwolf@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Eric Blake" <eblake@redhat.com>,
qemu-arm@nongnu.org,
"Yuri Benditovich" <yuri.benditovich@daynix.com>,
manos.pitsidianakis@linaro.org, qemu-block@nongnu.org,
"Michael Roth" <michael.roth@amd.com>,
"Konstantin Kostiuk" <kkostiuk@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Peter Xu" <peterx@redhat.com>,
gustavo.romero@linaro.org,
"Peter Maydell" <peter.maydell@linaro.org>
Subject: Re: [PATCH 7/7] docs: add a how to section
Date: Tue, 19 Nov 2024 09:29:52 +0000 [thread overview]
Message-ID: <ZzxakHNsVA9cKIyA@redhat.com> (raw)
In-Reply-To: <20241118172357.475281-8-pierrick.bouvier@linaro.org>
On Mon, Nov 18, 2024 at 09:23:57AM -0800, Pierrick Bouvier wrote:
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
> docs/devel/build-system.rst | 2 +
> docs/how-to/index.rst | 146 ++++++++++++++++++++++++++++++++++++
> docs/index.rst | 1 +
> 3 files changed, 149 insertions(+)
> create mode 100644 docs/how-to/index.rst
>
> diff --git a/docs/devel/build-system.rst b/docs/devel/build-system.rst
> index d42045a2325..db444787e37 100644
> --- a/docs/devel/build-system.rst
> +++ b/docs/devel/build-system.rst
> @@ -1,3 +1,5 @@
> +.. _build:
> +
> ==================================
> The QEMU build system architecture
> ==================================
> diff --git a/docs/how-to/index.rst b/docs/how-to/index.rst
> new file mode 100644
> index 00000000000..3a9d4d777df
> --- /dev/null
> +++ b/docs/how-to/index.rst
> @@ -0,0 +1,146 @@
> +.. _how-to:
> +
> +------
> +How to
> +------
> +
> +This section of the manual will give you some commands to do various tasks with
> +QEMU. It does not intend to be complete, but to be simple.
> +
> +Build
> +-----
> +
> +First you need setup your `build environment <setup-build-env>`.
> +
> +Then, you can build QEMU using:
> +
> +::
> +
> + git clone https://gitlab.com/qemu-project/qemu
> + cd qemu
> + ./configure
> + ninja -C build
> + # all binaries are in ./build
> +
> +By default, QEMU build is optimized. You may want to switch to debug builds
> +instead (non optimized, and with more runtime checks enabled):
> +
> +::
> +
> + ./configure --enable-debug
> +
> +It's recommended to use sanitizers to catch issues when developing your change.
> +
> +::
> +
> + ./configure --enable-asan --enable-ubsan
> + # Of course, you can combine debug and sanitizers if needed
> +
> +You can find more information on `build page <build>`.
> +
> +Test
> +----
> +
> +QEMU has a lot of tests, mainly in 4 categories:
> +
> +::
> +
> + # run tests related to TCG. They are based on Makefiles.
> + make check-tcg
> + # run system tests, running a full VM, with avocado framework
> + make check-avocado
> + # run functional tests, running a full VM, integrated with Meson
> + make check-functional
> + # run all other tests, integrated with Meson
> + make check
> +
> +You can find more information on `testing page<testing>`.
> +
> +Use QEMU
> +--------
> +
> +To create a 20 gigabytes disk image usable with qemu-system:
> +
> +::
> +
> + qemu-img create system.img 20g
> +
> +To run an x86_64 system emulated, with 4 cpus, 8G of memory and an install iso:
> +
> +::
> +
> + qemu-system-x86_64 -smp 4 -m 8G system.img -cdrom install.iso
> +
> +To boot directly a Linux Kernel:
> +
> +::
> +
> + qemu-system-x86_64 -kernel bzImage -hda system.img -append "root=/dev/hda"
> +
> +To boot an aarch64 system emulated, you need to specify a UEFI and associated
> +pflash. Once started, you can switch to Serial output by clicking on View ->
> +Serial0.
> +
> +::
> +
> + # UEFI can be obtained from debian package qemu-efi-aarch64.
> + # First, we need to copy a file to save UEFI variables:
> + # cp /usr/share/AAVMF/AAVMF_VARS.fd .
> + qemu-system-aarch64 \
> + -m 8G \
> + -smp 4 \
> + -M virt \
> + -cpu max \
> + -device virtio-blk-pci,drive=root \
> + -drive if=none,id=root,file=system.img \
> + -drive if=pflash,readonly=on,file=/usr/share/AAVMF/AAVMF_CODE.fd \
> + -drive if=pflash,file=AAVMF_VARS.fd \
> + -cdrom install.iso
> +
> +To run git using QEMU user-mode:
> +
> +::
> +
> + qemu-x86_64 /usr/bin/git --version
> +
> +Contribute
> +----------
> +
> +We recommend using `git-publish <https://github.com/stefanha/git-publish>`_ for
> +contributing. You need to configure `git send-email
> +<https://git-send-email.io/>`_ first.
> +
> +::
> +
> + git checkout -b my_feature
> + ... # edit, build, test
> + # When ready to send the series...
> +
> + # Add upstream QEMU repo as a remote.
> + git remote add upstream https://gitlab.com/qemu-project/qemu
> + # Fetch all new content.
> + git fetch -a upstream
> +
> + # Rebase your branch on top of upstream master, and include a signoff.
> + git rebase -i upstream/master --signoff
> + # Check your patches are correct.
> + ./scripts/checkpatch.pl $(git merge-base upstream/master HEAD)..HEAD
> +
> + # Send your series, you'll be given a chance to edit cover letter for it.
> + git-publish
> +
> + # After review, and other changes, you can send a v2 simply by using:
> + git-publish
> +
> +If you need to apply locally an existing series, you can use `b4
> +<https://github.com/mricon/b4>`_ (installable via pip) to retrieve it:
> +
> +::
> +
> + b4 shazam <series_msg_id>
> + # message id is an identifier present in email sent.
> + # when using patchwork, it is the last part of a series url (2024...):
> + # https://patchew.org/QEMU/20241118021820.4928-1-joel@jms.id.au/
> +
> +More complete information is available on our `Submit a patch page
> +<submitting-a-patch>`.
I'm far from convinced any of the above content is a good idea, given
it is duplicating stuff we've already got elsewhere in our manual.
This gives us the extra burden of ensuring different parts of the
manual are consistent in what they're recommending which is something
we are historically bad at doing.
I think there is scope for having a "how-tos" section, but this particular
choices of examples are not the best place to kick it off with IMHO. Also,
for the sake of scalability, I'd suggest that each "how to" is a standalone
file in the how-tos/ sub-directory, otherwise the index.rst will quickly
become enourmous.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2024-11-19 9:30 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-18 17:23 [PATCH 0/7] Enhance documentation for new developers Pierrick Bouvier
2024-11-18 17:23 ` [PATCH 1/7] docs/devel: remove dead video link for sourcehut submit process Pierrick Bouvier
2024-11-19 8:25 ` Thomas Huth
2024-11-18 17:23 ` [PATCH 2/7] docs/devel: add git-publish for patch submitting Pierrick Bouvier
2024-11-19 8:41 ` Marcin Juszkiewicz
2024-11-19 9:12 ` Daniel P. Berrangé
2024-11-20 6:29 ` Pierrick Bouvier
2024-11-20 6:25 ` Pierrick Bouvier
2024-11-20 9:51 ` Alex Bennée
2024-11-20 10:01 ` Daniel P. Berrangé
2024-11-19 9:04 ` Daniel P. Berrangé
2024-11-20 21:45 ` Pierrick Bouvier
2024-11-18 17:23 ` [PATCH 3/7] docs/devel: add b4 for patch retrieval Pierrick Bouvier
2024-11-19 9:14 ` Daniel P. Berrangé
2024-11-19 9:56 ` Marcin Juszkiewicz
2024-11-19 10:07 ` Daniel P. Berrangé
2024-11-19 10:40 ` Marcin Juszkiewicz
2024-11-18 17:23 ` [PATCH 4/7] docs/devel: add information on how to setup build environments Pierrick Bouvier
2024-11-19 9:24 ` Daniel P. Berrangé
2024-11-19 11:08 ` Alex Bennée
2024-11-19 11:16 ` Daniel P. Berrangé
2024-11-20 21:58 ` Pierrick Bouvier
2024-11-18 17:23 ` [PATCH 5/7] docs: add a codebase section Pierrick Bouvier
2024-12-03 15:53 ` Peter Maydell
2024-12-03 17:22 ` Alex Bennée
2024-12-03 17:46 ` Peter Maydell
2024-12-03 19:35 ` Pierrick Bouvier
2024-12-04 8:58 ` Daniel P. Berrangé
2024-12-03 21:02 ` Pierrick Bouvier
2024-11-18 17:23 ` [PATCH 6/7] docs: add a glossary Pierrick Bouvier
2024-12-03 17:37 ` Peter Maydell
2024-12-03 18:10 ` Alex Bennée
2024-12-03 19:37 ` Pierrick Bouvier
2024-12-03 20:32 ` Pierrick Bouvier
2024-12-05 15:23 ` Peter Maydell
2024-12-05 19:21 ` Pierrick Bouvier
2024-11-18 17:23 ` [PATCH 7/7] docs: add a how to section Pierrick Bouvier
2024-11-19 9:29 ` Daniel P. Berrangé [this message]
2024-11-20 22:05 ` Pierrick Bouvier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZzxakHNsVA9cKIyA@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=andrew@daynix.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=farosas@suse.de \
--cc=gustavo.romero@linaro.org \
--cc=jasowang@redhat.com \
--cc=kkostiuk@redhat.com \
--cc=kwolf@redhat.com \
--cc=manos.pitsidianakis@linaro.org \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
--cc=vsementsov@yandex-team.ru \
--cc=yuri.benditovich@daynix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).