From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Daniel P. Berrangé" <berrange@redhat.com>
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: Wed, 20 Nov 2024 14:05:42 -0800 [thread overview]
Message-ID: <61871cc5-ebd5-483c-8971-1154551a2d9e@linaro.org> (raw)
In-Reply-To: <ZzxakHNsVA9cKIyA@redhat.com>
On 11/19/24 01:29, Daniel P. Berrangé wrote:
> 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.
>
My idea was to keep this whole together instead of scattering those
"basic" use cases across all the documentation, which makes them hard to
find by design.
> 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.
>
I will leave that page out of this series, if you feel it's not a good
approach for now.
In case we revisit the idea later, I think the how-to section should
*not* become a huge wiki page, where all the niche use cases we imagine
are documented, but simply a way for new developers to do the basic
operations (build/execute/test/contribute) they need. That's the
compromise I tried to create here, based on my personal experience as a
new developer on QEMU.
> With regards,
> Daniel
prev parent reply other threads:[~2024-11-20 22:06 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é
2024-11-20 22:05 ` Pierrick Bouvier [this message]
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=61871cc5-ebd5-483c-8971-1154551a2d9e@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=andrew@daynix.com \
--cc=armbru@redhat.com \
--cc=berrange@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=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).