qemu-cr16/docs/devel
Daniel P. Berrangé 2f7350cd43 gitlab: enable ccache for many build jobs
The `ccache` tool can be very effective at reducing compilation times
when re-running pipelines with only minor changes each time. For example
a fresh 'build-system-fedora' job will typically take 20 minutes on the
gitlab.com shared runners. With ccache this is reduced to as little as
6 minutes.

Normally meson would auto-detect existance of ccache in $PATH and use
it automatically, but the way we wrap meson from configure breaks this,
as we're passing in an config file with explicitly set compiler paths.
Thus we need to add $CCACHE_WRAPPERSPATH to the front of $PATH. For
unknown reasons if doing this in msys though, gcc becomes unable to
invoke 'cc1' when run from meson. For msys we thus set CC='ccache gcc'
before invoking 'configure' instead.

A second problem with msys is that cache misses are incredibly
expensive, so enabling ccache massively slows down the build when
the cache isn't well populated. This is suspected to be a result of
the cost of spawning processes under the msys architecture. To deal
with this we set CCACHE_DEPEND=1 which enables ccache's 'depend_only'
strategy. This avoids extra spawning of the pre-processor during
cache misses, with the downside that is it less likely ccache will
find a cache hit after semantically benign compiler flag changes.
This is the lesser of two evils, as otherwise we can't use ccache
at all under msys and remain inside the job time limit.

If people are finding ccache to hurt their pipelines, it can be
disabled by setting the 'CCACHE_DISABLE=1' env variable against
their gitlab fork CI settings.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230804111054.281802-2-berrange@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230829161528.2707696-2-alex.bennee@linaro.org>
2023-08-30 14:57:33 +01:00
..
acpi-bits.rst Revert "tests: Use separate virtual environment for avocado" 2023-08-28 09:55:48 +02:00
atomics.rst atomics: eliminate mb_read/mb_set 2023-06-06 09:42:14 +02:00
bitops.rst
blkdebug.txt
blkverify.txt
block-coroutine-wrapper.rst block-coroutine-wrapper.py: introduce co_wrapper 2022-12-15 16:07:43 +01:00
build-system.rst meson: Replace softmmu_ss -> system_ss 2023-06-20 10:01:30 +02:00
ci-definitions.rst.inc
ci-jobs.rst.inc gitlab: enable ccache for many build jobs 2023-08-30 14:57:33 +01:00
ci-runners.rst.inc
ci.rst docs/devel: clean-up the CI links in the docs 2022-06-01 18:55:04 +01:00
clocks.rst
code-of-conduct.rst docs/devel: add a maintainers section to development process 2022-11-22 09:49:07 +00:00
conflict-resolution.rst
control-flow-integrity.rst
decodetree.rst docs: Document decodetree named field syntax 2023-05-30 10:55:39 -07:00
ebpf_rss.rst
fuzzing.rst docs/fuzz: remove mentions of fork-based fuzzing 2023-02-16 23:02:46 -05:00
index-api.rst docs/devel: split qom-api reference into new file 2023-07-03 12:52:22 +01:00
index-build.rst acpi/tests/avocado/bits/doc: add a doc file to describe the acpi bits test 2022-11-02 06:56:32 -04:00
index-internals.rst docs/devel: start documenting writing VirtIO devices 2022-05-16 04:38:40 -04:00
index-process.rst docs/devel: add some front matter to the devel index 2023-07-03 12:52:08 +01:00
index-tcg.rst docs/devel: add some front matter to the devel index 2023-07-03 12:52:08 +01:00
index.rst docs/devel: add some front matter to the devel index 2023-07-03 12:52:08 +01:00
kconfig.rst docs: clarify --without-default-devices 2023-05-08 19:04:52 +02:00
loads-stores.rst bswap: Add the ability to store to an unaligned 24 bit field 2023-06-22 18:55:14 -04:00
lockcnt.txt
maintainers.rst docs/devel: add a maintainers section to development process 2022-11-22 09:49:07 +00:00
memory.rst
migration.rst docs/migration: Update postcopy bits 2023-07-26 10:55:56 +02:00
modules.rst
multi-process.rst
multi-thread-tcg.rst
multiple-iothreads.txt async: Add an optional reentrancy guard to the BH API 2023-04-28 11:31:07 +02:00
qapi-code-gen.rst docs/interop: Convert qmp-spec.txt to rST 2023-05-22 10:21:01 +02:00
qdev-api.rst docs/devel: split qom-api reference into new file 2023-07-03 12:52:22 +01:00
qgraph.rst
qom-api.rst docs/devel: split qom-api reference into new file 2023-07-03 12:52:22 +01:00
qom.rst misc: Fix some typos in documentation and comments 2023-08-01 23:52:23 +02:00
qtest.rst
rcu.txt
replay.rst docs: move replay docs to docs/system/replay.rst 2022-06-06 09:26:54 +02:00
reset.rst hw/core/resettable: fix reset level counting 2022-10-27 10:27:23 +01:00
s390-dasd-ipl.rst
secure-coding-practices.rst
stable-process.rst
style.rst docs/devel: Fix coding style in style.rst 2023-07-10 15:34:57 +02:00
submitting-a-patch.rst docs/devel: try and improve the language around patch review 2022-11-22 09:52:23 +00:00
submitting-a-pull-request.rst docs/devel: add a maintainers section to development process 2022-11-22 09:49:07 +00:00
tcg-icount.rst
tcg-ops.rst docs/devel/tcg-ops: fix missing newlines in "Host vector operations" 2023-08-24 11:22:42 -07:00
tcg-plugins.rst docs: add a new section to outline emulation support 2023-02-02 10:44:23 +00:00
tcg.rst docs/devel: add some front matter to the devel index 2023-07-03 12:52:08 +01:00
testing.rst Revert "tests: Use separate virtual environment for avocado" 2023-08-28 09:55:48 +02:00
tracing.rst
trivial-patches.rst
ui.rst
vfio-migration.rst vfio/migration: Add support for switchover ack capability 2023-06-30 06:02:51 +02:00
virtio-backends.rst docs/devel: start documenting writing VirtIO devices 2022-05-16 04:38:40 -04:00
virtio-migration.txt
writing-monitor-commands.rst qapi: Start to elide redundant has_FOO in generated C 2022-12-13 18:31:37 +01:00
zoned-storage.rst docs/zoned-storage:add zoned emulation use case 2023-05-15 08:19:04 -04:00