Bug 104150

Summary: cairo 1.14.12 fails test
Product: cairo Reporter: Michael Rice <michael.rice>
Component: generalAssignee: Chris Wilson <chris>
Status: RESOLVED MOVED QA Contact: cairo-bugs mailing list <cairo-bugs>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Michael Rice 2017-12-07 05:32:20 UTC
FAIL: cairo-test-suite
============================================================================
Testsuite summary for cairo 1.14.12
============================================================================
# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See test/test-suite.log
Please report to http://bugs.freedesktop.org/enter_bug.cgi?product=cairo
============================================================================



Compiled against cairo 1.14.12, running on 1.14.12.
Compiled against pixman 0.34.0, running on 0.34.0.
a1-bug: FAIL (script, image16)
a1-clip-paint: PASS
a1-clip-fill: PASS
a1-clip-fill-equal: PASS
a1-clip-stroke: PASS
a1-fill: FAIL (script)
...
fallback-resolution: FAIL
158 Passed, 383 Failed [18 crashed, 8 expected], 22 Skipped
Preamble: 1 failed - fallback-resolution
ps2 (argb32): 17 crashed! - 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 self-copy self-copy-overlap
ps2 (argb32): 178 failed - bug-spline bug-51910 bug-bo-ricotz bug-source-cu bug-extents caps-2 caps-1 caps-05 caps-joins caps-joins-2 caps-joins-1 caps-joins-05 caps-joins-curve caps-tails-curve clear-source clip-complex-bug61592 clip-disjoint clip-disjoint-quad clip-stroke-unbounded clip-intersect clip-operator clip-rectilinear clip-stroke dash-caps-joins dash-curve dash-scale degenerate-curve-to degenerate-pen degenerate-rel-curve-to degenerate-solid-dash drunkard-tails extended-blend extended-blend-alpha extended-blend-mask extended-blend-alpha-mask extended-blend-solid extended-blend-solid-alpha fallback fill-image filter-nearest-offset finer-grained-fallbacks halo halo-transform huge-radial image-surface-source inverse-text joins joins-loop joins-star joins-retrace line-width-large-overlap-rotated line-width-large-overlap-dashed line-width-overlap-offset line-width-overlap-rotated line-width-overlap-dashed line-width-tolerance linear-gradient linear-gradient-subset mask mask-transformed-similar mime-data operator-clear operator-source over-above-source over-around-source over-between-source overlapping-boxes partial-clip-text-bottom partial-clip-text-left partial-clip-text-right pixman-rotate radial-gradient radial-gradient-mask radial-gradient-source radial-gradient-mask-source random-clip random-intersections-eo random-intersections-nonzero random-intersections-curves-eo random-intersections-curves-nz raster-source record-paint record-paint-alpha record-paint-alpha-solid-clip record-paint-alpha-clip record-paint-alpha-clip-mask record-fill-alpha record-select-font-face record-self-intersecting record-text-transform record1414x-paint record1414x-paint-alpha record1414x-paint-alpha-solid-clip record1414x-paint-alpha-clip record1414x-paint-alpha-clip-mask record1414x-fill-alpha record1414x-select-font-face record1414x-self-intersecting record1414x-text-transform record2x-paint record2x-paint-alpha record2x-paint-alpha-solid-clip record2x-paint-alpha-clip record2x-paint-alpha-clip-mask record2x-fill-alpha record2x-select-font-face record2x-self-intersecting record2x-text-transform record90-paint record90-paint-alpha record90-paint-alpha-solid-clip record90-paint-alpha-clip record90-paint-alpha-clip-mask record90-fill-alpha record90-select-font-face record90-self-intersecting record90-text-transform recordflip-whole-paint recordflip-whole-paint-alpha-clip-mask recordflip-whole-fill-alpha recordflip-whole-select-font-face recordflip-whole-self-intersecting recordflip-whole-text-transform recordflip-paint recordflip-paint-alpha recordflip-paint-alpha-solid-clip recordflip-paint-alpha-clip recordflip-paint-alpha-clip-mask recordflip-fill-alpha recordflip-select-font-face recordflip-self-intersecting recordflip-text-transform record-extend-none record-extend-pad record-extend-repeat record-extend-reflect record-extend-none-similar record-extend-pad-similar record-extend-repeat-similar record-extend-reflect-similar record-mesh recording-surface-over recording-surface-source recording-surface-extend-none recording-surface-extend-repeat recording-surface-extend-reflect rectilinear-dash-scale-unaligned clip-rotate-image-surface-paint rotate-clip-image-surface-paint rotated-clip scale-offset-similar stroke-clipped stroke-image smask smask-text spline-decomposition surface-pattern-big-scale-down text-pattern text-rotate text-transform tighten-bounds tiger trap-clip twin unbounded-operator unclosed-strokes user-font user-font-proxy user-font-rescale world-map world-map-stroke world-map-fill pthread-same-source pthread-similar ft-text-vertical-layout-type1 pdf-surface-source ps-surface-source svg-surface-source

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)

$ grep Mem /proc/meminfo 
MemTotal:       264288868 kB
MemFree:        219463668 kB

$ uname -a
Linux xxxxxxxx 2.6.32-431.29.2.el6.x86_64 #1 SMP Sun Jul 27 15:55:46 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

$ grep name /proc/cpuinfo  | head -1
model name      : Intel(R) Xeon(R) CPU E5-2643 v3 @ 3.40GHz


I'm attempting to build freetype 2.8.1, which requires harfbuzz (1.7.2), which requires cairo (1.14.12), which requires pixman (0.34.0).  Freetype is intended for a non-standard prefix, so I'm building everything from source. 

Pixman built fine and is installed in the prefix and pkg-config knows about it (make test passed but nothing else has been done with it).

Cairo was finding libiberty.h from /usr/include and complaining about PARAMS.  So I added CPPFLAGS to the configure line, like this:

    CONFIGURE_SHELL="/bin/bash" ./configure \
        --prefix=$PREFIX CC=$CC \
        CPPFLAGS=-I$PREFIX/lib/gcc/x86_64-pc-linux-gnu/$GCCVER/plugin/include 

And from there I get through everything except make test fails.

I built the same packages in the same order exactly the same way (using a build script) on RHEL 7.3 without problem, so I'm perfectly willing to be told that some hidden dependency on RHEL 6.5 is being insufficiently met.

I just need to understand what it is :)

Thanks for your help.  I can't upload the entire log, it's on a disconnected system from which I can only copy/paste snippets.
Comment 1 Adrian Johnson 2017-12-07 06:46:30 UTC
The test/README file has a lot of information on getting the tests to pass. It is unlikely you will get them all to pass as it is very dependent on the environment it is run in. Usually the easiest option is to open test/index.html and do a visual check that the output looks reasonable.

> I built the same packages in the same order exactly the same way (using a build
> script) on RHEL 7.3 without problem, so I'm perfectly willing to be told that
> some hidden dependency on RHEL 6.5 is being insufficiently met.

This is a good start. It may be the dependencies on RHEL 6.5 are too old to be be able to successfully pass the test. That doesn't mean your compiled cairo won't work. It just means the test output won't match the reference images.

I test and update ref images on Debian Testing. The further you get away from that platform the lower your chance of success.
Comment 2 Adrian Johnson 2017-12-07 06:49:12 UTC
> I'm attempting to build freetype 2.8.1, which requires harfbuzz (1.7.2),
> which requires cairo (1.14.12), which requires pixman (0.34.0).  Freetype
> is intended for a non-standard prefix, so I'm building everything from source. 

As far as I can see, harfbuzz only uses cairo for some stuff in the utils directory, not the harfbuzz library. Cairo will never be used by FreeType. The dependency is in the other direction.
Comment 3 Michael Rice 2017-12-07 23:29:44 UTC
Thanks for your comments Adrian,

I can understand tests not running on a platform that is different from the reference platform.

I run 'make test' on everything that provides it as a sanity check before running 'make install'.  This is standard operating procedure of my build scripts.  The goal is to provide a reference prefix for our projects.  The prefix will span several generations of RHEL.  There is other software that runs on these systems that precludes updating to the latest release, or even latest this quadrennium.

I see from the test/README is a lot of information about why one would run other tests or specific tests in a specific manner.  However, it doesn't have (or I glossed over it) a useful suggestion for the minimum set of tests that a) are guaranteed to pass and b) validate that the cairo build is viable.

I'm building a mostly unattended build, so comparing index.html isn't _quite_ what I want.  I really want a set of tests that if anything fails we do not install.

Is there a minimum set that you would recommend that would be universally applicable?
Comment 4 GitLab Migration User 2018-08-25 13:58:17 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/cairo/cairo/issues/295.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.