2021-05-19 21:55:01 +03:00
|
|
|
.native_build_job_template:
|
2022-05-27 18:36:01 +03:00
|
|
|
extends: .base_job_template
|
2021-05-19 21:55:01 +03:00
|
|
|
stage: build
|
|
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
|
|
|
before_script:
|
|
|
|
- JOBS=$(expr $(nproc) + 1)
|
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
2023-02-07 23:14:47 +03:00
|
|
|
- ../configure --enable-werror --disable-docs --enable-fdt=system
|
configure: use 'mkvenv ensure meson' to bootstrap meson
This commit changes how we detect and install meson. It notably removes
'--meson='.
Currently, configure creates a lightweight Python virtual environment
unconditionally using the user's configured $python that inherits system
packages. Temporarily, we forced the use of meson source present via git
submodule or in the release tarball.
With this patch, we restore the ability to use a system-provided meson:
If Meson is installed in the build venv and meets our minimum version
requirements, we will use that Meson. This includes a system provided
meson, which would be visible via system-site packages inside the venv.
In the event that Meson is installed but *not for the chosen Python
interpreter*, not found, or of insufficient version, we will attempt to
install Meson from vendored source into the newly created Python virtual
environment. This vendored installation replaces both the git submodule
and tarball source mechanisms for sourcing meson.
As a result of this patch, the Python interpreter we use for both our
own build scripts *and* Meson extensions are always known to be the
exact same Python. As a further benefit, there will also be a symlink
available in the build directory that points to the correct, configured
python and can be used by e.g. manual tests to invoke the correct,
configured Python unambiguously.
Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20230511035435.734312-18-jsnow@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-05-11 06:54:25 +03:00
|
|
|
${TARGETS:+--target-list="$TARGETS"}
|
2023-02-07 23:14:46 +03:00
|
|
|
$CONFIGURE_ARGS ||
|
|
|
|
{ cat config.log meson-logs/meson-log.txt && exit 1; }
|
2021-05-19 21:55:01 +03:00
|
|
|
- if test -n "$LD_JOBS";
|
|
|
|
then
|
configure: use 'mkvenv ensure meson' to bootstrap meson
This commit changes how we detect and install meson. It notably removes
'--meson='.
Currently, configure creates a lightweight Python virtual environment
unconditionally using the user's configured $python that inherits system
packages. Temporarily, we forced the use of meson source present via git
submodule or in the release tarball.
With this patch, we restore the ability to use a system-provided meson:
If Meson is installed in the build venv and meets our minimum version
requirements, we will use that Meson. This includes a system provided
meson, which would be visible via system-site packages inside the venv.
In the event that Meson is installed but *not for the chosen Python
interpreter*, not found, or of insufficient version, we will attempt to
install Meson from vendored source into the newly created Python virtual
environment. This vendored installation replaces both the git submodule
and tarball source mechanisms for sourcing meson.
As a result of this patch, the Python interpreter we use for both our
own build scripts *and* Meson extensions are always known to be the
exact same Python. As a further benefit, there will also be a symlink
available in the build directory that points to the correct, configured
python and can be used by e.g. manual tests to invoke the correct,
configured Python unambiguously.
Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20230511035435.734312-18-jsnow@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-05-11 06:54:25 +03:00
|
|
|
pyvenv/bin/meson configure . -Dbackend_max_links="$LD_JOBS" ;
|
2021-05-19 21:55:01 +03:00
|
|
|
fi || exit 1;
|
|
|
|
- make -j"$JOBS"
|
|
|
|
- if test -n "$MAKE_CHECK_ARGS";
|
|
|
|
then
|
|
|
|
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
|
|
|
fi
|
|
|
|
|
2023-02-28 22:06:51 +03:00
|
|
|
# We jump some hoops in common_test_job_template to avoid
|
|
|
|
# rebuilding all the object files we skip in the artifacts
|
|
|
|
.native_build_artifact_template:
|
|
|
|
artifacts:
|
|
|
|
expire_in: 2 days
|
|
|
|
paths:
|
|
|
|
- build
|
|
|
|
- .git-submodule-status
|
|
|
|
exclude:
|
|
|
|
- build/**/*.p
|
|
|
|
- build/**/*.a.p
|
|
|
|
- build/**/*.fa.p
|
|
|
|
- build/**/*.c.o
|
|
|
|
- build/**/*.c.o.d
|
|
|
|
- build/**/*.fa
|
|
|
|
|
2022-05-09 15:41:34 +03:00
|
|
|
.common_test_job_template:
|
2022-05-27 18:36:01 +03:00
|
|
|
extends: .base_job_template
|
2021-05-19 21:55:01 +03:00
|
|
|
stage: test
|
|
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
|
|
|
script:
|
|
|
|
- scripts/git-submodule.sh update
|
|
|
|
$(sed -n '/GIT_SUBMODULES=/ s/.*=// p' build/config-host.mak)
|
|
|
|
- cd build
|
|
|
|
- find . -type f -exec touch {} +
|
|
|
|
# Avoid recompiling by hiding ninja with NINJA=":"
|
|
|
|
- make NINJA=":" $MAKE_CHECK_ARGS
|
|
|
|
|
2022-05-09 15:41:34 +03:00
|
|
|
.native_test_job_template:
|
|
|
|
extends: .common_test_job_template
|
|
|
|
artifacts:
|
|
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
|
|
|
expire_in: 7 days
|
|
|
|
paths:
|
|
|
|
- build/meson-logs/testlog.txt
|
2022-05-27 18:35:33 +03:00
|
|
|
reports:
|
|
|
|
junit: build/meson-logs/testlog.junit.xml
|
2022-05-09 15:41:34 +03:00
|
|
|
|
2021-11-05 18:53:54 +03:00
|
|
|
.avocado_test_job_template:
|
2022-05-09 15:41:34 +03:00
|
|
|
extends: .common_test_job_template
|
2021-05-19 21:55:01 +03:00
|
|
|
cache:
|
|
|
|
key: "${CI_JOB_NAME}-cache"
|
|
|
|
paths:
|
|
|
|
- ${CI_PROJECT_DIR}/avocado-cache
|
|
|
|
policy: pull-push
|
|
|
|
artifacts:
|
|
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
2021-05-25 07:46:56 +03:00
|
|
|
when: on_failure
|
|
|
|
expire_in: 7 days
|
2021-05-19 21:55:01 +03:00
|
|
|
paths:
|
|
|
|
- build/tests/results/latest/results.xml
|
|
|
|
- build/tests/results/latest/test-results
|
|
|
|
reports:
|
|
|
|
junit: build/tests/results/latest/results.xml
|
|
|
|
before_script:
|
|
|
|
- mkdir -p ~/.config/avocado
|
|
|
|
- echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
|
|
|
|
- echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
|
|
|
|
>> ~/.config/avocado/avocado.conf
|
|
|
|
- echo -e '[job.output.testlogs]\nstatuses = ["FAIL", "INTERRUPT"]'
|
|
|
|
>> ~/.config/avocado/avocado.conf
|
|
|
|
- if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
|
|
|
|
du -chs ${CI_PROJECT_DIR}/avocado-cache ;
|
|
|
|
fi
|
|
|
|
- export AVOCADO_ALLOW_UNTRUSTED_CODE=1
|
|
|
|
after_script:
|
|
|
|
- cd build
|
|
|
|
- du -chs ${CI_PROJECT_DIR}/avocado-cache
|
2022-05-27 18:36:01 +03:00
|
|
|
variables:
|
|
|
|
QEMU_JOB_AVOCADO: 1
|