Message ID | 1698042855-3883-1-git-send-email-qiutt@fujitsu.com |
---|---|
State | New |
Headers | show |
Series | [V1] cairo:Add ptest support | expand |
Thanks for working on this. I think the ptest support should be held until after we update to cairo 1.18.0 though, it's a major upgrade with years of development work, and ptest support almost certainly needs a bit of forward porting effort. If you can do the cairo update to 1.18.0 first, I would really appreciate that. Alex On Mon, 23 Oct 2023 at 08:34, qiutt@fujitsu.com <qiutt@fujitsu.com> wrote: > > From: Qiu Tingting <qiutt@fujitsu.com> > > Add a ptest for cairo > - It is taking around 65s to execute with kvm, so added it to PTESTS_SLOW > - It contains 429 cases > - Below is parts of the run log: > START: ptest-runner > 2023-10-17T05:56 > BEGIN: /usr/lib/cairo/ptest > > TESTING cairo-test-suite > Compiled against cairo 1.16.0, running on 1.16.0. > Compiled against pixman 0.42.2, running on 0.42.2. > > TESTING a1-bug > a1-bug.image.argb32 [0x1]: PASS > > ... > TESTING fallback-resolution > UNTESTED: fallback-resolution > 402 Passed, 13 Failed [0 crashed, 13 expected], 14 Skipped > DURATION: 65 > END: /usr/lib/cairo/ptest > 2023-10-17T05:51 > STOP: ptest-runner > TOTAL: 1 FAIL: 0 > > Signed-off-by: Qiu Tingting <qiutt@fujitsu.com> > --- > .../distro/include/ptest-packagelists.inc | 1 + > meta/recipes-graphics/cairo/cairo/ptest.patch | 58 +++++++++++ > meta/recipes-graphics/cairo/cairo/run-ptest | 20 ++++ > meta/recipes-graphics/cairo/cairo/skiplist | 97 +++++++++++++++++++ > meta/recipes-graphics/cairo/cairo_1.16.0.bb | 24 +++++ > 5 files changed, 200 insertions(+) > create mode 100644 meta/recipes-graphics/cairo/cairo/ptest.patch > create mode 100644 meta/recipes-graphics/cairo/cairo/run-ptest > create mode 100644 meta/recipes-graphics/cairo/cairo/skiplist > > diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc > index 680b01b3b5..aa8aeaaa1b 100644 > --- a/meta/conf/distro/include/ptest-packagelists.inc > +++ b/meta/conf/distro/include/ptest-packagelists.inc > @@ -89,6 +89,7 @@ PTESTS_PROBLEMS:append:riscv32 = " qemu" > PTESTS_SLOW = "\ > apr \ > bzip2 \ > + cairo \ > coreutils \ > curl \ > dbus \ > diff --git a/meta/recipes-graphics/cairo/cairo/ptest.patch b/meta/recipes-graphics/cairo/cairo/ptest.patch > new file mode 100644 > index 0000000000..cbbafb1f0f > --- /dev/null > +++ b/meta/recipes-graphics/cairo/cairo/ptest.patch > @@ -0,0 +1,58 @@ > +change cairo-test-suite output with ptest formate. > + > +Upstream-Status: Inappropriate [oe-core specific] > +Signed-off-by: Qiu Tingting <qiutt@fujitsu.com> > + > +diff -rNu a/test/cairo-test-runner.c b/test/cairo-test-runner.c > +--- a/test/cairo-test-runner.c 2023-10-13 15:51:25.986798896 +0800 > ++++ b/test/cairo-test-runner.c 2023-10-16 13:57:41.323640064 +0800 > +@@ -1011,9 +1011,9 @@ > + } > + } > + targets[len-2] = '\0'; > +- _log (&runner.base, "\n%s: CRASH! (%s)\n", name, targets); > ++ _log (&runner.base, "\nCRASH: %s (%s)\n", name, targets); > + } else { > +- _log (&runner.base, "\n%s: CRASH!\n", name); > ++ _log (&runner.base, "\nCRASH: %s\n", name); > + } > + runner.num_crashed++; > + runner.passed = FALSE; > +@@ -1033,9 +1033,9 @@ > + } > + } > + targets[len-2] = '\0'; > +- _log (&runner.base, "%s: ERROR (%s)\n", name, targets); > ++ _log (&runner.base, "ERROR: %s (%s)\n", name, targets); > + } else { > +- _log (&runner.base, "%s: ERROR\n", name); > ++ _log (&runner.base, "ERROR: %s\n", name); > + } > + runner.num_error++; > + runner.passed = FALSE; > +@@ -1055,20 +1055,20 @@ > + } > + } > + targets[len-2] = '\0'; > +- _log (&runner.base, "%s: FAIL (%s)\n", name, targets); > ++ _log (&runner.base, "FAIL: %s (%s)\n", name, targets); > + } else { > +- _log (&runner.base, "%s: FAIL\n", name); > ++ _log (&runner.base, "FAIL: %s\n", name); > + } > + runner.num_failed++; > + runner.passed = FALSE; > + } else if (xfailed) { > +- _log (&runner.base, "%s: XFAIL\n", name); > ++ _log (&runner.base, "XFAIL: %s\n", name); > + runner.num_xfailed++; > + } else if (skipped) { > +- _log (&runner.base, "%s: UNTESTED\n", name); > ++ _log (&runner.base, "UNTESTED: %s\n", name); > + runner.num_skipped++; > + } else { > +- _log (&runner.base, "%s: PASS\n", name); > ++ _log (&runner.base, "PASS: %s\n", name); > + runner.num_passed++; > + } > + fflush (runner.base.log_file); > diff --git a/meta/recipes-graphics/cairo/cairo/run-ptest b/meta/recipes-graphics/cairo/cairo/run-ptest > new file mode 100644 > index 0000000000..7ee3e26954 > --- /dev/null > +++ b/meta/recipes-graphics/cairo/cairo/run-ptest > @@ -0,0 +1,20 @@ > +#!/bin/sh > + > +# Define tar test work dir > +WORKDIR=@PTEST_PATH@/tests/ > + > +# Run test > +cd ${WORKDIR} > + > +# Clean old logs > +rm -rf cairo-test-suite.log > +rm -rf output > + > +CAIRO_TEST_TARGET=image ./cairo-test-suite -l > caselist > +for case in `cat skiplist` > +do > + sed -i "s/${case}//g" caselist > +done > + > +CAIRO_TEST_TARGET=image CAIRO_TESTS=`cat caselist` ./cairo-test-suite > + > diff --git a/meta/recipes-graphics/cairo/cairo/skiplist b/meta/recipes-graphics/cairo/cairo/skiplist > new file mode 100644 > index 0000000000..1dabffd88a > --- /dev/null > +++ b/meta/recipes-graphics/cairo/cairo/skiplist > @@ -0,0 +1,97 @@ > +clear > +clip-operator > +clip-text > +culled-glyphs > +extended-blend-alpha-mask > +font-matrix-translation > +font-variations > +glyph-cache-pressure > +get-path-extents > +halo > +halo-transform > +inverse-text > +large-font > +mime-data > +negative-stride-image > +operator-clear > +operator-source > +overlapping-glyphs > +partial-clip-text-top > +partial-clip-text-bottom > +partial-clip-text-left > +partial-clip-text-right > +radial-gradient-source > +raster-source > +record-select-font-face > +record1414x-select-font-face > +record2x-select-font-face > +record90-select-font-face > +recordflip-whole-select-font-face > +recordflip-select-font-face > +select-font-face > +show-glyphs-advance > +show-text-current-point > +smask > +smask-text > +smp-glyph > +stride-12-image > +text-antialias-gray > +text-antialias-none > +text-antialias-subpixel > +text-antialias-subpixel-rgb > +text-antialias-subpixel-bgr > +text-antialias-subpixel-vrgb > +text-antialias-subpixel-vbgr > +text-glyph-range > +text-pattern > +text-rotate > +text-unhinted-metrics > +unbounded-operator > +user-font-proxy > +user-font-rescale > +pthread-show-text > +bitmap-font > +ft-font-create-for-ft-face > +ft-show-glyphs-positioning > +ft-show-glyphs-table > +ft-text-vertical-layout-type1 > +ft-text-vertical-layout-type3 > +ft-text-antialias-none > +clip-image > +clipped-surface > +composite-integer-translate-source > +composite-integer-translate-over > +extend-reflect > +extend-reflect-similar > +extend-repeat > +extend-repeat-similar > +filter-nearest-transformed > +mask > +mask-transformed-image > +mask-transformed-similar > +subsurface-image-repeat > +text-transform > +trap-clip > +xlib-expose-event > +pixman-downscale-fast-96 > +pixman-downscale-fast-95 > +pixman-downscale-fast-24 > +pixman-downscale-good-96 > +pixman-downscale-good-95 > +pixman-downscale-good-24 > +pixman-downscale-best-96 > +pixman-downscale-best-95 > +pixman-downscale-best-24 > +pixman-downscale-nearest-96 > +pixman-downscale-nearest-95 > +pixman-downscale-nearest-24 > +pixman-downscale-bilinear-96 > +pixman-downscale-bilinear-95 > +pixman-downscale-bilinear-24 > +record-text-transform > +record1414x-text-transform > +record2x-text-transform > +record90-text-transform > +recordflip-whole-text-transform > +recordflip-text-transform > + > diff --git a/meta/recipes-graphics/cairo/cairo_1.16.0.bb b/meta/recipes-graphics/cairo/cairo_1.16.0.bb > index ffb813d290..8eedc73717 100644 > --- a/meta/recipes-graphics/cairo/cairo_1.16.0.bb > +++ b/meta/recipes-graphics/cairo/cairo_1.16.0.bb > @@ -84,6 +84,30 @@ do_install:append () { > rmdir -p --ignore-fail-on-non-empty ${D}${libdir}/cairo > } > > +# add for ptest support > +SRC_URI += " \ > + file://ptest.patch \ > + file://run-ptest \ > + file://skiplist \ > +" > + > +inherit ptest > + > +do_compile_ptest() { > + oe_runmake -C ${B}/test/ > +} > + > +do_install_ptest() { > + install -d ${D}${PTEST_PATH}/tests/ > + install --mode=755 ${B}/test/.libs/* ${D}${PTEST_PATH}/tests/ > + install -d ${D}${PTEST_PATH}/tests/reference/ > + install --mode=755 ${S}/test/reference/* ${D}${PTEST_PATH}/tests/reference/ > + > + install --mode=755 ${WORKDIR}/skiplist ${D}${PTEST_PATH}/tests/ > + sed -i "s#@PTEST_PATH@#${PTEST_PATH}#g" ${D}${PTEST_PATH}/run-ptest > + > +} > + > PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" > > SUMMARY:cairo-gobject = "The Cairo library GObject wrapper library" > -- > 2.25.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#189614): https://lists.openembedded.org/g/openembedded-core/message/189614 > Mute This Topic: https://lists.openembedded.org/mt/102130424/1686489 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hello qiutt, On Mon, 23 Oct 2023 14:34:15 +0800 "qiutt@fujitsu.com" <qiutt@fujitsu.com> wrote: > From: Qiu Tingting <qiutt@fujitsu.com> > > Add a ptest for cairo > - It is taking around 65s to execute with kvm, so added it to PTESTS_SLOW > - It contains 429 cases > - Below is parts of the run log: > START: ptest-runner > 2023-10-17T05:56 > BEGIN: /usr/lib/cairo/ptest > > TESTING cairo-test-suite > Compiled against cairo 1.16.0, running on 1.16.0. > Compiled against pixman 0.42.2, running on 0.42.2. > > TESTING a1-bug > a1-bug.image.argb32 [0x1]: PASS > > ... > TESTING fallback-resolution > UNTESTED: fallback-resolution > 402 Passed, 13 Failed [0 crashed, 13 expected], 14 Skipped > DURATION: 65 > END: /usr/lib/cairo/ptest > 2023-10-17T05:51 > STOP: ptest-runner > TOTAL: 1 FAIL: 0 > > Signed-off-by: Qiu Tingting <qiutt@fujitsu.com> This patch is triggering one ptest failure: Failed ptests: {'cairo': ['extended-blend', 'extended-blend-solid']} See the log: https://autobuilder.yoctoproject.org/typhoon/#/builders/82/builds/5625/steps/12/logs/stdio Luca
Hi,Alex > > If you can do the cairo update to 1.18.0 first, I would really appreciate > that. I'm trying to do the cairo update. Which images and tests should be check?
On Wed, 25 Oct 2023 at 10:47, qiutt@fujitsu.com <qiutt@fujitsu.com> wrote: > If you can do the cairo update to 1.18.0 first, I would really appreciate that. > > I'm trying to do the cairo update. > Which images and tests should be check? There is no definite and specific answer to this, but a few things you could do, in order: - make sure it builds for qemux86_64 / glibc - make sure it builds for qemuarm (32 bit) / musl - make sure all dependent recipes still build (grep -ilr cairo * in poky/meta/ will show which ones, or you can simply run bitbake world if you have a powerful machine) - run '-c testimage' for core-image-sato-sdk and core-image weston (use qemux86_64 with kvm for speed) - boot those images with qemu and visually check that they still show correct graphical output There are further tests, e.g. binary reproducibility, but those will be run on the autobuilder, and you aren't expected to do them. If they fail, integrators will tell you. Thanks, Alex
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index 680b01b3b5..aa8aeaaa1b 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc @@ -89,6 +89,7 @@ PTESTS_PROBLEMS:append:riscv32 = " qemu" PTESTS_SLOW = "\ apr \ bzip2 \ + cairo \ coreutils \ curl \ dbus \ diff --git a/meta/recipes-graphics/cairo/cairo/ptest.patch b/meta/recipes-graphics/cairo/cairo/ptest.patch new file mode 100644 index 0000000000..cbbafb1f0f --- /dev/null +++ b/meta/recipes-graphics/cairo/cairo/ptest.patch @@ -0,0 +1,58 @@ +change cairo-test-suite output with ptest formate. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Qiu Tingting <qiutt@fujitsu.com> + +diff -rNu a/test/cairo-test-runner.c b/test/cairo-test-runner.c +--- a/test/cairo-test-runner.c 2023-10-13 15:51:25.986798896 +0800 ++++ b/test/cairo-test-runner.c 2023-10-16 13:57:41.323640064 +0800 +@@ -1011,9 +1011,9 @@ + } + } + targets[len-2] = '\0'; +- _log (&runner.base, "\n%s: CRASH! (%s)\n", name, targets); ++ _log (&runner.base, "\nCRASH: %s (%s)\n", name, targets); + } else { +- _log (&runner.base, "\n%s: CRASH!\n", name); ++ _log (&runner.base, "\nCRASH: %s\n", name); + } + runner.num_crashed++; + runner.passed = FALSE; +@@ -1033,9 +1033,9 @@ + } + } + targets[len-2] = '\0'; +- _log (&runner.base, "%s: ERROR (%s)\n", name, targets); ++ _log (&runner.base, "ERROR: %s (%s)\n", name, targets); + } else { +- _log (&runner.base, "%s: ERROR\n", name); ++ _log (&runner.base, "ERROR: %s\n", name); + } + runner.num_error++; + runner.passed = FALSE; +@@ -1055,20 +1055,20 @@ + } + } + targets[len-2] = '\0'; +- _log (&runner.base, "%s: FAIL (%s)\n", name, targets); ++ _log (&runner.base, "FAIL: %s (%s)\n", name, targets); + } else { +- _log (&runner.base, "%s: FAIL\n", name); ++ _log (&runner.base, "FAIL: %s\n", name); + } + runner.num_failed++; + runner.passed = FALSE; + } else if (xfailed) { +- _log (&runner.base, "%s: XFAIL\n", name); ++ _log (&runner.base, "XFAIL: %s\n", name); + runner.num_xfailed++; + } else if (skipped) { +- _log (&runner.base, "%s: UNTESTED\n", name); ++ _log (&runner.base, "UNTESTED: %s\n", name); + runner.num_skipped++; + } else { +- _log (&runner.base, "%s: PASS\n", name); ++ _log (&runner.base, "PASS: %s\n", name); + runner.num_passed++; + } + fflush (runner.base.log_file); diff --git a/meta/recipes-graphics/cairo/cairo/run-ptest b/meta/recipes-graphics/cairo/cairo/run-ptest new file mode 100644 index 0000000000..7ee3e26954 --- /dev/null +++ b/meta/recipes-graphics/cairo/cairo/run-ptest @@ -0,0 +1,20 @@ +#!/bin/sh + +# Define tar test work dir +WORKDIR=@PTEST_PATH@/tests/ + +# Run test +cd ${WORKDIR} + +# Clean old logs +rm -rf cairo-test-suite.log +rm -rf output + +CAIRO_TEST_TARGET=image ./cairo-test-suite -l > caselist +for case in `cat skiplist` +do + sed -i "s/${case}//g" caselist +done + +CAIRO_TEST_TARGET=image CAIRO_TESTS=`cat caselist` ./cairo-test-suite + diff --git a/meta/recipes-graphics/cairo/cairo/skiplist b/meta/recipes-graphics/cairo/cairo/skiplist new file mode 100644 index 0000000000..1dabffd88a --- /dev/null +++ b/meta/recipes-graphics/cairo/cairo/skiplist @@ -0,0 +1,97 @@ +clear +clip-operator +clip-text +culled-glyphs +extended-blend-alpha-mask +font-matrix-translation +font-variations +glyph-cache-pressure +get-path-extents +halo +halo-transform +inverse-text +large-font +mime-data +negative-stride-image +operator-clear +operator-source +overlapping-glyphs +partial-clip-text-top +partial-clip-text-bottom +partial-clip-text-left +partial-clip-text-right +radial-gradient-source +raster-source +record-select-font-face +record1414x-select-font-face +record2x-select-font-face +record90-select-font-face +recordflip-whole-select-font-face +recordflip-select-font-face +select-font-face +show-glyphs-advance +show-text-current-point +smask +smask-text +smp-glyph +stride-12-image +text-antialias-gray +text-antialias-none +text-antialias-subpixel +text-antialias-subpixel-rgb +text-antialias-subpixel-bgr +text-antialias-subpixel-vrgb +text-antialias-subpixel-vbgr +text-glyph-range +text-pattern +text-rotate +text-unhinted-metrics +unbounded-operator +user-font-proxy +user-font-rescale +pthread-show-text +bitmap-font +ft-font-create-for-ft-face +ft-show-glyphs-positioning +ft-show-glyphs-table +ft-text-vertical-layout-type1 +ft-text-vertical-layout-type3 +ft-text-antialias-none +clip-image +clipped-surface +composite-integer-translate-source +composite-integer-translate-over +extend-reflect +extend-reflect-similar +extend-repeat +extend-repeat-similar +filter-nearest-transformed +mask +mask-transformed-image +mask-transformed-similar +subsurface-image-repeat +text-transform +trap-clip +xlib-expose-event +pixman-downscale-fast-96 +pixman-downscale-fast-95 +pixman-downscale-fast-24 +pixman-downscale-good-96 +pixman-downscale-good-95 +pixman-downscale-good-24 +pixman-downscale-best-96 +pixman-downscale-best-95 +pixman-downscale-best-24 +pixman-downscale-nearest-96 +pixman-downscale-nearest-95 +pixman-downscale-nearest-24 +pixman-downscale-bilinear-96 +pixman-downscale-bilinear-95 +pixman-downscale-bilinear-24 +record-text-transform +record1414x-text-transform +record2x-text-transform +record90-text-transform +recordflip-whole-text-transform +recordflip-text-transform + diff --git a/meta/recipes-graphics/cairo/cairo_1.16.0.bb b/meta/recipes-graphics/cairo/cairo_1.16.0.bb index ffb813d290..8eedc73717 100644 --- a/meta/recipes-graphics/cairo/cairo_1.16.0.bb +++ b/meta/recipes-graphics/cairo/cairo_1.16.0.bb @@ -84,6 +84,30 @@ do_install:append () { rmdir -p --ignore-fail-on-non-empty ${D}${libdir}/cairo } +# add for ptest support +SRC_URI += " \ + file://ptest.patch \ + file://run-ptest \ + file://skiplist \ +" + +inherit ptest + +do_compile_ptest() { + oe_runmake -C ${B}/test/ +} + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests/ + install --mode=755 ${B}/test/.libs/* ${D}${PTEST_PATH}/tests/ + install -d ${D}${PTEST_PATH}/tests/reference/ + install --mode=755 ${S}/test/reference/* ${D}${PTEST_PATH}/tests/reference/ + + install --mode=755 ${WORKDIR}/skiplist ${D}${PTEST_PATH}/tests/ + sed -i "s#@PTEST_PATH@#${PTEST_PATH}#g" ${D}${PTEST_PATH}/run-ptest + +} + PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" SUMMARY:cairo-gobject = "The Cairo library GObject wrapper library"