tests/docker: expand opensuse-leap package list
[qemu.git] / .gitlab-ci.d / buildtest.yml
blobd9b834c8483bde0c32706142d39495f2efec4167
1 include:
2   - local: '/.gitlab-ci.d/buildtest-template.yml'
4 build-system-alpine:
5   extends: .native_build_job_template
6   needs:
7     - job: amd64-alpine-container
8   variables:
9     IMAGE: alpine
10     TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
11       microblazeel-softmmu mips64el-softmmu
12     MAKE_CHECK_ARGS: check-build
13     CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
14   artifacts:
15     expire_in: 2 days
16     paths:
17       - .git-submodule-status
18       - build
20 check-system-alpine:
21   extends: .native_test_job_template
22   needs:
23     - job: build-system-alpine
24       artifacts: true
25   variables:
26     IMAGE: alpine
27     MAKE_CHECK_ARGS: check
29 acceptance-system-alpine:
30   extends: .acceptance_test_job_template
31   needs:
32     - job: build-system-alpine
33       artifacts: true
34   variables:
35     IMAGE: alpine
36     MAKE_CHECK_ARGS: check-acceptance
38 build-system-ubuntu:
39   extends: .native_build_job_template
40   needs:
41     job: amd64-ubuntu2004-container
42   variables:
43     IMAGE: ubuntu2004
44     CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
45     TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
46       microblazeel-softmmu mips64el-softmmu
47     MAKE_CHECK_ARGS: check-build
48   artifacts:
49     expire_in: 2 days
50     paths:
51       - build
53 check-system-ubuntu:
54   extends: .native_test_job_template
55   needs:
56     - job: build-system-ubuntu
57       artifacts: true
58   variables:
59     IMAGE: ubuntu2004
60     MAKE_CHECK_ARGS: check
62 acceptance-system-ubuntu:
63   extends: .acceptance_test_job_template
64   needs:
65     - job: build-system-ubuntu
66       artifacts: true
67   variables:
68     IMAGE: ubuntu2004
69     MAKE_CHECK_ARGS: check-acceptance
71 build-system-debian:
72   extends: .native_build_job_template
73   needs:
74     job: amd64-debian-container
75   variables:
76     IMAGE: debian-amd64
77     CONFIGURE_ARGS: --enable-fdt=system
78     TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
79       riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
80     MAKE_CHECK_ARGS: check-build
81   artifacts:
82     expire_in: 2 days
83     paths:
84       - build
86 check-system-debian:
87   extends: .native_test_job_template
88   needs:
89     - job: build-system-debian
90       artifacts: true
91   variables:
92     IMAGE: debian-amd64
93     MAKE_CHECK_ARGS: check
95 acceptance-system-debian:
96   extends: .acceptance_test_job_template
97   needs:
98     - job: build-system-debian
99       artifacts: true
100   variables:
101     IMAGE: debian-amd64
102     MAKE_CHECK_ARGS: check-acceptance
104 build-system-fedora:
105   extends: .native_build_job_template
106   needs:
107     job: amd64-fedora-container
108   variables:
109     IMAGE: fedora
110     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
111              --enable-fdt=system --enable-slirp=system --enable-capstone=system
112     TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
113       xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
114     MAKE_CHECK_ARGS: check-build
115   artifacts:
116     expire_in: 2 days
117     paths:
118       - build
120 check-system-fedora:
121   extends: .native_test_job_template
122   needs:
123     - job: build-system-fedora
124       artifacts: true
125   variables:
126     IMAGE: fedora
127     MAKE_CHECK_ARGS: check
129 acceptance-system-fedora:
130   extends: .acceptance_test_job_template
131   needs:
132     - job: build-system-fedora
133       artifacts: true
134   variables:
135     IMAGE: fedora
136     MAKE_CHECK_ARGS: check-acceptance
138 build-system-centos:
139   extends: .native_build_job_template
140   needs:
141     job: amd64-centos8-container
142   variables:
143     IMAGE: centos8
144     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
145                     --enable-modules --enable-trace-backends=dtrace
146     TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
147       x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
148     MAKE_CHECK_ARGS: check-build
149   artifacts:
150     expire_in: 2 days
151     paths:
152       - build
154 check-system-centos:
155   extends: .native_test_job_template
156   needs:
157     - job: build-system-centos
158       artifacts: true
159   variables:
160     IMAGE: centos8
161     MAKE_CHECK_ARGS: check
163 acceptance-system-centos:
164   extends: .acceptance_test_job_template
165   needs:
166     - job: build-system-centos
167       artifacts: true
168   variables:
169     IMAGE: centos8
170     MAKE_CHECK_ARGS: check-acceptance
172 build-system-opensuse:
173   extends: .native_build_job_template
174   needs:
175     job: amd64-opensuse-leap-container
176   variables:
177     IMAGE: opensuse-leap
178     CONFIGURE_ARGS: --enable-fdt=system
179     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
180     MAKE_CHECK_ARGS: check-build
181   artifacts:
182     expire_in: 2 days
183     paths:
184       - build
186 check-system-opensuse:
187   extends: .native_test_job_template
188   needs:
189     - job: build-system-opensuse
190       artifacts: true
191   variables:
192     IMAGE: opensuse-leap
193     MAKE_CHECK_ARGS: check
195 acceptance-system-opensuse:
196   extends: .acceptance_test_job_template
197   needs:
198     - job: build-system-opensuse
199       artifacts: true
200   variables:
201     IMAGE: opensuse-leap
202     MAKE_CHECK_ARGS: check-acceptance
205 build-disabled:
206   extends: .native_build_job_template
207   needs:
208     job: amd64-fedora-container
209   variables:
210     IMAGE: fedora
211     CONFIGURE_ARGS:
212       --disable-attr
213       --disable-auth-pam
214       --disable-avx2
215       --disable-bochs
216       --disable-brlapi
217       --disable-bzip2
218       --disable-cap-ng
219       --disable-capstone
220       --disable-cloop
221       --disable-coroutine-pool
222       --disable-curl
223       --disable-curses
224       --disable-dmg
225       --disable-docs
226       --disable-gcrypt
227       --disable-glusterfs
228       --disable-gnutls
229       --disable-gtk
230       --disable-guest-agent
231       --disable-iconv
232       --disable-keyring
233       --disable-kvm
234       --disable-libiscsi
235       --disable-libpmem
236       --disable-libssh
237       --disable-libudev
238       --disable-libusb
239       --disable-libxml2
240       --disable-linux-aio
241       --disable-live-block-migration
242       --disable-lzo
243       --disable-malloc-trim
244       --disable-mpath
245       --disable-nettle
246       --disable-numa
247       --disable-opengl
248       --disable-parallels
249       --disable-pie
250       --disable-qcow1
251       --disable-qed
252       --disable-qom-cast-debug
253       --disable-rbd
254       --disable-rdma
255       --disable-replication
256       --disable-sdl
257       --disable-seccomp
258       --disable-slirp
259       --disable-smartcard
260       --disable-snappy
261       --disable-sparse
262       --disable-spice
263       --disable-strip
264       --disable-tpm
265       --disable-usb-redir
266       --disable-vdi
267       --disable-vhost-crypto
268       --disable-vhost-net
269       --disable-vhost-scsi
270       --disable-vhost-kernel
271       --disable-vhost-user
272       --disable-vhost-vdpa
273       --disable-vhost-vsock
274       --disable-virglrenderer
275       --disable-vnc
276       --disable-vte
277       --disable-vvfat
278       --disable-xen
279       --disable-zstd
280     TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
281       s390x-softmmu i386-linux-user
282     MAKE_CHECK_ARGS: check-qtest SPEED=slow
284 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
285 # the configure script. The container doesn't contain Xen headers so
286 # Xen accelerator is not detected / selected. As result it build the
287 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
288 # available.
289 # Also use a different coroutine implementation (which is only really of
290 # interest to KVM users, i.e. with TCG disabled)
291 build-tcg-disabled:
292   extends: .native_build_job_template
293   needs:
294     job: amd64-centos8-container
295   variables:
296     IMAGE: centos8
297   script:
298     - mkdir build
299     - cd build
300     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
301       || { cat config.log meson-logs/meson-log.txt && exit 1; }
302     - make -j"$JOBS"
303     - make check-unit
304     - make check-qapi-schema
305     - cd tests/qemu-iotests/
306     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
307             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
308             170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
309     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
310             124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
311             208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
312             260 261 262 263 264 270 272 273 277 279
314 build-user:
315   extends: .native_build_job_template
316   needs:
317     job: amd64-debian-user-cross-container
318   variables:
319     IMAGE: debian-all-test-cross
320     CONFIGURE_ARGS: --disable-tools --disable-system
321     MAKE_CHECK_ARGS: check-tcg
323 build-user-static:
324   extends: .native_build_job_template
325   needs:
326     job: amd64-debian-user-cross-container
327   variables:
328     IMAGE: debian-all-test-cross
329     CONFIGURE_ARGS: --disable-tools --disable-system --static
330     MAKE_CHECK_ARGS: check-tcg
332 # Because the hexagon cross-compiler takes so long to build we don't rely
333 # on the CI system to build it and hence this job has an optional dependency
334 # declared. The image is manually uploaded.
335 build-user-hexagon:
336   extends: .native_build_job_template
337   needs:
338     job: hexagon-cross-container
339     optional: true
340   variables:
341     IMAGE: debian-hexagon-cross
342     TARGETS: hexagon-linux-user
343     CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
344     MAKE_CHECK_ARGS: check-tcg
346 # Only build the softmmu targets we have check-tcg tests for
347 build-some-softmmu:
348   extends: .native_build_job_template
349   needs:
350     job: amd64-debian-user-cross-container
351   variables:
352     IMAGE: debian-all-test-cross
353     CONFIGURE_ARGS: --disable-tools --enable-debug
354     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
355     MAKE_CHECK_ARGS: check-tcg
357 # Run check-tcg against linux-user (with plugins)
358 # we skip sparc64-linux-user until it has been fixed somewhat
359 # we skip cris-linux-user as it doesn't use the common run loop
360 build-user-plugins:
361   extends: .native_build_job_template
362   needs:
363     job: amd64-debian-user-cross-container
364   variables:
365     IMAGE: debian-all-test-cross
366     CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
367     MAKE_CHECK_ARGS: check-tcg
368   timeout: 1h 30m
370 build-some-softmmu-plugins:
371   extends: .native_build_job_template
372   needs:
373     job: amd64-debian-user-cross-container
374   variables:
375     IMAGE: debian-all-test-cross
376     CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
377     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
378     MAKE_CHECK_ARGS: check-tcg
380 clang-system:
381   extends: .native_build_job_template
382   needs:
383     job: amd64-fedora-container
384   variables:
385     IMAGE: fedora
386     CONFIGURE_ARGS: --cc=clang --cxx=clang++
387       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
388     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
389       ppc-softmmu s390x-softmmu
390     MAKE_CHECK_ARGS: check-qtest check-tcg
392 clang-user:
393   extends: .native_build_job_template
394   needs:
395     job: amd64-debian-user-cross-container
396   variables:
397     IMAGE: debian-all-test-cross
398     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
399       --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
400       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
401     MAKE_CHECK_ARGS: check-unit check-tcg
403 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
404 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
405 # triggers an Out-Of-Memory error
407 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
408 # with QEMU and linked as a static library to avoid false positives in CFI checks.
409 # This can be accomplished by using -enable-slirp=git, which avoids the use of
410 # a system-wide version of the library
412 # Split in three sets of build/check/acceptance to limit the execution time of each
413 # job
414 build-cfi-aarch64:
415   extends: .native_build_job_template
416   needs:
417   - job: amd64-fedora-container
418   variables:
419     LD_JOBS: 1
420     AR: llvm-ar
421     IMAGE: fedora
422     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
423       --enable-safe-stack --enable-slirp=git
424     TARGETS: aarch64-softmmu
425     MAKE_CHECK_ARGS: check-build
426   timeout: 70m
427   artifacts:
428     expire_in: 2 days
429     paths:
430       - build
432 check-cfi-aarch64:
433   extends: .native_test_job_template
434   needs:
435     - job: build-cfi-aarch64
436       artifacts: true
437   variables:
438     IMAGE: fedora
439     MAKE_CHECK_ARGS: check
441 acceptance-cfi-aarch64:
442   extends: .acceptance_test_job_template
443   needs:
444     - job: build-cfi-aarch64
445       artifacts: true
446   variables:
447     IMAGE: fedora
448     MAKE_CHECK_ARGS: check-acceptance
450 build-cfi-ppc64-s390x:
451   extends: .native_build_job_template
452   needs:
453   - job: amd64-fedora-container
454   variables:
455     LD_JOBS: 1
456     AR: llvm-ar
457     IMAGE: fedora
458     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
459       --enable-safe-stack --enable-slirp=git
460     TARGETS: ppc64-softmmu s390x-softmmu
461     MAKE_CHECK_ARGS: check-build
462   timeout: 70m
463   artifacts:
464     expire_in: 2 days
465     paths:
466       - build
468 check-cfi-ppc64-s390x:
469   extends: .native_test_job_template
470   needs:
471     - job: build-cfi-ppc64-s390x
472       artifacts: true
473   variables:
474     IMAGE: fedora
475     MAKE_CHECK_ARGS: check
477 acceptance-cfi-ppc64-s390x:
478   extends: .acceptance_test_job_template
479   needs:
480     - job: build-cfi-ppc64-s390x
481       artifacts: true
482   variables:
483     IMAGE: fedora
484     MAKE_CHECK_ARGS: check-acceptance
486 build-cfi-x86_64:
487   extends: .native_build_job_template
488   needs:
489   - job: amd64-fedora-container
490   variables:
491     LD_JOBS: 1
492     AR: llvm-ar
493     IMAGE: fedora
494     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
495       --enable-safe-stack --enable-slirp=git
496     TARGETS: x86_64-softmmu
497     MAKE_CHECK_ARGS: check-build
498   timeout: 70m
499   artifacts:
500     expire_in: 2 days
501     paths:
502       - build
504 check-cfi-x86_64:
505   extends: .native_test_job_template
506   needs:
507     - job: build-cfi-x86_64
508       artifacts: true
509   variables:
510     IMAGE: fedora
511     MAKE_CHECK_ARGS: check
513 acceptance-cfi-x86_64:
514   extends: .acceptance_test_job_template
515   needs:
516     - job: build-cfi-x86_64
517       artifacts: true
518   variables:
519     IMAGE: fedora
520     MAKE_CHECK_ARGS: check-acceptance
522 tsan-build:
523   extends: .native_build_job_template
524   needs:
525     job: amd64-ubuntu2004-container
526   variables:
527     IMAGE: ubuntu2004
528     CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
529           --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
530     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
531     MAKE_CHECK_ARGS: bench V=1
533 # These targets are on the way out
534 build-deprecated:
535   extends: .native_build_job_template
536   needs:
537     job: amd64-debian-user-cross-container
538   variables:
539     IMAGE: debian-all-test-cross
540     CONFIGURE_ARGS: --disable-tools
541     MAKE_CHECK_ARGS: build-tcg
542     TARGETS: ppc64abi32-linux-user
543   artifacts:
544     expire_in: 2 days
545     paths:
546       - build
548 # We split the check-tcg step as test failures are expected but we still
549 # want to catch the build breaking.
550 check-deprecated:
551   extends: .native_test_job_template
552   needs:
553     - job: build-deprecated
554       artifacts: true
555   variables:
556     IMAGE: debian-all-test-cross
557     MAKE_CHECK_ARGS: check-tcg
558   allow_failure: true
560 # gprof/gcov are GCC features
561 build-gprof-gcov:
562   extends: .native_build_job_template
563   needs:
564     job: amd64-ubuntu2004-container
565   variables:
566     IMAGE: ubuntu2004
567     CONFIGURE_ARGS: --enable-gprof --enable-gcov
568     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
569   artifacts:
570     expire_in: 1 days
571     paths:
572       - build
574 check-gprof-gcov:
575   extends: .native_test_job_template
576   needs:
577     - job: build-gprof-gcov
578       artifacts: true
579   variables:
580     IMAGE: ubuntu2004
581     MAKE_CHECK_ARGS: check
582   after_script:
583     - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
585 build-oss-fuzz:
586   extends: .native_build_job_template
587   needs:
588     job: amd64-fedora-container
589   variables:
590     IMAGE: fedora
591   script:
592     - mkdir build-oss-fuzz
593     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
594       ./scripts/oss-fuzz/build.sh
595     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
596     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
597                       | grep -v slirp); do
598         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
599         echo Testing ${fuzzer} ... ;
600         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
601       done
602     # Unrelated to fuzzer: run some tests with -fsanitize=address
603     - cd build-oss-fuzz && make check-qtest-i386 check-unit
605 build-tci:
606   extends: .native_build_job_template
607   needs:
608     job: amd64-debian-user-cross-container
609   variables:
610     IMAGE: debian-all-test-cross
611   script:
612     - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
613     - mkdir build
614     - cd build
615     - ../configure --enable-tcg-interpreter
616         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
617     - make -j"$JOBS"
618     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
619     - for tg in $TARGETS ; do
620         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
621         ./tests/qtest/boot-serial-test || exit 1 ;
622         ./tests/qtest/cdrom-test || exit 1 ;
623       done
624     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
625     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
626     - make check-tcg
628 # Alternate coroutines implementations are only really of interest to KVM users
629 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
630 build-coroutine-sigaltstack:
631   extends: .native_build_job_template
632   needs:
633     job: amd64-ubuntu2004-container
634   variables:
635     IMAGE: ubuntu2004
636     CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
637                     --enable-trace-backends=ftrace
638     MAKE_CHECK_ARGS: check-unit
640 # Check our reduced build configurations
641 build-without-default-devices:
642   extends: .native_build_job_template
643   needs:
644     job: amd64-centos8-container
645   variables:
646     IMAGE: centos8
647     CONFIGURE_ARGS: --without-default-devices --disable-user
649 build-without-default-features:
650   extends: .native_build_job_template
651   needs:
652     job: amd64-debian-container
653   variables:
654     IMAGE: debian-amd64
655     CONFIGURE_ARGS: --without-default-features --disable-user
656         --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
657     MAKE_CHECK_ARGS: check-unit
659 build-libvhost-user:
660   stage: build
661   image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
662   needs:
663     job: amd64-fedora-container
664   before_script:
665     - dnf install -y meson ninja-build
666   script:
667     - mkdir subprojects/libvhost-user/build
668     - cd subprojects/libvhost-user/build
669     - meson
670     - ninja
672 # No targets are built here, just tools, docs, and unit tests. This
673 # also feeds into the eventual documentation deployment steps later
674 build-tools-and-docs-debian:
675   extends: .native_build_job_template
676   needs:
677     job: amd64-debian-container
678   variables:
679     IMAGE: debian-amd64
680     MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
681     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
682   artifacts:
683     expire_in: 2 days
684     paths:
685       - build
687 # Prepare for GitLab pages deployment. Anything copied into the
688 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
689 pages:
690   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
691   stage: test
692   needs:
693     - job: build-tools-and-docs-debian
694   script:
695     - mkdir -p public
696     # HTML-ised source tree
697     - make gtags
698     - htags -anT --tree-view=filetree -m qemu_init
699         -t "Welcome to the QEMU sourcecode"
700     - mv HTML public/src
701     # Project documentation
702     - make -C build install DESTDIR=$(pwd)/temp-install
703     - mv temp-install/usr/local/share/doc/qemu/* public/
704   artifacts:
705     paths:
706       - public