[oe] [PATCH] cairo: disable native atomic operations, conflicts with libatomics-ops

Denys Dmytriyenko denis at denix.org
Thu Mar 17 01:43:49 UTC 2011


An alternative solution, is to build libatomics-ops with emulated CAS (Compare 
And Swap), as otherwise those non-emulated primitives are not available on 
armel and sparc, according to [1]

Let me know if fixing libatomics-ops is more preferable and I'll make a patch. 
But I figured that since cairo used to build w/o atomic ops anyway, it's safer 
to just forcefully disable the check for them.

[1] http://us.generation-nt.com/answer/bug-566850-ao-compare-swap-full-not-available-armel-sparc-help-169012241.html

BTW, the correct name is libatomic-ops and not libatomics-ops, like it's named 
in OE...

-- 
Denys


On Wed, Mar 16, 2011 at 09:25:00PM -0400, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys at ti.com>
> 
> * Add --disable-atomic to configure, otherwise it finds previously staged
> libatomics-ops from pulseaudio, which doesn't have the necessary primitives:
> 
> | In file included from cairo-reference-count-private.h:40,
> |                  from cairo-types-private.h:45,
> |                  from cairoint.h:242,
> |                  from cairo-analysis-surface.c:37:
> | cairo-atomic-private.h: In function '_cairo_atomic_int_cmpxchg_return_old_fallback':
> | cairo-atomic-private.h:218: error: implicit declaration of function 'AO_compare_and_swap_full'
> | cairo-atomic-private.h:218: warning: nested extern declaration of 'AO_compare_and_swap_full'
> 
> * From my previous builds I see that cairo used to build before libatomics-ops
> was staged, avoiding this issue.
> * Also, add INC_PR to cairo.inc and use it in recipes
> * Start INC_PR from r4 to account for one of the older versions
> 
> Signed-off-by: Denys Dmytriyenko <denys at ti.com>
> ---
>  recipes/cairo/cairo-directfb_1.6.4.bb |    2 +-
>  recipes/cairo/cairo.inc               |    5 +++++
>  recipes/cairo/cairo_1.10.0.bb         |    3 +--
>  recipes/cairo/cairo_1.4.10.bb         |    3 +--
>  recipes/cairo/cairo_1.8.0.bb          |    2 +-
>  recipes/cairo/cairo_1.8.10.bb         |    3 +--
>  recipes/cairo/cairo_1.8.8.bb          |    4 +---
>  recipes/cairo/cairomm_1.8.4.bb        |    3 ++-
>  8 files changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/recipes/cairo/cairo-directfb_1.6.4.bb b/recipes/cairo/cairo-directfb_1.6.4.bb
> index b4fea9a..3670eab 100644
> --- a/recipes/cairo/cairo-directfb_1.6.4.bb
> +++ b/recipes/cairo/cairo-directfb_1.6.4.bb
> @@ -12,7 +12,7 @@ EXTRA_OECONF += " --enable-directfb \
>  LDFLAGS_append += " -ldirectfb"
>  CFLAGS_append  += " -I${STAGING_INCDIR}/directfb"
>  
> -PR = "r1"
> +PR = "${INC_PR}.1"
>  
>  S = "${WORKDIR}/cairo-${PV}"
>  
> diff --git a/recipes/cairo/cairo.inc b/recipes/cairo/cairo.inc
> index c60d7d9..3dcc14c 100644
> --- a/recipes/cairo/cairo.inc
> +++ b/recipes/cairo/cairo.inc
> @@ -4,10 +4,15 @@ DEPENDS = "virtual/libx11 pixman libsm libpng fontconfig libxrender glib-2.0"
>  DESCRIPTION = "Cairo graphics library"
>  LICENSE = "MPL LGPL"
>  
> +INC_PR = "r4"
> +
>  #check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points 
>  require cairo-fpu.inc
>  EXTRA_OECONF += "${@get_cairo_fpu_setting(bb, d)}"
>  
> +# Disable check for atomic functions, as it fails with libatomics-ops staged
> +EXTRA_OECONF += " --disable-atomic"
> +
>  inherit autotools pkgconfig 
>  
>  PACKAGES =+ "cairo-trace cairo-trace-dev libcairo-script-interpreter libcairo-gobject"
> diff --git a/recipes/cairo/cairo_1.10.0.bb b/recipes/cairo/cairo_1.10.0.bb
> index 58e2481..177c615 100644
> --- a/recipes/cairo/cairo_1.10.0.bb
> +++ b/recipes/cairo/cairo_1.10.0.bb
> @@ -1,10 +1,9 @@
>  require cairo.inc
>  
> -PR = "r1"
> +PR = "${INC_PR}.1"
>  
>  SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz;name=cairo \
>  "
>  
>  SRC_URI[cairo.md5sum] = "70a2ece66cf473d976e2db0f75bf199e"
>  SRC_URI[cairo.sha256sum] = "0f2ce4cc4615594088d74eb8b5360bad7c3cc3c3da9b61af9bfd979ed1ed94b2"
> -
> diff --git a/recipes/cairo/cairo_1.4.10.bb b/recipes/cairo/cairo_1.4.10.bb
> index 544479b..c334c34 100644
> --- a/recipes/cairo/cairo_1.4.10.bb
> +++ b/recipes/cairo/cairo_1.4.10.bb
> @@ -5,8 +5,7 @@ DEFAULT_PREFERENCE = "-1"
>  SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
>  file://stats.patch;p=1"
>  
> -PR = "r0"
> -
> +PR = "${INC_PR}.0"
>  
>  SRC_URI[md5sum] = "5598a5e500ad922e37b159dee72fc993"
>  SRC_URI[sha256sum] = "594e78a66044898c321e378d47faf43b665b23ba638834d2787e344ba13e5132"
> diff --git a/recipes/cairo/cairo_1.8.0.bb b/recipes/cairo/cairo_1.8.0.bb
> index a4225e8..e7cdeb7 100644
> --- a/recipes/cairo/cairo_1.8.0.bb
> +++ b/recipes/cairo/cairo_1.8.0.bb
> @@ -3,7 +3,7 @@ require cairo.inc
>  SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
>            "
>  
> -
> +PR = "${INC_PR}.0"
>  
>  SRC_URI[md5sum] = "4ea70ea87b47e92d318d4e7f5b940f47"
>  SRC_URI[sha256sum] = "827acee89ba3e8e762fbb23165cf8d455e7d95e1e50984e6882b2070a7f3abae"
> diff --git a/recipes/cairo/cairo_1.8.10.bb b/recipes/cairo/cairo_1.8.10.bb
> index 884a6a7..8339b81 100644
> --- a/recipes/cairo/cairo_1.8.10.bb
> +++ b/recipes/cairo/cairo_1.8.10.bb
> @@ -1,6 +1,6 @@
>  require cairo.inc
>  
> -PR = "r3"
> +PR = "${INC_PR}.3"
>  
>  SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz;name=cairo \
>             file://dolt-fix.patch \
> @@ -9,4 +9,3 @@ SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz;name=cairo \
>  
>  SRC_URI[cairo.md5sum] = "b60a82f405f9400bbfdcf850b1728d25"
>  SRC_URI[cairo.sha256sum] = "572bada15596ec8708392db1af8b93a1af75ca47690348154e2841f3a6f08439"
> -
> diff --git a/recipes/cairo/cairo_1.8.8.bb b/recipes/cairo/cairo_1.8.8.bb
> index de12f13..b0280a9 100644
> --- a/recipes/cairo/cairo_1.8.8.bb
> +++ b/recipes/cairo/cairo_1.8.8.bb
> @@ -1,4 +1,4 @@
> -PR = "r1"
> +PR = "${INC_PR}.1"
>  
>  require cairo.inc
>  
> @@ -6,7 +6,5 @@ SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
>             file://dolt-fix.patch \
>            "
>  
> -
> -
>  SRC_URI[md5sum] = "d3e1a1035ae563812d4dd44a74fb0dd0"
>  SRC_URI[sha256sum] = "3c51d3de5dc4596e01a6675acd3c86c2c99c00f02e8fad5493758a29fe451c90"
> diff --git a/recipes/cairo/cairomm_1.8.4.bb b/recipes/cairo/cairomm_1.8.4.bb
> index 672dcb5..19b7618 100644
> --- a/recipes/cairo/cairomm_1.8.4.bb
> +++ b/recipes/cairo/cairomm_1.8.4.bb
> @@ -1,9 +1,10 @@
>  require cairo.inc
>  
> +PR = "${INC_PR}.0"
> +
>  DEPENDS = "cairo libsigc++-2.0"
>  DESCRIPTION = "C++ bindings for Cairo graphics library"
>  
>  SRC_URI = "http://cairographics.org/releases/cairomm-${PV}.tar.gz;name=archive"
>  SRC_URI[archive.md5sum] = "559afbc47484ba3fad265e38a3dafe90"
>  SRC_URI[archive.sha256sum] = "a28ec6d9af8f93d09076f32cd77de35f9d74a517def5dea12cb8cc2ce3a6c8f1"
> -
> -- 
> 1.7.0.4
> 
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel




More information about the Openembedded-devel mailing list