testing updates:
- ensure socat available for tests - skip socat tests for MacOS - properly clean up fifos after use - make fp-test less chatty - store test artefacts on Cirrus - control custom runners with QEMU_CI knobs - disable benchmark runs under tsan build - update ubuntu 2004 to 2204 - skip nios2 kernel replay test - add tuxrun baselines to avocado - binary build of tricore tools - export test results on cross builds - improve windows builds - ensure we properly print TAP headers - migrate away from docker.py for building containers - be more efficient in our handling of build artefacts between stages - enable ztsd in containers so we can run tux_baselines - disable heavyweight PPC64 Boot Linux test in CI -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmP/SmUACgkQ+9DbCVqe KkQgSQgAmVrXEL+1/L7JNka/xDumZ+t39oxAAcY22WfV0dNIC85WQ/02A3+uMZmt pbNXq7PPvZ1YE4ygjqwHu5WabEA1lmcdAoyg8/ACwnQMDyQ9RZGxceNO3UUsaoNx b3U/hsOS1ggo5lzzfamsRj2xbxthtUx2MJZQe96NTWSut1ibcHLYyaOqxCY6Q5zJ ZONOHOd3NLlrb+omLONLp9J+100Dt/x1UHsW5daSqRKaoDucO6w/So6YxGOshn90 tJIJ/vKTtYBZBfF5JYoJ7A/m9Ia/YjcTVLxbXpMI6Bvw0P9PSIAZuvgbKfxfIAnf EHqZo1B71aH74vFTttK9Q1rnf9/9Cg== =grRh -----END PGP SIGNATURE----- Merge tag 'pull-testing-next-010323-1' of https://gitlab.com/stsquad/qemu into staging testing updates: - ensure socat available for tests - skip socat tests for MacOS - properly clean up fifos after use - make fp-test less chatty - store test artefacts on Cirrus - control custom runners with QEMU_CI knobs - disable benchmark runs under tsan build - update ubuntu 2004 to 2204 - skip nios2 kernel replay test - add tuxrun baselines to avocado - binary build of tricore tools - export test results on cross builds - improve windows builds - ensure we properly print TAP headers - migrate away from docker.py for building containers - be more efficient in our handling of build artefacts between stages - enable ztsd in containers so we can run tux_baselines - disable heavyweight PPC64 Boot Linux test in CI # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmP/SmUACgkQ+9DbCVqe # KkQgSQgAmVrXEL+1/L7JNka/xDumZ+t39oxAAcY22WfV0dNIC85WQ/02A3+uMZmt # pbNXq7PPvZ1YE4ygjqwHu5WabEA1lmcdAoyg8/ACwnQMDyQ9RZGxceNO3UUsaoNx # b3U/hsOS1ggo5lzzfamsRj2xbxthtUx2MJZQe96NTWSut1ibcHLYyaOqxCY6Q5zJ # ZONOHOd3NLlrb+omLONLp9J+100Dt/x1UHsW5daSqRKaoDucO6w/So6YxGOshn90 # tJIJ/vKTtYBZBfF5JYoJ7A/m9Ia/YjcTVLxbXpMI6Bvw0P9PSIAZuvgbKfxfIAnf # EHqZo1B71aH74vFTttK9Q1rnf9/9Cg== # =grRh # -----END PGP SIGNATURE----- # gpg: Signature made Wed 01 Mar 2023 12:51:49 GMT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full] # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-testing-next-010323-1' of https://gitlab.com/stsquad/qemu: (24 commits) tests/avocado: disable BootLinuxPPC64 test in CI tests/docker: add zstdtools to the images gitlab: move the majority of artefact handling to a template tests/docker: use direct RUNC call to run test jobs tests/docker: use direct RUNC call to build containers tests/docker: add USER stanzas to non-lci images tests/lcitool: append user setting stanza to dockerfiles configure: expose the direct container command tests: Ensure TAP version is printed before other messages gitlab: Use plain docker in container-template.yml tests/dockerfiles: unify debian-toolchain references cirrus.yml: Improve the windows_msys2_task tests: ensure we export job results for some cross builds tests/docker: Use binaries for debian-tricore-cross tests: add tuxrun baseline test to avocado tests: skip the nios2 replay_kernel test testing: update ubuntu2004 to ubuntu2204 tests: don't run benchmarks for the tsan build gitlab: extend custom runners with base_job_template gitlab-ci: Use artifacts instead of dumping logs in the Cirrus-CI jobs ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
262312d7ba
@ -100,9 +100,11 @@ windows_msys2_task:
|
|||||||
tar xf C:\tools\archive\msys64.tar
|
tar xf C:\tools\archive\msys64.tar
|
||||||
Write-Output "Extract msys2 time taken: $((Get-Date).Subtract($start_time))"
|
Write-Output "Extract msys2 time taken: $((Get-Date).Subtract($start_time))"
|
||||||
script:
|
script:
|
||||||
- C:\tools\msys64\usr\bin\bash.exe -lc "mkdir build"
|
- mkdir build
|
||||||
- C:\tools\msys64\usr\bin\bash.exe -lc "cd build && ../configure --python=python3"
|
- cd build
|
||||||
- C:\tools\msys64\usr\bin\bash.exe -lc "cd build && make -j8"
|
- C:\tools\msys64\usr\bin\bash.exe -lc "../configure --python=python3
|
||||||
|
--target-list-exclude=i386-softmmu,ppc64-softmmu,aarch64-softmmu,mips64-softmmu,mipsel-softmmu,sh4-softmmu"
|
||||||
|
- C:\tools\msys64\usr\bin\bash.exe -lc "make -j8"
|
||||||
- exit $LastExitCode
|
- exit $LastExitCode
|
||||||
test_script:
|
test_script:
|
||||||
- C:\tools\msys64\usr\bin\bash.exe -lc "cd build && make V=1 check"
|
- C:\tools\msys64\usr\bin\bash.exe -lc "cd build && make V=1 check"
|
||||||
|
@ -25,6 +25,22 @@
|
|||||||
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
.common_test_job_template:
|
.common_test_job_template:
|
||||||
extends: .base_job_template
|
extends: .base_job_template
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -2,7 +2,9 @@ include:
|
|||||||
- local: '/.gitlab-ci.d/buildtest-template.yml'
|
- local: '/.gitlab-ci.d/buildtest-template.yml'
|
||||||
|
|
||||||
build-system-alpine:
|
build-system-alpine:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
- job: amd64-alpine-container
|
- job: amd64-alpine-container
|
||||||
variables:
|
variables:
|
||||||
@ -11,11 +13,6 @@ build-system-alpine:
|
|||||||
microblazeel-softmmu mips64el-softmmu
|
microblazeel-softmmu mips64el-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
|
CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- .git-submodule-status
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-system-alpine:
|
check-system-alpine:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -36,19 +33,17 @@ avocado-system-alpine:
|
|||||||
MAKE_CHECK_ARGS: check-avocado
|
MAKE_CHECK_ARGS: check-avocado
|
||||||
|
|
||||||
build-system-ubuntu:
|
build-system-ubuntu:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-ubuntu2004-container
|
job: amd64-ubuntu2204-container
|
||||||
variables:
|
variables:
|
||||||
IMAGE: ubuntu2004
|
IMAGE: ubuntu2204
|
||||||
CONFIGURE_ARGS: --enable-docs
|
CONFIGURE_ARGS: --enable-docs
|
||||||
TARGETS: alpha-softmmu cris-softmmu hppa-softmmu
|
TARGETS: alpha-softmmu cris-softmmu hppa-softmmu
|
||||||
microblazeel-softmmu mips64el-softmmu
|
microblazeel-softmmu mips64el-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-system-ubuntu:
|
check-system-ubuntu:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -56,7 +51,7 @@ check-system-ubuntu:
|
|||||||
- job: build-system-ubuntu
|
- job: build-system-ubuntu
|
||||||
artifacts: true
|
artifacts: true
|
||||||
variables:
|
variables:
|
||||||
IMAGE: ubuntu2004
|
IMAGE: ubuntu2204
|
||||||
MAKE_CHECK_ARGS: check
|
MAKE_CHECK_ARGS: check
|
||||||
|
|
||||||
avocado-system-ubuntu:
|
avocado-system-ubuntu:
|
||||||
@ -65,11 +60,13 @@ avocado-system-ubuntu:
|
|||||||
- job: build-system-ubuntu
|
- job: build-system-ubuntu
|
||||||
artifacts: true
|
artifacts: true
|
||||||
variables:
|
variables:
|
||||||
IMAGE: ubuntu2004
|
IMAGE: ubuntu2204
|
||||||
MAKE_CHECK_ARGS: check-avocado
|
MAKE_CHECK_ARGS: check-avocado
|
||||||
|
|
||||||
build-system-debian:
|
build-system-debian:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-debian-container
|
job: amd64-debian-container
|
||||||
variables:
|
variables:
|
||||||
@ -78,10 +75,6 @@ build-system-debian:
|
|||||||
TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
|
TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
|
||||||
riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
|
riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-system-debian:
|
check-system-debian:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -114,7 +107,9 @@ crash-test-debian:
|
|||||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
|
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
|
||||||
|
|
||||||
build-system-fedora:
|
build-system-fedora:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-fedora-container
|
job: amd64-fedora-container
|
||||||
variables:
|
variables:
|
||||||
@ -123,10 +118,6 @@ build-system-fedora:
|
|||||||
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
|
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
|
||||||
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-system-fedora:
|
check-system-fedora:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -160,7 +151,9 @@ crash-test-fedora:
|
|||||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
||||||
|
|
||||||
build-system-centos:
|
build-system-centos:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-centos8-container
|
job: amd64-centos8-container
|
||||||
variables:
|
variables:
|
||||||
@ -170,10 +163,6 @@ build-system-centos:
|
|||||||
TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
|
TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
|
||||||
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-system-centos:
|
check-system-centos:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -194,17 +183,15 @@ avocado-system-centos:
|
|||||||
MAKE_CHECK_ARGS: check-avocado
|
MAKE_CHECK_ARGS: check-avocado
|
||||||
|
|
||||||
build-system-opensuse:
|
build-system-opensuse:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-opensuse-leap-container
|
job: amd64-opensuse-leap-container
|
||||||
variables:
|
variables:
|
||||||
IMAGE: opensuse-leap
|
IMAGE: opensuse-leap
|
||||||
TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
|
TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-system-opensuse:
|
check-system-opensuse:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -339,7 +326,9 @@ clang-user:
|
|||||||
# Split in three sets of build/check/avocado to limit the execution time of each
|
# Split in three sets of build/check/avocado to limit the execution time of each
|
||||||
# job
|
# job
|
||||||
build-cfi-aarch64:
|
build-cfi-aarch64:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
- job: amd64-fedora-container
|
- job: amd64-fedora-container
|
||||||
variables:
|
variables:
|
||||||
@ -355,10 +344,6 @@ build-cfi-aarch64:
|
|||||||
# skipped until the situation has been solved.
|
# skipped until the situation has been solved.
|
||||||
QEMU_JOB_SKIPPED: 1
|
QEMU_JOB_SKIPPED: 1
|
||||||
timeout: 90m
|
timeout: 90m
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-cfi-aarch64:
|
check-cfi-aarch64:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -379,7 +364,9 @@ avocado-cfi-aarch64:
|
|||||||
MAKE_CHECK_ARGS: check-avocado
|
MAKE_CHECK_ARGS: check-avocado
|
||||||
|
|
||||||
build-cfi-ppc64-s390x:
|
build-cfi-ppc64-s390x:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
- job: amd64-fedora-container
|
- job: amd64-fedora-container
|
||||||
variables:
|
variables:
|
||||||
@ -395,10 +382,6 @@ build-cfi-ppc64-s390x:
|
|||||||
# skipped until the situation has been solved.
|
# skipped until the situation has been solved.
|
||||||
QEMU_JOB_SKIPPED: 1
|
QEMU_JOB_SKIPPED: 1
|
||||||
timeout: 80m
|
timeout: 80m
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-cfi-ppc64-s390x:
|
check-cfi-ppc64-s390x:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -419,7 +402,9 @@ avocado-cfi-ppc64-s390x:
|
|||||||
MAKE_CHECK_ARGS: check-avocado
|
MAKE_CHECK_ARGS: check-avocado
|
||||||
|
|
||||||
build-cfi-x86_64:
|
build-cfi-x86_64:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
- job: amd64-fedora-container
|
- job: amd64-fedora-container
|
||||||
variables:
|
variables:
|
||||||
@ -431,10 +416,6 @@ build-cfi-x86_64:
|
|||||||
TARGETS: x86_64-softmmu
|
TARGETS: x86_64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
timeout: 70m
|
timeout: 70m
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
check-cfi-x86_64:
|
check-cfi-x86_64:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -457,22 +438,21 @@ avocado-cfi-x86_64:
|
|||||||
tsan-build:
|
tsan-build:
|
||||||
extends: .native_build_job_template
|
extends: .native_build_job_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-ubuntu2004-container
|
job: amd64-ubuntu2204-container
|
||||||
variables:
|
variables:
|
||||||
IMAGE: ubuntu2004
|
IMAGE: ubuntu2204
|
||||||
CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
|
CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
|
||||||
--enable-trace-backends=ust --disable-slirp
|
--enable-trace-backends=ust --disable-slirp
|
||||||
TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
|
TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
|
||||||
MAKE_CHECK_ARGS: bench V=1
|
|
||||||
|
|
||||||
# gcov is a GCC features
|
# gcov is a GCC features
|
||||||
gcov:
|
gcov:
|
||||||
extends: .native_build_job_template
|
extends: .native_build_job_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-ubuntu2004-container
|
job: amd64-ubuntu2204-container
|
||||||
timeout: 80m
|
timeout: 80m
|
||||||
variables:
|
variables:
|
||||||
IMAGE: ubuntu2004
|
IMAGE: ubuntu2204
|
||||||
CONFIGURE_ARGS: --enable-gcov
|
CONFIGURE_ARGS: --enable-gcov
|
||||||
TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
|
TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
|
||||||
MAKE_CHECK_ARGS: check
|
MAKE_CHECK_ARGS: check
|
||||||
@ -565,7 +545,9 @@ build-libvhost-user:
|
|||||||
# No targets are built here, just tools, docs, and unit tests. This
|
# No targets are built here, just tools, docs, and unit tests. This
|
||||||
# also feeds into the eventual documentation deployment steps later
|
# also feeds into the eventual documentation deployment steps later
|
||||||
build-tools-and-docs-debian:
|
build-tools-and-docs-debian:
|
||||||
extends: .native_build_job_template
|
extends:
|
||||||
|
- .native_build_job_template
|
||||||
|
- .native_build_artifact_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-debian-container
|
job: amd64-debian-container
|
||||||
# when running on 'master' we use pre-existing container
|
# when running on 'master' we use pre-existing container
|
||||||
@ -575,10 +557,6 @@ build-tools-and-docs-debian:
|
|||||||
MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
|
MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
|
||||||
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
||||||
QEMU_JOB_PUBLISH: 1
|
QEMU_JOB_PUBLISH: 1
|
||||||
artifacts:
|
|
||||||
expire_in: 2 days
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
|
|
||||||
# Prepare for GitLab pages deployment. Anything copied into the
|
# Prepare for GitLab pages deployment. Anything copied into the
|
||||||
# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
|
# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
|
||||||
|
@ -32,6 +32,9 @@ build_task:
|
|||||||
- $MAKE -j$(sysctl -n hw.ncpu)
|
- $MAKE -j$(sysctl -n hw.ncpu)
|
||||||
- for TARGET in $TEST_TARGETS ;
|
- for TARGET in $TEST_TARGETS ;
|
||||||
do
|
do
|
||||||
$MAKE -j$(sysctl -n hw.ncpu) $TARGET V=1
|
$MAKE -j$(sysctl -n hw.ncpu) $TARGET V=1 ;
|
||||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
|
||||||
done
|
done
|
||||||
|
always:
|
||||||
|
build_result_artifacts:
|
||||||
|
path: build/meson-logs/*log.txt
|
||||||
|
type: text/plain
|
||||||
|
@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
|||||||
NINJA='/usr/local/bin/ninja'
|
NINJA='/usr/local/bin/ninja'
|
||||||
PACKAGING_COMMAND='pkg'
|
PACKAGING_COMMAND='pkg'
|
||||||
PIP3='/usr/local/bin/pip-3.8'
|
PIP3='/usr/local/bin/pip-3.8'
|
||||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio spice-protocol tesseract usbredir virglrenderer vte3 zstd'
|
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 zstd'
|
||||||
PYPI_PKGS=''
|
PYPI_PKGS=''
|
||||||
PYTHON='/usr/local/bin/python3'
|
PYTHON='/usr/local/bin/python3'
|
||||||
|
@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
|||||||
NINJA='/usr/local/bin/ninja'
|
NINJA='/usr/local/bin/ninja'
|
||||||
PACKAGING_COMMAND='pkg'
|
PACKAGING_COMMAND='pkg'
|
||||||
PIP3='/usr/local/bin/pip-3.8'
|
PIP3='/usr/local/bin/pip-3.8'
|
||||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio spice-protocol tesseract usbredir virglrenderer vte3 zstd'
|
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 zstd'
|
||||||
PYPI_PKGS=''
|
PYPI_PKGS=''
|
||||||
PYTHON='/usr/local/bin/python3'
|
PYTHON='/usr/local/bin/python3'
|
||||||
|
@ -11,6 +11,6 @@ MAKE='/opt/homebrew/bin/gmake'
|
|||||||
NINJA='/opt/homebrew/bin/ninja'
|
NINJA='/opt/homebrew/bin/ninja'
|
||||||
PACKAGING_COMMAND='brew'
|
PACKAGING_COMMAND='brew'
|
||||||
PIP3='/opt/homebrew/bin/pip3'
|
PIP3='/opt/homebrew/bin/pip3'
|
||||||
PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy sparse spice-protocol tesseract usbredir vde vte3 zlib zstd'
|
PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy socat sparse spice-protocol tesseract usbredir vde vte3 zlib zstd'
|
||||||
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme'
|
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme'
|
||||||
PYTHON='/opt/homebrew/bin/python3'
|
PYTHON='/opt/homebrew/bin/python3'
|
||||||
|
@ -6,17 +6,16 @@
|
|||||||
- docker:dind
|
- docker:dind
|
||||||
before_script:
|
before_script:
|
||||||
- export TAG="$CI_REGISTRY_IMAGE/qemu/$NAME:latest"
|
- export TAG="$CI_REGISTRY_IMAGE/qemu/$NAME:latest"
|
||||||
- export COMMON_TAG="$CI_REGISTRY/qemu-project/qemu/$NAME:latest"
|
- export COMMON_TAG="$CI_REGISTRY/qemu-project/qemu/qemu/$NAME:latest"
|
||||||
- apk add python3
|
- apk add python3
|
||||||
- docker info
|
- docker info
|
||||||
- docker login $CI_REGISTRY -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
|
- docker login $CI_REGISTRY -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
|
||||||
script:
|
script:
|
||||||
- echo "TAG:$TAG"
|
- echo "TAG:$TAG"
|
||||||
- echo "COMMON_TAG:$COMMON_TAG"
|
- echo "COMMON_TAG:$COMMON_TAG"
|
||||||
- ./tests/docker/docker.py --engine docker build
|
- docker build --tag "$TAG" --cache-from "$TAG" --cache-from "$COMMON_TAG"
|
||||||
-t "qemu/$NAME" -f "tests/docker/dockerfiles/$NAME.docker"
|
--build-arg BUILDKIT_INLINE_CACHE=1
|
||||||
-r $CI_REGISTRY/qemu-project/qemu
|
-f "tests/docker/dockerfiles/$NAME.docker" "."
|
||||||
- docker tag "qemu/$NAME" "$TAG"
|
|
||||||
- docker push "$TAG"
|
- docker push "$TAG"
|
||||||
after_script:
|
after_script:
|
||||||
- docker logout
|
- docker logout
|
||||||
|
@ -13,10 +13,10 @@ amd64-debian-container:
|
|||||||
variables:
|
variables:
|
||||||
NAME: debian-amd64
|
NAME: debian-amd64
|
||||||
|
|
||||||
amd64-ubuntu2004-container:
|
amd64-ubuntu2204-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
variables:
|
variables:
|
||||||
NAME: ubuntu2004
|
NAME: ubuntu2204
|
||||||
|
|
||||||
amd64-opensuse-leap-container:
|
amd64-opensuse-leap-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
|
@ -49,3 +49,14 @@
|
|||||||
nios2-linux-user or1k-linux-user ppc-linux-user sparc-linux-user
|
nios2-linux-user or1k-linux-user ppc-linux-user sparc-linux-user
|
||||||
xtensa-linux-user $CROSS_SKIP_TARGETS"
|
xtensa-linux-user $CROSS_SKIP_TARGETS"
|
||||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||||
|
|
||||||
|
# We can still run some tests on some of our cross build jobs. They can add this
|
||||||
|
# template to their extends to save the build logs and test results
|
||||||
|
.cross_test_artifacts:
|
||||||
|
artifacts:
|
||||||
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
||||||
|
expire_in: 7 days
|
||||||
|
paths:
|
||||||
|
- build/meson-logs/testlog.txt
|
||||||
|
reports:
|
||||||
|
junit: build/meson-logs/testlog.junit.xml
|
||||||
|
@ -44,7 +44,9 @@ cross-arm64-user:
|
|||||||
IMAGE: debian-arm64-cross
|
IMAGE: debian-arm64-cross
|
||||||
|
|
||||||
cross-i386-system:
|
cross-i386-system:
|
||||||
extends: .cross_system_build_job
|
extends:
|
||||||
|
- .cross_system_build_job
|
||||||
|
- .cross_test_artifacts
|
||||||
needs:
|
needs:
|
||||||
job: i386-fedora-cross-container
|
job: i386-fedora-cross-container
|
||||||
variables:
|
variables:
|
||||||
@ -52,7 +54,9 @@ cross-i386-system:
|
|||||||
MAKE_CHECK_ARGS: check-qtest
|
MAKE_CHECK_ARGS: check-qtest
|
||||||
|
|
||||||
cross-i386-user:
|
cross-i386-user:
|
||||||
extends: .cross_user_build_job
|
extends:
|
||||||
|
- .cross_user_build_job
|
||||||
|
- .cross_test_artifacts
|
||||||
needs:
|
needs:
|
||||||
job: i386-fedora-cross-container
|
job: i386-fedora-cross-container
|
||||||
variables:
|
variables:
|
||||||
@ -60,7 +64,9 @@ cross-i386-user:
|
|||||||
MAKE_CHECK_ARGS: check
|
MAKE_CHECK_ARGS: check
|
||||||
|
|
||||||
cross-i386-tci:
|
cross-i386-tci:
|
||||||
extends: .cross_accel_build_job
|
extends:
|
||||||
|
- .cross_accel_build_job
|
||||||
|
- .cross_test_artifacts
|
||||||
timeout: 60m
|
timeout: 60m
|
||||||
needs:
|
needs:
|
||||||
job: i386-fedora-cross-container
|
job: i386-fedora-cross-container
|
||||||
|
@ -15,7 +15,8 @@ variables:
|
|||||||
|
|
||||||
# All custom runners can extend this template to upload the testlog
|
# All custom runners can extend this template to upload the testlog
|
||||||
# data as an artifact and also feed the junit report
|
# data as an artifact and also feed the junit report
|
||||||
.custom_artifacts_template:
|
.custom_runner_template:
|
||||||
|
extends: .base_job_template
|
||||||
artifacts:
|
artifacts:
|
||||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
||||||
expire_in: 7 days
|
expire_in: 7 days
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# "Install basic packages to build QEMU on Ubuntu 20.04/20.04"
|
# "Install basic packages to build QEMU on Ubuntu 20.04/20.04"
|
||||||
|
|
||||||
ubuntu-20.04-s390x-all-linux-static:
|
ubuntu-20.04-s390x-all-linux-static:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -24,7 +24,7 @@ ubuntu-20.04-s390x-all-linux-static:
|
|||||||
- make --output-sync -j`nproc` check
|
- make --output-sync -j`nproc` check
|
||||||
|
|
||||||
ubuntu-20.04-s390x-all:
|
ubuntu-20.04-s390x-all:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -43,7 +43,7 @@ ubuntu-20.04-s390x-all:
|
|||||||
- make --output-sync -j`nproc` check
|
- make --output-sync -j`nproc` check
|
||||||
|
|
||||||
ubuntu-20.04-s390x-alldbg:
|
ubuntu-20.04-s390x-alldbg:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -66,7 +66,7 @@ ubuntu-20.04-s390x-alldbg:
|
|||||||
- make --output-sync -j`nproc` check
|
- make --output-sync -j`nproc` check
|
||||||
|
|
||||||
ubuntu-20.04-s390x-clang:
|
ubuntu-20.04-s390x-clang:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -108,7 +108,7 @@ ubuntu-20.04-s390x-tci:
|
|||||||
- make --output-sync -j`nproc`
|
- make --output-sync -j`nproc`
|
||||||
|
|
||||||
ubuntu-20.04-s390x-notcg:
|
ubuntu-20.04-s390x-notcg:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# "Install basic packages to build QEMU on Ubuntu 20.04"
|
# "Install basic packages to build QEMU on Ubuntu 20.04"
|
||||||
|
|
||||||
ubuntu-22.04-aarch32-all:
|
ubuntu-22.04-aarch32-all:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# "Install basic packages to build QEMU on Ubuntu 20.04"
|
# "Install basic packages to build QEMU on Ubuntu 20.04"
|
||||||
|
|
||||||
ubuntu-22.04-aarch64-all-linux-static:
|
ubuntu-22.04-aarch64-all-linux-static:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -24,7 +24,7 @@ ubuntu-22.04-aarch64-all-linux-static:
|
|||||||
- make --output-sync -j`nproc --ignore=40` check
|
- make --output-sync -j`nproc --ignore=40` check
|
||||||
|
|
||||||
ubuntu-22.04-aarch64-all:
|
ubuntu-22.04-aarch64-all:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -46,7 +46,7 @@ ubuntu-22.04-aarch64-all:
|
|||||||
- make --output-sync -j`nproc --ignore=40` check
|
- make --output-sync -j`nproc --ignore=40` check
|
||||||
|
|
||||||
ubuntu-22.04-aarch64-alldbg:
|
ubuntu-22.04-aarch64-alldbg:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -65,7 +65,7 @@ ubuntu-22.04-aarch64-alldbg:
|
|||||||
- make --output-sync -j`nproc --ignore=40` check
|
- make --output-sync -j`nproc --ignore=40` check
|
||||||
|
|
||||||
ubuntu-22.04-aarch64-clang:
|
ubuntu-22.04-aarch64-clang:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
@ -107,7 +107,7 @@ ubuntu-22.04-aarch64-tci:
|
|||||||
- make --output-sync -j`nproc --ignore=40`
|
- make --output-sync -j`nproc --ignore=40`
|
||||||
|
|
||||||
ubuntu-22.04-aarch64-notcg:
|
ubuntu-22.04-aarch64-notcg:
|
||||||
extends: .custom_artifacts_template
|
extends: .custom_runner_template
|
||||||
needs: []
|
needs: []
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
|
@ -3766,6 +3766,7 @@ F: scripts/ci/
|
|||||||
F: tests/docker/
|
F: tests/docker/
|
||||||
F: tests/vm/
|
F: tests/vm/
|
||||||
F: tests/lcitool/
|
F: tests/lcitool/
|
||||||
|
F: tests/avocado/tuxrun_baselines.py
|
||||||
F: scripts/archive-source.sh
|
F: scripts/archive-source.sh
|
||||||
F: docs/devel/testing.rst
|
F: docs/devel/testing.rst
|
||||||
W: https://gitlab.com/qemu-project/qemu/pipelines
|
W: https://gitlab.com/qemu-project/qemu/pipelines
|
||||||
|
3
configure
vendored
3
configure
vendored
@ -1790,6 +1790,7 @@ fi
|
|||||||
# functions to probe cross compilers
|
# functions to probe cross compilers
|
||||||
|
|
||||||
container="no"
|
container="no"
|
||||||
|
runc=""
|
||||||
if test $use_containers = "yes" && (has "docker" || has "podman"); then
|
if test $use_containers = "yes" && (has "docker" || has "podman"); then
|
||||||
case $($python "$source_path"/tests/docker/docker.py probe) in
|
case $($python "$source_path"/tests/docker/docker.py probe) in
|
||||||
*docker) container=docker ;;
|
*docker) container=docker ;;
|
||||||
@ -1798,6 +1799,7 @@ if test $use_containers = "yes" && (has "docker" || has "podman"); then
|
|||||||
esac
|
esac
|
||||||
if test "$container" != "no"; then
|
if test "$container" != "no"; then
|
||||||
docker_py="$python $source_path/tests/docker/docker.py --engine $container"
|
docker_py="$python $source_path/tests/docker/docker.py --engine $container"
|
||||||
|
runc=$($python "$source_path"/tests/docker/docker.py probe)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -2397,6 +2399,7 @@ fi
|
|||||||
|
|
||||||
if test "$container" != no; then
|
if test "$container" != no; then
|
||||||
echo "ENGINE=$container" >> $config_host_mak
|
echo "ENGINE=$container" >> $config_host_mak
|
||||||
|
echo "RUNC=$runc" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
echo "ROMS=$roms" >> $config_host_mak
|
echo "ROMS=$roms" >> $config_host_mak
|
||||||
echo "MAKE=$make" >> $config_host_mak
|
echo "MAKE=$make" >> $config_host_mak
|
||||||
|
@ -588,13 +588,13 @@ https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual
|
|||||||
|
|
||||||
Thread Sanitizer in Docker
|
Thread Sanitizer in Docker
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
TSan is currently supported in the ubuntu2004 docker.
|
TSan is currently supported in the ubuntu2204 docker.
|
||||||
|
|
||||||
The test-tsan test will build using TSan and then run make check.
|
The test-tsan test will build using TSan and then run make check.
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
make docker-test-tsan@ubuntu2004
|
make docker-test-tsan@ubuntu2204
|
||||||
|
|
||||||
TSan warnings under docker are placed in files located at build/tsan/.
|
TSan warnings under docker are placed in files located at build/tsan/.
|
||||||
|
|
||||||
|
@ -84,6 +84,8 @@ class BootLinuxAarch64(LinuxTest):
|
|||||||
self.launch_and_wait(set_up_ssh_connection=False)
|
self.launch_and_wait(set_up_ssh_connection=False)
|
||||||
|
|
||||||
|
|
||||||
|
# See the tux_baseline.py tests for almost the same coverage in a lot
|
||||||
|
# less time.
|
||||||
class BootLinuxPPC64(LinuxTest):
|
class BootLinuxPPC64(LinuxTest):
|
||||||
"""
|
"""
|
||||||
:avocado: tags=arch:ppc64
|
:avocado: tags=arch:ppc64
|
||||||
@ -91,6 +93,7 @@ class BootLinuxPPC64(LinuxTest):
|
|||||||
|
|
||||||
timeout = 360
|
timeout = 360
|
||||||
|
|
||||||
|
@skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
|
||||||
def test_pseries_tcg(self):
|
def test_pseries_tcg(self):
|
||||||
"""
|
"""
|
||||||
:avocado: tags=machine:pseries
|
:avocado: tags=machine:pseries
|
||||||
|
@ -349,6 +349,7 @@ class ReplayKernelNormal(ReplayKernelBase):
|
|||||||
file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
|
file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
|
||||||
self.do_test_advcal_2018(file_path, 'vmlinux')
|
self.do_test_advcal_2018(file_path, 'vmlinux')
|
||||||
|
|
||||||
|
@skip("nios2 emulation is buggy under record/replay")
|
||||||
def test_nios2_10m50(self):
|
def test_nios2_10m50(self):
|
||||||
"""
|
"""
|
||||||
:avocado: tags=arch:nios2
|
:avocado: tags=arch:nios2
|
||||||
|
423
tests/avocado/tuxrun_baselines.py
Normal file
423
tests/avocado/tuxrun_baselines.py
Normal file
@ -0,0 +1,423 @@
|
|||||||
|
# Functional test that boots known good tuxboot images the same way
|
||||||
|
# that tuxrun (www.tuxrun.org) does. This tool is used by things like
|
||||||
|
# the LKFT project to run regression tests on kernels.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2023 Linaro Ltd.
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Alex Bennée <alex.bennee@linaro.org>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
|
from avocado import skip, skipIf
|
||||||
|
from avocado_qemu import QemuSystemTest
|
||||||
|
from avocado_qemu import exec_command, exec_command_and_wait_for_pattern
|
||||||
|
from avocado_qemu import wait_for_console_pattern
|
||||||
|
from avocado.utils import process
|
||||||
|
from avocado.utils.path import find_command
|
||||||
|
|
||||||
|
class TuxRunBaselineTest(QemuSystemTest):
|
||||||
|
"""
|
||||||
|
:avocado: tags=accel:tcg
|
||||||
|
"""
|
||||||
|
|
||||||
|
KERNEL_COMMON_COMMAND_LINE = 'printk.time=0'
|
||||||
|
# Tests are ~10-40s, allow for --debug/--enable-gcov overhead
|
||||||
|
timeout = 100
|
||||||
|
|
||||||
|
def get_tag(self, tagname, default=None):
|
||||||
|
"""
|
||||||
|
Get the metadata tag or return the default.
|
||||||
|
"""
|
||||||
|
utag = self._get_unique_tag_val(tagname)
|
||||||
|
print(f"{tagname}/{default} -> {utag}")
|
||||||
|
if utag:
|
||||||
|
return utag
|
||||||
|
|
||||||
|
return default
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
|
||||||
|
# We need zstd for all the tuxrun tests
|
||||||
|
# See https://github.com/avocado-framework/avocado/issues/5609
|
||||||
|
zstd = find_command('zstd', False)
|
||||||
|
if zstd is False:
|
||||||
|
self.cancel('Could not find "zstd", which is required to '
|
||||||
|
'decompress rootfs')
|
||||||
|
self.zstd = zstd
|
||||||
|
|
||||||
|
# Process the TuxRun specific tags, most machines work with
|
||||||
|
# reasonable defaults but we sometimes need to tweak the
|
||||||
|
# config. To avoid open coding everything we store all these
|
||||||
|
# details in the metadata for each test.
|
||||||
|
|
||||||
|
# The tuxboot tag matches the root directory
|
||||||
|
self.tuxboot = self.get_tag('tuxboot')
|
||||||
|
|
||||||
|
# Most Linux's use ttyS0 for their serial port
|
||||||
|
self.console = self.get_tag('console', "ttyS0")
|
||||||
|
|
||||||
|
# Does the machine shutdown QEMU nicely on "halt"
|
||||||
|
self.shutdown = self.get_tag('shutdown')
|
||||||
|
|
||||||
|
# The name of the kernel Image file
|
||||||
|
self.image = self.get_tag('image', "Image")
|
||||||
|
|
||||||
|
# The block device drive type
|
||||||
|
self.drive = self.get_tag('drive', "virtio-blk-device")
|
||||||
|
|
||||||
|
self.root = self.get_tag('root', "vda")
|
||||||
|
|
||||||
|
# Occasionally we need extra devices to hook things up
|
||||||
|
self.extradev = self.get_tag('extradev')
|
||||||
|
|
||||||
|
def wait_for_console_pattern(self, success_message, vm=None):
|
||||||
|
wait_for_console_pattern(self, success_message,
|
||||||
|
failure_message='Kernel panic - not syncing',
|
||||||
|
vm=vm)
|
||||||
|
|
||||||
|
def fetch_tuxrun_assets(self, dt=None):
|
||||||
|
"""
|
||||||
|
Fetch the TuxBoot assets. They are stored in a standard way so we
|
||||||
|
use the per-test tags to fetch details.
|
||||||
|
"""
|
||||||
|
base_url = f"https://storage.tuxboot.com/{self.tuxboot}/"
|
||||||
|
kernel_image = self.fetch_asset(base_url + self.image)
|
||||||
|
disk_image_zst = self.fetch_asset(base_url + "rootfs.ext4.zst")
|
||||||
|
|
||||||
|
cmd = f"{self.zstd} -d {disk_image_zst} -o {self.workdir}/rootfs.ext4"
|
||||||
|
process.run(cmd)
|
||||||
|
|
||||||
|
if dt:
|
||||||
|
dtb = self.fetch_asset(base_url + dt)
|
||||||
|
else:
|
||||||
|
dtb = None
|
||||||
|
|
||||||
|
return (kernel_image, self.workdir + "/rootfs.ext4", dtb)
|
||||||
|
|
||||||
|
def prepare_run(self, kernel, disk, dtb=None, console_index=0):
|
||||||
|
"""
|
||||||
|
Setup to run and add the common parameters to the system
|
||||||
|
"""
|
||||||
|
self.vm.set_console(console_index=console_index)
|
||||||
|
|
||||||
|
# all block devices are raw ext4's
|
||||||
|
blockdev = "driver=raw,file.driver=file," \
|
||||||
|
+ f"file.filename={disk},node-name=hd0"
|
||||||
|
|
||||||
|
kcmd_line = self.KERNEL_COMMON_COMMAND_LINE
|
||||||
|
kcmd_line += f" root=/dev/{self.root}"
|
||||||
|
kcmd_line += f" console={self.console}"
|
||||||
|
|
||||||
|
self.vm.add_args('-kernel', kernel,
|
||||||
|
'-append', kcmd_line,
|
||||||
|
'-blockdev', blockdev)
|
||||||
|
|
||||||
|
# Sometimes we need extra devices attached
|
||||||
|
if self.extradev:
|
||||||
|
self.vm.add_args('-device', self.extradev)
|
||||||
|
|
||||||
|
# Some machines already define a drive device
|
||||||
|
if self.drive != "none":
|
||||||
|
self.vm.add_args('-device',
|
||||||
|
f"{self.drive},drive=hd0")
|
||||||
|
|
||||||
|
# Some machines need an explicit DTB
|
||||||
|
if dtb:
|
||||||
|
self.vm.add_args('-dtb', dtb)
|
||||||
|
|
||||||
|
def run_tuxtest_tests(self, haltmsg):
|
||||||
|
"""
|
||||||
|
Wait for the system to boot up, wait for the login prompt and
|
||||||
|
then do a few things on the console. Trigger a shutdown and
|
||||||
|
wait to exit cleanly.
|
||||||
|
"""
|
||||||
|
self.wait_for_console_pattern("Welcome to TuxTest")
|
||||||
|
time.sleep(0.2)
|
||||||
|
exec_command(self, 'root')
|
||||||
|
time.sleep(0.2)
|
||||||
|
exec_command(self, 'cat /proc/interrupts')
|
||||||
|
time.sleep(0.1)
|
||||||
|
exec_command(self, 'cat /proc/self/maps')
|
||||||
|
time.sleep(0.1)
|
||||||
|
exec_command(self, 'uname -a')
|
||||||
|
time.sleep(0.1)
|
||||||
|
exec_command_and_wait_for_pattern(self, 'halt', haltmsg)
|
||||||
|
|
||||||
|
# Wait for VM to shut down gracefully if it can
|
||||||
|
if self.shutdown == "nowait":
|
||||||
|
self.vm.shutdown()
|
||||||
|
else:
|
||||||
|
self.vm.wait()
|
||||||
|
|
||||||
|
def common_tuxrun(self, dt=None, haltmsg="reboot: System halted",
|
||||||
|
console_index=0):
|
||||||
|
"""
|
||||||
|
Common path for LKFT tests. Unless we need to do something
|
||||||
|
special with the command line we can process most things using
|
||||||
|
the tag metadata.
|
||||||
|
"""
|
||||||
|
(kernel, disk, dtb) = self.fetch_tuxrun_assets(dt)
|
||||||
|
|
||||||
|
self.prepare_run(kernel, disk, dtb, console_index)
|
||||||
|
self.vm.launch()
|
||||||
|
self.run_tuxtest_tests(haltmsg)
|
||||||
|
|
||||||
|
#
|
||||||
|
# The tests themselves. The configuration is derived from how
|
||||||
|
# tuxrun invokes qemu (with minor tweaks like using -blockdev
|
||||||
|
# consistently). The tuxrun equivalent is something like:
|
||||||
|
#
|
||||||
|
# tuxrun --device qemu-{ARCH} \
|
||||||
|
# --kernel https://storage.tuxboot.com/{TUXBOOT}/{IMAGE}
|
||||||
|
#
|
||||||
|
|
||||||
|
def test_arm64(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:aarch64
|
||||||
|
:avocado: tags=cpu:cortex-a57
|
||||||
|
:avocado: tags=machine:virt
|
||||||
|
:avocado: tags=tuxboot:arm64
|
||||||
|
:avocado: tags=console:ttyAMA0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_arm64be(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:aarch64
|
||||||
|
:avocado: tags=cpu:cortex-a57
|
||||||
|
:avocado: tags=endian:big
|
||||||
|
:avocado: tags=machine:virt
|
||||||
|
:avocado: tags=tuxboot:arm64be
|
||||||
|
:avocado: tags=console:ttyAMA0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_armv5(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:arm
|
||||||
|
:avocado: tags=cpu:arm926
|
||||||
|
:avocado: tags=machine:versatilepb
|
||||||
|
:avocado: tags=tuxboot:armv5
|
||||||
|
:avocado: tags=image:zImage
|
||||||
|
:avocado: tags=drive:virtio-blk-pci
|
||||||
|
:avocado: tags=console:ttyAMA0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun(dt="versatile-pb.dtb")
|
||||||
|
|
||||||
|
def test_armv7(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:arm
|
||||||
|
:avocado: tags=cpu:cortex-a15
|
||||||
|
:avocado: tags=machine:virt
|
||||||
|
:avocado: tags=tuxboot:armv7
|
||||||
|
:avocado: tags=image:zImage
|
||||||
|
:avocado: tags=console:ttyAMA0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_armv7be(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:arm
|
||||||
|
:avocado: tags=cpu:cortex-a15
|
||||||
|
:avocado: tags=endian:big
|
||||||
|
:avocado: tags=machine:virt
|
||||||
|
:avocado: tags=tuxboot:armv7be
|
||||||
|
:avocado: tags=image:zImage
|
||||||
|
:avocado: tags=console:ttyAMA0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_i386(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:i386
|
||||||
|
:avocado: tags=cpu:coreduo
|
||||||
|
:avocado: tags=machine:q35
|
||||||
|
:avocado: tags=tuxboot:i386
|
||||||
|
:avocado: tags=image:bzImage
|
||||||
|
:avocado: tags=drive:virtio-blk-pci
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_mips32(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:mips
|
||||||
|
:avocado: tags=machine:malta
|
||||||
|
:avocado: tags=cpu:mips32r6-generic
|
||||||
|
:avocado: tags=endian:big
|
||||||
|
:avocado: tags=tuxboot:mips32
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_mips32el(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:mipsel
|
||||||
|
:avocado: tags=machine:malta
|
||||||
|
:avocado: tags=cpu:mips32r6-generic
|
||||||
|
:avocado: tags=tuxboot:mips32el
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
@skip("QEMU currently broken") # regression against stable QEMU
|
||||||
|
def test_mips64(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:mips64
|
||||||
|
:avocado: tags=machine:malta
|
||||||
|
:avocado: tags=tuxboot:mips64
|
||||||
|
:avocado: tags=endian:big
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_mips64el(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:mips64el
|
||||||
|
:avocado: tags=machine:malta
|
||||||
|
:avocado: tags=tuxboot:mips64el
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_ppc32(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:ppc
|
||||||
|
:avocado: tags=machine:ppce500
|
||||||
|
:avocado: tags=cpu:e500mc
|
||||||
|
:avocado: tags=tuxboot:ppc32
|
||||||
|
:avocado: tags=image:uImage
|
||||||
|
:avocado: tags=drive:virtio-blk-pci
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_ppc64(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:ppc64
|
||||||
|
:avocado: tags=machine:pseries
|
||||||
|
:avocado: tags=cpu:POWER8
|
||||||
|
:avocado: tags=endian:big
|
||||||
|
:avocado: tags=console:hvc0
|
||||||
|
:avocado: tags=tuxboot:ppc64
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=extradev:driver=spapr-vscsi
|
||||||
|
:avocado: tags=drive:scsi-hd
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_ppc64le(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:ppc64
|
||||||
|
:avocado: tags=machine:pseries
|
||||||
|
:avocado: tags=cpu:POWER8
|
||||||
|
:avocado: tags=console:hvc0
|
||||||
|
:avocado: tags=tuxboot:ppc64le
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=extradev:driver=spapr-vscsi
|
||||||
|
:avocado: tags=drive:scsi-hd
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_riscv32(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:riscv32
|
||||||
|
:avocado: tags=machine:virt
|
||||||
|
:avocado: tags=tuxboot:riscv32
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_riscv64(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:riscv64
|
||||||
|
:avocado: tags=machine:virt
|
||||||
|
:avocado: tags=tuxboot:riscv64
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_s390(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:s390x
|
||||||
|
:avocado: tags=endian:big
|
||||||
|
:avocado: tags=tuxboot:s390
|
||||||
|
:avocado: tags=image:bzImage
|
||||||
|
:avocado: tags=drive:virtio-blk-ccw
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun(haltmsg="Requesting system halt")
|
||||||
|
|
||||||
|
# Note: some segfaults caused by unaligned userspace access
|
||||||
|
@skipIf(os.getenv('GITLAB_CI'), 'Skipping unstable test on GitLab')
|
||||||
|
def test_sh4(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:sh4
|
||||||
|
:avocado: tags=machine:r2d
|
||||||
|
:avocado: tags=cpu:sh7785
|
||||||
|
:avocado: tags=tuxboot:sh4
|
||||||
|
:avocado: tags=image:zImage
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=console:ttySC1
|
||||||
|
"""
|
||||||
|
# The test is currently too unstable to do much in userspace
|
||||||
|
# so we skip common_tuxrun and do a minimal boot and shutdown.
|
||||||
|
(kernel, disk, dtb) = self.fetch_tuxrun_assets()
|
||||||
|
|
||||||
|
# the console comes on the second serial port
|
||||||
|
self.prepare_run(kernel, disk, console_index=1)
|
||||||
|
self.vm.launch()
|
||||||
|
|
||||||
|
self.wait_for_console_pattern("Welcome to TuxTest")
|
||||||
|
time.sleep(0.1)
|
||||||
|
exec_command(self, 'root')
|
||||||
|
time.sleep(0.1)
|
||||||
|
exec_command_and_wait_for_pattern(self, 'halt',
|
||||||
|
"reboot: System halted")
|
||||||
|
|
||||||
|
def test_sparc64(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:sparc64
|
||||||
|
:avocado: tags=tuxboot:sparc64
|
||||||
|
:avocado: tags=image:vmlinux
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
||||||
|
|
||||||
|
def test_x86_64(self):
|
||||||
|
"""
|
||||||
|
:avocado: tags=arch:x86_64
|
||||||
|
:avocado: tags=machine:q35
|
||||||
|
:avocado: tags=cpu:Nehalem
|
||||||
|
:avocado: tags=tuxboot:x86_64
|
||||||
|
:avocado: tags=image:bzImage
|
||||||
|
:avocado: tags=root:sda
|
||||||
|
:avocado: tags=drive:driver=ide-hd,bus=ide.0,unit=0
|
||||||
|
:avocado: tags=shutdown:nowait
|
||||||
|
"""
|
||||||
|
self.common_tuxrun()
|
@ -7,6 +7,8 @@ SPACE := $(NULL) #
|
|||||||
COMMA := ,
|
COMMA := ,
|
||||||
|
|
||||||
HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
|
HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
|
||||||
|
USER = $(if $(NOUSER),,$(shell id -un))
|
||||||
|
UID = $(if $(NOUSER),,$(shell id -u))
|
||||||
|
|
||||||
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
|
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
|
||||||
ifeq ($(HOST_ARCH),x86_64)
|
ifeq ($(HOST_ARCH),x86_64)
|
||||||
@ -14,6 +16,7 @@ DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
|
|||||||
endif
|
endif
|
||||||
DOCKER_REGISTRY := $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTRY))
|
DOCKER_REGISTRY := $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTRY))
|
||||||
|
|
||||||
|
RUNC ?= docker
|
||||||
ENGINE ?= auto
|
ENGINE ?= auto
|
||||||
DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(ENGINE)
|
DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(ENGINE)
|
||||||
|
|
||||||
@ -35,15 +38,17 @@ docker-qemu-src: $(DOCKER_SRC_COPY)
|
|||||||
|
|
||||||
# General rule for building docker images.
|
# General rule for building docker images.
|
||||||
docker-image-%: $(DOCKER_FILES_DIR)/%.docker
|
docker-image-%: $(DOCKER_FILES_DIR)/%.docker
|
||||||
$(call quiet-command,\
|
$(call quiet-command, \
|
||||||
$(DOCKER_SCRIPT) build -t qemu/$* -f $< \
|
$(RUNC) build \
|
||||||
$(if $V,,--quiet) \
|
$(if $V,,--quiet) \
|
||||||
$(if $(NOCACHE),--no-cache, \
|
$(if $(NOCACHE),--no-cache, \
|
||||||
$(if $(DOCKER_REGISTRY),--registry $(DOCKER_REGISTRY))) \
|
$(if $(DOCKER_REGISTRY),--cache-from $(DOCKER_REGISTRY)/qemu/$*)) \
|
||||||
$(if $(NOUSER),,--add-current-user) \
|
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
||||||
$(if $(EXTRA_FILES),--extra-files $(EXTRA_FILES))\
|
$(if $(NOUSER),, \
|
||||||
$(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)),\
|
--build-arg USER=$(USER) \
|
||||||
"BUILD","$*")
|
--build-arg UID=$(UID)) \
|
||||||
|
-t qemu/$* - < $<, \
|
||||||
|
"BUILD", $1)
|
||||||
|
|
||||||
# Special rule for debootstraped binfmt linux-user images
|
# Special rule for debootstraped binfmt linux-user images
|
||||||
docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
|
docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
|
||||||
@ -219,8 +224,9 @@ docker-run: docker-qemu-src
|
|||||||
$(IMAGE) --executable $(EXECUTABLE), \
|
$(IMAGE) --executable $(EXECUTABLE), \
|
||||||
" COPYING $(EXECUTABLE) to $(IMAGE)"))
|
" COPYING $(EXECUTABLE) to $(IMAGE)"))
|
||||||
$(call quiet-command, \
|
$(call quiet-command, \
|
||||||
$(DOCKER_SCRIPT) run \
|
$(RUNC) run \
|
||||||
$(if $(NOUSER),,--run-as-current-user) \
|
--rm \
|
||||||
|
$(if $(NOUSER),,-u $(UID)) \
|
||||||
--security-opt seccomp=unconfined \
|
--security-opt seccomp=unconfined \
|
||||||
$(if $(DEBUG),-ti,) \
|
$(if $(DEBUG),-ti,) \
|
||||||
$(if $(NETWORK),$(if $(subst $(NETWORK),,1),--net=$(NETWORK)),--net=none) \
|
$(if $(NETWORK),$(if $(subst $(NETWORK),,1),--net=$(NETWORK)),--net=none) \
|
||||||
|
@ -94,6 +94,7 @@ RUN apk update && \
|
|||||||
sed \
|
sed \
|
||||||
snappy-dev \
|
snappy-dev \
|
||||||
sndio-dev \
|
sndio-dev \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
spice-dev \
|
spice-dev \
|
||||||
spice-protocol \
|
spice-protocol \
|
||||||
@ -109,6 +110,7 @@ RUN apk update && \
|
|||||||
xfsprogs-dev \
|
xfsprogs-dev \
|
||||||
zlib-dev \
|
zlib-dev \
|
||||||
zlib-static \
|
zlib-static \
|
||||||
|
zstd \
|
||||||
zstd-dev && \
|
zstd-dev && \
|
||||||
apk list | sort > /packages.txt && \
|
apk list | sort > /packages.txt && \
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||||
@ -123,3 +125,8 @@ ENV LANG "en_US.UTF-8"
|
|||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
ENV PYTHON "/usr/bin/python3"
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -103,6 +103,7 @@ RUN dnf distro-sync -y && \
|
|||||||
rpm \
|
rpm \
|
||||||
sed \
|
sed \
|
||||||
snappy-devel \
|
snappy-devel \
|
||||||
|
socat \
|
||||||
spice-protocol \
|
spice-protocol \
|
||||||
spice-server-devel \
|
spice-server-devel \
|
||||||
systemd-devel \
|
systemd-devel \
|
||||||
@ -115,7 +116,8 @@ RUN dnf distro-sync -y && \
|
|||||||
which \
|
which \
|
||||||
xfsprogs-devel \
|
xfsprogs-devel \
|
||||||
zlib-devel \
|
zlib-devel \
|
||||||
zlib-static && \
|
zlib-static \
|
||||||
|
zstd && \
|
||||||
dnf autoremove -y && \
|
dnf autoremove -y && \
|
||||||
dnf clean all -y && \
|
dnf clean all -y && \
|
||||||
rpm -qa | sort > /packages.txt && \
|
rpm -qa | sort > /packages.txt && \
|
||||||
@ -137,3 +139,8 @@ ENV LANG "en_US.UTF-8"
|
|||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3.8"
|
ENV PYTHON "/usr/bin/python3.8"
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -61,3 +61,8 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \
|
|||||||
|
|
||||||
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
|
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
|
||||||
ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user
|
ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-alpha-linux-gnu \
|
gcc-alpha-linux-gnu \
|
||||||
libc6.1-dev-alpha-cross
|
libc6.1-dev-alpha-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -168,3 +170,8 @@ ENV ABI "x86_64-linux-gnu"
|
|||||||
ENV MESON_OPTS "--cross-file=x86_64-linux-gnu"
|
ENV MESON_OPTS "--cross-file=x86_64-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user
|
ENV DEF_TARGET_LIST x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -120,13 +120,15 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
systemtap-sdt-dev \
|
systemtap-sdt-dev \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng \
|
tesseract-ocr-eng \
|
||||||
xfslibs-dev \
|
xfslibs-dev \
|
||||||
zlib1g-dev && \
|
zlib1g-dev \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -154,3 +156,8 @@ RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap
|
|||||||
RUN cd /usr/src/netmap && git checkout v11.3
|
RUN cd /usr/src/netmap && git checkout v11.3
|
||||||
RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install
|
RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install
|
||||||
ENV QEMU_CONFIGURE_OPTS --enable-netmap
|
ENV QEMU_CONFIGURE_OPTS --enable-netmap
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -167,3 +169,8 @@ ENV ABI "aarch64-linux-gnu"
|
|||||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST aarch64-softmmu,aarch64-linux-user
|
ENV DEF_TARGET_LIST aarch64-softmmu,aarch64-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -166,3 +168,8 @@ ENV ABI "arm-linux-gnueabi"
|
|||||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
|
||||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
|
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -167,3 +169,8 @@ ENV ABI "arm-linux-gnueabihf"
|
|||||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf-
|
||||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user
|
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -33,3 +33,8 @@ ENV TOOLCHAIN_URL https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-f
|
|||||||
|
|
||||||
RUN curl -#SL "$TOOLCHAIN_URL" | tar -xJC "$TOOLCHAIN_INSTALL"
|
RUN curl -#SL "$TOOLCHAIN_URL" | tar -xJC "$TOOLCHAIN_INSTALL"
|
||||||
ENV PATH $PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin
|
ENV PATH $PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-hppa-linux-gnu \
|
gcc-hppa-linux-gnu \
|
||||||
libc6-dev-hppa-cross
|
libc6-dev-hppa-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -25,3 +25,8 @@ RUN curl -#SL https://github.com/loongson/build-tools/releases/download/2022.05.
|
|||||||
|
|
||||||
ENV PATH $PATH:/opt/cross-tools/bin
|
ENV PATH $PATH:/opt/cross-tools/bin
|
||||||
ENV LD_LIBRARY_PATH /opt/cross-tools/lib:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib:$LD_LIBRARY_PATH
|
ENV LD_LIBRARY_PATH /opt/cross-tools/lib:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib:$LD_LIBRARY_PATH
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-m68k-linux-gnu \
|
gcc-m68k-linux-gnu \
|
||||||
libc6-dev-m68k-cross
|
libc6-dev-m68k-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-mips-linux-gnu \
|
gcc-mips-linux-gnu \
|
||||||
libc6-dev-mips-cross
|
libc6-dev-mips-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-mips64-linux-gnuabi64 \
|
gcc-mips64-linux-gnuabi64 \
|
||||||
libc6-dev-mips64-cross
|
libc6-dev-mips64-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -164,3 +166,8 @@ ENV ABI "mips64el-linux-gnuabi64"
|
|||||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64-
|
||||||
ENV DEF_TARGET_LIST mips64el-softmmu,mips64el-linux-user
|
ENV DEF_TARGET_LIST mips64el-softmmu,mips64el-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -164,3 +166,8 @@ ENV ABI "mipsel-linux-gnu"
|
|||||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST mipsel-softmmu,mipsel-linux-user
|
ENV DEF_TARGET_LIST mipsel-softmmu,mipsel-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -47,3 +47,8 @@ RUN apt update && \
|
|||||||
|
|
||||||
ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS
|
ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS
|
||||||
ENV DEF_TARGET_LIST "none"
|
ENV DEF_TARGET_LIST "none"
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -16,4 +16,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libc6-dev-ppc64-cross \
|
libc6-dev-ppc64-cross \
|
||||||
gcc-10-powerpc64le-linux-gnu \
|
gcc-10-powerpc64le-linux-gnu \
|
||||||
libc6-dev-ppc64el-cross
|
libc6-dev-ppc64el-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -166,3 +168,8 @@ ENV ABI "powerpc64le-linux-gnu"
|
|||||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user
|
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -50,3 +50,8 @@ RUN apt update && \
|
|||||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=riscv64-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=riscv64-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST riscv64-softmmu,riscv64-linux-user
|
ENV DEF_TARGET_LIST riscv64-softmmu,riscv64-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-riscv64-linux-gnu \
|
gcc-riscv64-linux-gnu \
|
||||||
libc6-dev-riscv64-cross
|
libc6-dev-riscv64-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,10 +52,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng && \
|
tesseract-ocr-eng \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -165,3 +167,8 @@ ENV ABI "s390x-linux-gnu"
|
|||||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST s390x-softmmu,s390x-linux-user
|
ENV DEF_TARGET_LIST s390x-softmmu,s390x-linux-user
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-sh4-linux-gnu \
|
gcc-sh4-linux-gnu \
|
||||||
libc6-dev-sh4-cross
|
libc6-dev-sh4-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -12,3 +12,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
eatmydata apt-get install --no-install-recommends -y \
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
gcc-sparc64-linux-gnu \
|
gcc-sparc64-linux-gnu \
|
||||||
libc6-dev-sparc64-cross
|
libc6-dev-sparc64-cross
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -30,7 +30,12 @@ ADD build-toolchain.sh /root/build-toolchain.sh
|
|||||||
RUN cd /root && ./build-toolchain.sh
|
RUN cd /root && ./build-toolchain.sh
|
||||||
|
|
||||||
# Throw away the extra toolchain build deps, the downloaded source,
|
# Throw away the extra toolchain build deps, the downloaded source,
|
||||||
# and the build trees by restoring the original debian10 image,
|
# and the build trees by restoring the original image,
|
||||||
# then copying the built toolchain from stage 0.
|
# then copying the built toolchain from stage 0.
|
||||||
FROM docker.io/library/debian:bullseye-slim
|
FROM docker.io/library/debian:11-slim
|
||||||
COPY --from=0 /usr/local /usr/local
|
COPY --from=0 /usr/local /usr/local
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -20,6 +20,7 @@ RUN apt update && \
|
|||||||
bzip2 \
|
bzip2 \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
ccache \
|
ccache \
|
||||||
|
curl \
|
||||||
flex \
|
flex \
|
||||||
g++ \
|
g++ \
|
||||||
gcc \
|
gcc \
|
||||||
@ -34,14 +35,14 @@ RUN apt update && \
|
|||||||
python3-setuptools \
|
python3-setuptools \
|
||||||
python3-wheel
|
python3-wheel
|
||||||
|
|
||||||
RUN git clone --single-branch \
|
RUN curl -#SL https://github.com/bkoppelmann/package_940/releases/download/tricore-toolchain-9.40/tricore-toolchain-9.4.0.tar.gz \
|
||||||
https://github.com/bkoppelmann/tricore-binutils.git \
|
| tar -xzC /usr/local/
|
||||||
/usr/src/binutils && \
|
|
||||||
cd /usr/src/binutils && chmod +x missing && \
|
|
||||||
CFLAGS=-w ./configure --prefix=/usr/local --disable-nls --target=tricore && \
|
|
||||||
make && make install && \
|
|
||||||
rm -rf /usr/src/binutils
|
|
||||||
|
|
||||||
# This image can only build a very minimal QEMU as well as the tests
|
# This image can only build a very minimal QEMU as well as the tests
|
||||||
ENV DEF_TARGET_LIST tricore-softmmu
|
ENV DEF_TARGET_LIST tricore-softmmu
|
||||||
ENV QEMU_CONFIGURE_OPTS --disable-user --disable-tools --disable-fdt
|
ENV QEMU_CONFIGURE_OPTS --disable-user --disable-tools --disable-fdt
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -27,3 +27,8 @@ RUN for cpu in $CPU_LIST; do \
|
|||||||
done
|
done
|
||||||
|
|
||||||
ENV PATH $PATH:/opt/$TOOLCHAIN_RELEASE/xtensa-dc232b-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-dc233c-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-de233_fpu-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-dsp3400-elf/bin
|
ENV PATH $PATH:/opt/$TOOLCHAIN_RELEASE/xtensa-dc232b-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-dc233c-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-de233_fpu-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-dsp3400-elf/bin
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -6,3 +6,8 @@ FROM registry.fedoraproject.org/fedora:33
|
|||||||
ENV PACKAGES gcc-cris-linux-gnu
|
ENV PACKAGES gcc-cris-linux-gnu
|
||||||
RUN dnf install -y $PACKAGES
|
RUN dnf install -y $PACKAGES
|
||||||
RUN rpm -q $PACKAGES | sort > /packages.txt
|
RUN rpm -q $PACKAGES | sort > /packages.txt
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -32,3 +32,8 @@ ENV PKG_CONFIG_LIBDIR /usr/lib/pkgconfig
|
|||||||
|
|
||||||
RUN dnf update -y && dnf install -y $PACKAGES
|
RUN dnf update -y && dnf install -y $PACKAGES
|
||||||
RUN rpm -q $PACKAGES | sort > /packages.txt
|
RUN rpm -q $PACKAGES | sort > /packages.txt
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,13 +52,15 @@ exec "$@"' > /usr/bin/nosync && \
|
|||||||
python3-sphinx_rtd_theme \
|
python3-sphinx_rtd_theme \
|
||||||
rpm \
|
rpm \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
spice-protocol \
|
spice-protocol \
|
||||||
tar \
|
tar \
|
||||||
tesseract \
|
tesseract \
|
||||||
tesseract-langpack-eng \
|
tesseract-langpack-eng \
|
||||||
util-linux \
|
util-linux \
|
||||||
which && \
|
which \
|
||||||
|
zstd && \
|
||||||
nosync dnf autoremove -y && \
|
nosync dnf autoremove -y && \
|
||||||
nosync dnf clean all -y
|
nosync dnf clean all -y
|
||||||
|
|
||||||
@ -100,3 +102,8 @@ ENV ABI "i686-w64-mingw32"
|
|||||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
|
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=i686-w64-mingw32-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=i686-w64-mingw32-
|
||||||
ENV DEF_TARGET_LIST i386-softmmu
|
ENV DEF_TARGET_LIST i386-softmmu
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -52,13 +52,15 @@ exec "$@"' > /usr/bin/nosync && \
|
|||||||
python3-sphinx_rtd_theme \
|
python3-sphinx_rtd_theme \
|
||||||
rpm \
|
rpm \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
spice-protocol \
|
spice-protocol \
|
||||||
tar \
|
tar \
|
||||||
tesseract \
|
tesseract \
|
||||||
tesseract-langpack-eng \
|
tesseract-langpack-eng \
|
||||||
util-linux \
|
util-linux \
|
||||||
which && \
|
which \
|
||||||
|
zstd && \
|
||||||
nosync dnf autoremove -y && \
|
nosync dnf autoremove -y && \
|
||||||
nosync dnf clean all -y
|
nosync dnf clean all -y
|
||||||
|
|
||||||
@ -100,3 +102,8 @@ ENV ABI "x86_64-w64-mingw32"
|
|||||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
|
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32-
|
||||||
ENV DEF_TARGET_LIST x86_64-softmmu
|
ENV DEF_TARGET_LIST x86_64-softmmu
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -113,6 +113,7 @@ exec "$@"' > /usr/bin/nosync && \
|
|||||||
rpm \
|
rpm \
|
||||||
sed \
|
sed \
|
||||||
snappy-devel \
|
snappy-devel \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
spice-protocol \
|
spice-protocol \
|
||||||
spice-server-devel \
|
spice-server-devel \
|
||||||
@ -129,7 +130,8 @@ exec "$@"' > /usr/bin/nosync && \
|
|||||||
xen-devel \
|
xen-devel \
|
||||||
xfsprogs-devel \
|
xfsprogs-devel \
|
||||||
zlib-devel \
|
zlib-devel \
|
||||||
zlib-static && \
|
zlib-static \
|
||||||
|
zstd && \
|
||||||
nosync dnf autoremove -y && \
|
nosync dnf autoremove -y && \
|
||||||
nosync dnf clean all -y && \
|
nosync dnf clean all -y && \
|
||||||
rpm -qa | sort > /packages.txt && \
|
rpm -qa | sort > /packages.txt && \
|
||||||
@ -145,3 +147,8 @@ ENV LANG "en_US.UTF-8"
|
|||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
ENV PYTHON "/usr/bin/python3"
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -97,6 +97,7 @@ RUN zypper update -y && \
|
|||||||
sed \
|
sed \
|
||||||
snappy-devel \
|
snappy-devel \
|
||||||
sndio-devel \
|
sndio-devel \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
spice-protocol-devel \
|
spice-protocol-devel \
|
||||||
systemd-devel \
|
systemd-devel \
|
||||||
@ -112,7 +113,8 @@ RUN zypper update -y && \
|
|||||||
xen-devel \
|
xen-devel \
|
||||||
xfsprogs-devel \
|
xfsprogs-devel \
|
||||||
zlib-devel \
|
zlib-devel \
|
||||||
zlib-devel-static && \
|
zlib-devel-static \
|
||||||
|
zstd && \
|
||||||
zypper clean --all && \
|
zypper clean --all && \
|
||||||
rpm -qa | sort > /packages.txt && \
|
rpm -qa | sort > /packages.txt && \
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||||
@ -134,3 +136,8 @@ ENV LANG "en_US.UTF-8"
|
|||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3.9"
|
ENV PYTHON "/usr/bin/python3.9"
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -15,3 +15,8 @@ ENV PACKAGES \
|
|||||||
|
|
||||||
RUN dnf install -y $PACKAGES
|
RUN dnf install -y $PACKAGES
|
||||||
RUN rpm -q $PACKAGES | sort > /packages.txt
|
RUN rpm -q $PACKAGES | sort > /packages.txt
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
@ -119,13 +119,15 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
python3-yaml \
|
python3-yaml \
|
||||||
rpm2cpio \
|
rpm2cpio \
|
||||||
sed \
|
sed \
|
||||||
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
systemtap-sdt-dev \
|
systemtap-sdt-dev \
|
||||||
tar \
|
tar \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng \
|
tesseract-ocr-eng \
|
||||||
xfslibs-dev \
|
xfslibs-dev \
|
||||||
zlib1g-dev && \
|
zlib1g-dev \
|
||||||
|
zstd && \
|
||||||
eatmydata apt-get autoremove -y && \
|
eatmydata apt-get autoremove -y && \
|
||||||
eatmydata apt-get autoclean -y && \
|
eatmydata apt-get autoclean -y && \
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
@ -145,6 +147,8 @@ ENV LANG "en_US.UTF-8"
|
|||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
ENV PYTHON "/usr/bin/python3"
|
||||||
# Apply patch https://reviews.llvm.org/D75820
|
# As a final step configure the user (if env is defined)
|
||||||
# This is required for TSan in clang-10 to compile with QEMU.
|
ARG USER
|
||||||
RUN sed -i 's/^const/static const/g' /usr/lib/llvm-10/lib/clang/10.0.0/include/sanitizer/tsan_interface.h
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||||
|
153
tests/docker/dockerfiles/ubuntu2204.docker
Normal file
153
tests/docker/dockerfiles/ubuntu2204.docker
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
# THIS FILE WAS AUTO-GENERATED
|
||||||
|
#
|
||||||
|
# $ lcitool dockerfile --layers all ubuntu-2204 qemu
|
||||||
|
#
|
||||||
|
# https://gitlab.com/libvirt/libvirt-ci
|
||||||
|
|
||||||
|
FROM docker.io/library/ubuntu:22.04
|
||||||
|
|
||||||
|
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y eatmydata && \
|
||||||
|
eatmydata apt-get dist-upgrade -y && \
|
||||||
|
eatmydata apt-get install --no-install-recommends -y \
|
||||||
|
bash \
|
||||||
|
bc \
|
||||||
|
bison \
|
||||||
|
bsdextrautils \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
ccache \
|
||||||
|
clang \
|
||||||
|
dbus \
|
||||||
|
debianutils \
|
||||||
|
diffutils \
|
||||||
|
exuberant-ctags \
|
||||||
|
findutils \
|
||||||
|
flex \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
gcovr \
|
||||||
|
genisoimage \
|
||||||
|
gettext \
|
||||||
|
git \
|
||||||
|
hostname \
|
||||||
|
libaio-dev \
|
||||||
|
libasan5 \
|
||||||
|
libasound2-dev \
|
||||||
|
libattr1-dev \
|
||||||
|
libbpf-dev \
|
||||||
|
libbrlapi-dev \
|
||||||
|
libbz2-dev \
|
||||||
|
libc6-dev \
|
||||||
|
libcacard-dev \
|
||||||
|
libcap-ng-dev \
|
||||||
|
libcapstone-dev \
|
||||||
|
libcmocka-dev \
|
||||||
|
libcurl4-gnutls-dev \
|
||||||
|
libdaxctl-dev \
|
||||||
|
libdrm-dev \
|
||||||
|
libepoxy-dev \
|
||||||
|
libfdt-dev \
|
||||||
|
libffi-dev \
|
||||||
|
libfuse3-dev \
|
||||||
|
libgbm-dev \
|
||||||
|
libgcrypt20-dev \
|
||||||
|
libglib2.0-dev \
|
||||||
|
libglusterfs-dev \
|
||||||
|
libgnutls28-dev \
|
||||||
|
libgtk-3-dev \
|
||||||
|
libibumad-dev \
|
||||||
|
libibverbs-dev \
|
||||||
|
libiscsi-dev \
|
||||||
|
libjemalloc-dev \
|
||||||
|
libjpeg-turbo8-dev \
|
||||||
|
libjson-c-dev \
|
||||||
|
liblttng-ust-dev \
|
||||||
|
liblzo2-dev \
|
||||||
|
libncursesw5-dev \
|
||||||
|
libnfs-dev \
|
||||||
|
libnuma-dev \
|
||||||
|
libpam0g-dev \
|
||||||
|
libpcre2-dev \
|
||||||
|
libpixman-1-dev \
|
||||||
|
libpmem-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libpulse-dev \
|
||||||
|
librbd-dev \
|
||||||
|
librdmacm-dev \
|
||||||
|
libsasl2-dev \
|
||||||
|
libsdl2-dev \
|
||||||
|
libsdl2-image-dev \
|
||||||
|
libseccomp-dev \
|
||||||
|
libselinux1-dev \
|
||||||
|
libslirp-dev \
|
||||||
|
libsnappy-dev \
|
||||||
|
libsndio-dev \
|
||||||
|
libspice-protocol-dev \
|
||||||
|
libspice-server-dev \
|
||||||
|
libssh-dev \
|
||||||
|
libsystemd-dev \
|
||||||
|
libtasn1-6-dev \
|
||||||
|
libubsan1 \
|
||||||
|
libudev-dev \
|
||||||
|
liburing-dev \
|
||||||
|
libusb-1.0-0-dev \
|
||||||
|
libusbredirhost-dev \
|
||||||
|
libvdeplug-dev \
|
||||||
|
libvirglrenderer-dev \
|
||||||
|
libvte-2.91-dev \
|
||||||
|
libxen-dev \
|
||||||
|
libzstd-dev \
|
||||||
|
llvm \
|
||||||
|
locales \
|
||||||
|
make \
|
||||||
|
meson \
|
||||||
|
multipath-tools \
|
||||||
|
ncat \
|
||||||
|
nettle-dev \
|
||||||
|
ninja-build \
|
||||||
|
openssh-client \
|
||||||
|
pkgconf \
|
||||||
|
python3 \
|
||||||
|
python3-numpy \
|
||||||
|
python3-opencv \
|
||||||
|
python3-pillow \
|
||||||
|
python3-pip \
|
||||||
|
python3-sphinx \
|
||||||
|
python3-sphinx-rtd-theme \
|
||||||
|
python3-venv \
|
||||||
|
python3-yaml \
|
||||||
|
rpm2cpio \
|
||||||
|
sed \
|
||||||
|
socat \
|
||||||
|
sparse \
|
||||||
|
systemtap-sdt-dev \
|
||||||
|
tar \
|
||||||
|
tesseract-ocr \
|
||||||
|
tesseract-ocr-eng \
|
||||||
|
xfslibs-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
zstd && \
|
||||||
|
eatmydata apt-get autoremove -y && \
|
||||||
|
eatmydata apt-get autoclean -y && \
|
||||||
|
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||||
|
dpkg-reconfigure locales && \
|
||||||
|
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||||
|
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||||
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
|
||||||
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
||||||
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
||||||
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||||
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||||
|
|
||||||
|
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||||
|
ENV LANG "en_US.UTF-8"
|
||||||
|
ENV MAKE "/usr/bin/make"
|
||||||
|
ENV NINJA "/usr/bin/ninja"
|
||||||
|
ENV PYTHON "/usr/bin/python3"
|
||||||
|
# As a final step configure the user (if env is defined)
|
||||||
|
ARG USER
|
||||||
|
ARG UID
|
||||||
|
RUN if [ "${USER}" ]; then \
|
||||||
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
@ -21,7 +21,7 @@ setup_tsan()
|
|||||||
tsan_log_dir="/tmp/qemu-test/build/tsan"
|
tsan_log_dir="/tmp/qemu-test/build/tsan"
|
||||||
mkdir -p $tsan_log_dir > /dev/null || true
|
mkdir -p $tsan_log_dir > /dev/null || true
|
||||||
EXTRA_CONFIGURE_OPTS="${EXTRA_CONFIGURE_OPTS} --enable-tsan \
|
EXTRA_CONFIGURE_OPTS="${EXTRA_CONFIGURE_OPTS} --enable-tsan \
|
||||||
--cc=clang-10 --cxx=clang++-10 \
|
--cc=clang --cxx=clang++ \
|
||||||
--disable-werror --extra-cflags=-O0"
|
--disable-werror --extra-cflags=-O0"
|
||||||
# detect deadlocks is false currently simply because
|
# detect deadlocks is false currently simply because
|
||||||
# TSan crashes immediately with deadlock detector enabled.
|
# TSan crashes immediately with deadlock detector enabled.
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 5a59dcec19327396a011a17fd924aed4fec416b3
|
Subproject commit 40619cbb3bf32872df8c53cc457039229428a263
|
@ -106,7 +106,8 @@ static const char commands_string[] =
|
|||||||
" -l = thoroughness level (1 (default), 2)\n"
|
" -l = thoroughness level (1 (default), 2)\n"
|
||||||
" -r = rounding mode (even (default), zero, down, up, tieaway, odd)\n"
|
" -r = rounding mode (even (default), zero, down, up, tieaway, odd)\n"
|
||||||
" Set to 'all' to test all rounding modes, if applicable\n"
|
" Set to 'all' to test all rounding modes, if applicable\n"
|
||||||
" -s = stop when a test fails";
|
" -s = stop when a test fails\n"
|
||||||
|
" -q = minimise noise when testing, just show each function being tested";
|
||||||
|
|
||||||
static void usage_complete(int argc, char *argv[])
|
static void usage_complete(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -190,9 +191,11 @@ static void do_testfloat(int op, int rmode, bool exact)
|
|||||||
ab_f128M_z_bool true_ab_f128M_z_bool;
|
ab_f128M_z_bool true_ab_f128M_z_bool;
|
||||||
ab_f128M_z_bool subj_ab_f128M_z_bool;
|
ab_f128M_z_bool subj_ab_f128M_z_bool;
|
||||||
|
|
||||||
fputs(">> Testing ", stderr);
|
if (verCases_verbosity) {
|
||||||
verCases_writeFunctionName(stderr);
|
fputs(">> Testing ", stderr);
|
||||||
fputs("\n", stderr);
|
verCases_writeFunctionName(stderr);
|
||||||
|
fputs("\n", stderr);
|
||||||
|
}
|
||||||
|
|
||||||
if (!is_allowed(op, rmode)) {
|
if (!is_allowed(op, rmode)) {
|
||||||
not_implemented();
|
not_implemented();
|
||||||
@ -837,7 +840,7 @@ static void parse_args(int argc, char *argv[])
|
|||||||
int c;
|
int c;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
c = getopt(argc, argv, "he:f:l:r:s");
|
c = getopt(argc, argv, "he:f:l:r:sq");
|
||||||
if (c < 0) {
|
if (c < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -874,9 +877,15 @@ static void parse_args(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/*
|
||||||
|
* The following flags are declared in testfloat/source/verCases_common.c
|
||||||
|
*/
|
||||||
case 's':
|
case 's':
|
||||||
verCases_errorStop = true;
|
verCases_errorStop = true;
|
||||||
break;
|
break;
|
||||||
|
case 'q':
|
||||||
|
verCases_verbosity = 0;
|
||||||
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
/* invalid option or missing argument; getopt prints error info */
|
/* invalid option or missing argument; getopt prints error info */
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -609,7 +609,7 @@ softfloat_tests = {
|
|||||||
# The full test suite can take a bit of time, default to a quick run
|
# The full test suite can take a bit of time, default to a quick run
|
||||||
# "-l 2 -r all" can take more than a day for some operations and is best
|
# "-l 2 -r all" can take more than a day for some operations and is best
|
||||||
# run manually
|
# run manually
|
||||||
fptest_args = ['-s', '-l', '1']
|
fptest_args = ['-q', '-s', '-l', '1']
|
||||||
fptest_rounding_args = ['-r', 'all']
|
fptest_rounding_args = ['-r', 'all']
|
||||||
|
|
||||||
# Conversion Routines:
|
# Conversion Routines:
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 1c3e16cae38407d0782dc94080d1104106456fa4
|
Subproject commit 232f41f160d4567b8c82dd52aa96c2bc3a5b75c1
|
@ -101,6 +101,7 @@ packages:
|
|||||||
- sed
|
- sed
|
||||||
- snappy
|
- snappy
|
||||||
- sndio
|
- sndio
|
||||||
|
- socat
|
||||||
- sparse
|
- sparse
|
||||||
- spice-protocol
|
- spice-protocol
|
||||||
- spice-server
|
- spice-server
|
||||||
@ -115,5 +116,6 @@ packages:
|
|||||||
- which
|
- which
|
||||||
- xen
|
- xen
|
||||||
- xfsprogs
|
- xfsprogs
|
||||||
|
- zstdtools
|
||||||
- zlib
|
- zlib
|
||||||
- zlib-static
|
- zlib-static
|
||||||
|
@ -53,6 +53,15 @@ def generate(filename, cmd, trailer):
|
|||||||
content += trailer
|
content += trailer
|
||||||
atomic_write(filename, content)
|
atomic_write(filename, content)
|
||||||
|
|
||||||
|
# Optional user setting, this will always be the last thing added
|
||||||
|
# so maximise the number of layers that are cached
|
||||||
|
add_user_mapping = [
|
||||||
|
"# As a final step configure the user (if env is defined)",
|
||||||
|
"ARG USER",
|
||||||
|
"ARG UID",
|
||||||
|
"RUN if [ \"${USER}\" ]; then \\",
|
||||||
|
" id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi\n"
|
||||||
|
]
|
||||||
|
|
||||||
def generate_dockerfile(host, target, cross=None, trailer=None):
|
def generate_dockerfile(host, target, cross=None, trailer=None):
|
||||||
filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker")
|
filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker")
|
||||||
@ -60,6 +69,12 @@ def generate_dockerfile(host, target, cross=None, trailer=None):
|
|||||||
if cross is not None:
|
if cross is not None:
|
||||||
cmd.extend(["--cross", cross])
|
cmd.extend(["--cross", cross])
|
||||||
cmd.extend([target, "qemu"])
|
cmd.extend([target, "qemu"])
|
||||||
|
|
||||||
|
if trailer is not None:
|
||||||
|
trailer += "\n".join(add_user_mapping)
|
||||||
|
else:
|
||||||
|
trailer = "\n".join(add_user_mapping)
|
||||||
|
|
||||||
generate(filename, cmd, trailer)
|
generate(filename, cmd, trailer)
|
||||||
|
|
||||||
|
|
||||||
@ -69,13 +84,6 @@ def generate_cirrus(target, trailer=None):
|
|||||||
generate(filename, cmd, trailer)
|
generate(filename, cmd, trailer)
|
||||||
|
|
||||||
|
|
||||||
ubuntu2004_tsanhack = [
|
|
||||||
"# Apply patch https://reviews.llvm.org/D75820\n",
|
|
||||||
"# This is required for TSan in clang-10 to compile with QEMU.\n",
|
|
||||||
"RUN sed -i 's/^const/static const/g' /usr/lib/llvm-10/lib/clang/10.0.0/include/sanitizer/tsan_interface.h\n"
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# Netmap still needs to be manually built as it is yet to be packaged
|
# Netmap still needs to be manually built as it is yet to be packaged
|
||||||
# into a distro. We also add cscope and gtags which are used in the CI
|
# into a distro. We also add cscope and gtags which are used in the CI
|
||||||
# test
|
# test
|
||||||
@ -113,8 +121,8 @@ try:
|
|||||||
trailer="".join(debian11_extras))
|
trailer="".join(debian11_extras))
|
||||||
generate_dockerfile("fedora", "fedora-37")
|
generate_dockerfile("fedora", "fedora-37")
|
||||||
generate_dockerfile("opensuse-leap", "opensuse-leap-153")
|
generate_dockerfile("opensuse-leap", "opensuse-leap-153")
|
||||||
generate_dockerfile("ubuntu2004", "ubuntu-2004",
|
generate_dockerfile("ubuntu2004", "ubuntu-2004")
|
||||||
trailer="".join(ubuntu2004_tsanhack))
|
generate_dockerfile("ubuntu2204", "ubuntu-2204")
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cross compiling builds
|
# Cross compiling builds
|
||||||
|
@ -112,12 +112,12 @@ static void test_lsi_do_dma_empty_queue(void)
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
g_test_init(&argc, &argv, NULL);
|
||||||
|
|
||||||
if (!qtest_has_device("lsi53c895a")) {
|
if (!qtest_has_device("lsi53c895a")) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_test_init(&argc, &argv, NULL);
|
|
||||||
|
|
||||||
qtest_add_func("fuzz/lsi53c895a/lsi_do_dma_empty_queue",
|
qtest_add_func("fuzz/lsi53c895a/lsi_do_dma_empty_queue",
|
||||||
test_lsi_do_dma_empty_queue);
|
test_lsi_do_dma_empty_queue);
|
||||||
|
|
||||||
|
@ -207,9 +207,10 @@ int main(int argc, char **argv)
|
|||||||
verbosity_level = atoi(v_env);
|
verbosity_level = atoi(v_env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_test_init(&argc, &argv, NULL);
|
||||||
|
|
||||||
qtest_start("-device rtl8139");
|
qtest_start("-device rtl8139");
|
||||||
|
|
||||||
g_test_init(&argc, &argv, NULL);
|
|
||||||
qtest_add_func("/rtl8139/nop", nop);
|
qtest_add_func("/rtl8139/nop", nop);
|
||||||
qtest_add_func("/rtl8139/timer", test_init);
|
qtest_add_func("/rtl8139/timer", test_init);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
TESTS_PATH = $(SRC_PATH)/tests/tcg/tricore
|
TESTS_PATH = $(SRC_PATH)/tests/tcg/tricore
|
||||||
|
|
||||||
LDFLAGS = -T$(TESTS_PATH)/link.ld
|
LDFLAGS = -T$(TESTS_PATH)/link.ld --mcpu=tc162
|
||||||
ASFLAGS =
|
ASFLAGS = -mtc162
|
||||||
|
|
||||||
TESTS += test_abs.tst
|
TESTS += test_abs.tst
|
||||||
TESTS += test_bmerge.tst
|
TESTS += test_bmerge.tst
|
||||||
@ -19,7 +19,7 @@ TESTS += test_madd.tst
|
|||||||
TESTS += test_msub.tst
|
TESTS += test_msub.tst
|
||||||
TESTS += test_muls.tst
|
TESTS += test_muls.tst
|
||||||
|
|
||||||
QEMU_OPTS += -M tricore_testboard -nographic -kernel
|
QEMU_OPTS += -M tricore_testboard -cpu tc27x -nographic -kernel
|
||||||
|
|
||||||
%.pS: $(TESTS_PATH)/%.S
|
%.pS: $(TESTS_PATH)/%.S
|
||||||
$(HOST_CC) -E -o $@ $<
|
$(HOST_CC) -E -o $@ $<
|
||||||
|
@ -174,7 +174,7 @@ test_ ## num: \
|
|||||||
TEST_CASE_E(num, res_lo, res_hi, \
|
TEST_CASE_E(num, res_lo, res_hi, \
|
||||||
LI(DREG_RS1, rs1); \
|
LI(DREG_RS1, rs1); \
|
||||||
rstv; \
|
rstv; \
|
||||||
insn EREG_CALC_RESULT, imm1, DREG_RS1, imm2); \
|
insn EREG_CALC_RESULT, imm1, DREG_RS1, imm2; \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
static char *socat = NULL;
|
static char *socat = NULL;
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if !defined(_WIN32) && !defined(CONFIG_DARWIN)
|
||||||
static void test_io_channel_command_fifo(bool async)
|
static void test_io_channel_command_fifo(bool async)
|
||||||
{
|
{
|
||||||
g_autofree gchar *tmpdir = g_dir_make_tmp("qemu-test-io-channel.XXXXXX", NULL);
|
g_autofree gchar *tmpdir = g_dir_make_tmp("qemu-test-io-channel.XXXXXX", NULL);
|
||||||
@ -42,6 +42,7 @@ static void test_io_channel_command_fifo(bool async)
|
|||||||
g_auto(GStrv) dstargv = g_strsplit(dstargs, " ", -1);
|
g_auto(GStrv) dstargv = g_strsplit(dstargs, " ", -1);
|
||||||
QIOChannel *src, *dst;
|
QIOChannel *src, *dst;
|
||||||
QIOChannelTest *test;
|
QIOChannelTest *test;
|
||||||
|
int err;
|
||||||
|
|
||||||
if (mkfifo(fifo, 0600)) {
|
if (mkfifo(fifo, 0600)) {
|
||||||
g_error("mkfifo: %s", strerror(errno));
|
g_error("mkfifo: %s", strerror(errno));
|
||||||
@ -61,7 +62,10 @@ static void test_io_channel_command_fifo(bool async)
|
|||||||
object_unref(OBJECT(src));
|
object_unref(OBJECT(src));
|
||||||
object_unref(OBJECT(dst));
|
object_unref(OBJECT(dst));
|
||||||
|
|
||||||
g_rmdir(tmpdir);
|
err = g_unlink(fifo);
|
||||||
|
g_assert(err == 0);
|
||||||
|
err = g_rmdir(tmpdir);
|
||||||
|
g_assert(err == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_io_channel_command_fifo_async(void)
|
static void test_io_channel_command_fifo_async(void)
|
||||||
@ -128,7 +132,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
socat = g_find_program_in_path("socat");
|
socat = g_find_program_in_path("socat");
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if !defined(_WIN32) && !defined(CONFIG_DARWIN)
|
||||||
g_test_add_func("/io/channel/command/fifo/sync",
|
g_test_add_func("/io/channel/command/fifo/sync",
|
||||||
test_io_channel_command_fifo_sync);
|
test_io_channel_command_fifo_sync);
|
||||||
g_test_add_func("/io/channel/command/fifo/async",
|
g_test_add_func("/io/channel/command/fifo/async",
|
||||||
|
Loading…
Reference in New Issue
Block a user