qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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


      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).