diff mbox series

[V1] cairo:Add ptest support

Message ID 1698042855-3883-1-git-send-email-qiutt@fujitsu.com
State New
Headers show
Series [V1] cairo:Add ptest support | expand

Commit Message

qiutt@fujitsu.com Oct. 23, 2023, 6:34 a.m. UTC
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

Comments

Alexander Kanavin Oct. 23, 2023, 11:13 a.m. UTC | #1
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]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Luca Ceresoli Oct. 23, 2023, 8:53 p.m. UTC | #2
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
qiutt@fujitsu.com Oct. 25, 2023, 8:47 a.m. UTC | #3
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?
Alexander Kanavin Oct. 25, 2023, 10:05 a.m. UTC | #4
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 mbox series

Patch

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"