Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 372869 - x11-libs/cairo-1.10.2-r2 build failed on Prefix MacOSX
Summary: x11-libs/cairo-1.10.2-r2 build failed on Prefix MacOSX
Status: RESOLVED WORKSFORME
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Prefix
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-06-24 17:49 UTC by Naohiro Aota
Modified: 2014-01-13 21:15 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
complete build.log (build.log,163.48 KB, text/plain)
2011-06-24 17:49 UTC, Naohiro Aota
Details
proposed patch (cairo-1.10.2-macosx.patch,464 bytes, text/plain)
2011-06-24 17:51 UTC, Naohiro Aota
Details
Patch some additional makefiles that I needed (linktostdcpp.patch,2.82 KB, patch)
2012-11-29 11:44 UTC, Greg Turner
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Naohiro Aota gentoo-dev 2011-06-24 17:49:23 UTC
Created attachment 278029 [details]
complete build.log

Build fail with the following error

  CCLD   libcairo.la
Undefined symbols:
  "___cxa_rethrow", referenced from:
      QVector<double>::realloc(int, int)in libcairo_cxx.a(cairo-qt-surface.o)
  "operator new(unsigned long)", referenced from:
      _cairo_qt_surface_create_with_qpixmap in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_create_with_qpixmap in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_source_image(void*, _cairo_image_surface**, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_create_with_qimage in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_create_with_qimage in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_dest_image(void*, _cairo_rectangle_int*, _cairo_image_surface**, _cairo_rectangle_int*, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_dest_image(void*, _cairo_rectangle_int*, _cairo_image_surface**, _cairo_rectangle_int*, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_dest_image(void*, _cairo_rectangle_int*, _cairo_image_surface**, _cairo_rectangle_int*, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_dest_image(void*, _cairo_rectangle_int*, _cairo_image_surface**, _cairo_rectangle_int*, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_composite(_cairo_operator, _cairo_pattern const*, _cairo_pattern const*, void*, int, int, int, int, int, int, unsigned int, unsigned int, _cairo_region*)in libcairo_cxx.a(cairo-qt-surface.o)
      PatternToBrushConverter::PatternToBrushConverter(_cairo_pattern const*)in libcairo_cxx.a(cairo-qt-surface.o)
      PatternToBrushConverter::PatternToBrushConverter(_cairo_pattern const*)in libcairo_cxx.a(cairo-qt-surface.o)
      PatternToBrushConverter::PatternToBrushConverter(_cairo_pattern const*)in libcairo_cxx.a(cairo-qt-surface.o)
  "typeinfo for std::bad_alloc", referenced from:
      __ZTISt9bad_alloc$non_lazy_ptr in libcairo_cxx.a(cairo-qt-surface.o)
     (maybe you meant: __ZTISt9bad_alloc$non_lazy_ptr)
  "___cxa_end_catch", referenced from:
      QVector<double>::realloc(int, int)in libcairo_cxx.a(cairo-qt-surface.o)
      QVector<double>::realloc(int, int)in libcairo_cxx.a(cairo-qt-surface.o)
  "___gxx_personality_v0", referenced from:
      ___gxx_personality_v0$non_lazy_ptr in libcairo_cxx.a(cairo-qt-surface.o)
     (maybe you meant: ___gxx_personality_v0$non_lazy_ptr)
  "operator delete(void*)", referenced from:
      _cairo_qt_surface_create_with_qpixmap in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_create_with_qpixmap in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_source_image(void*, _cairo_image_surface**, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_finish(void*)  in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_create_with_qimage in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_create_with_qimage in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_dest_image(void*, _cairo_rectangle_int*, _cairo_image_surface**, _cairo_rectangle_int*, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_acquire_dest_image(void*, _cairo_rectangle_int*, _cairo_image_surface**, _cairo_rectangle_int*, void**)in libcairo_cxx.a(cairo-qt-surface.o)
      _cairo_qt_surface_composite(_cairo_operator, _cairo_pattern const*, _cairo_pattern const*, void*, int, int, int, int, int, int, unsigned int, unsigned int, _cairo_region*)in libcairo_cxx.a(cairo-qt-surface.o)
      PatternToBrushConverter::PatternToBrushConverter(_cairo_pattern const*)in libcairo_cxx.a(cairo-qt-surface.o)
      PatternToBrushConverter::PatternToBrushConverter(_cairo_pattern const*)in libcairo_cxx.a(cairo-qt-surface.o)
  "___cxa_begin_catch", referenced from:
      QVector<double>::realloc(int, int)in libcairo_cxx.a(cairo-qt-surface.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Comment 1 Naohiro Aota gentoo-dev 2011-06-24 17:51:53 UTC
Created attachment 278031 [details]
proposed patch

Maybe libstdc++ is missing??

I was able to build the package (at least on Prefix MacOSX) with the attached patch.
Comment 2 Naohiro Aota gentoo-dev 2011-08-05 22:01:24 UTC
ping. No one has this problem?

I've installed using 

[ebuild     UD ] x11-libs/cairo-1.10.2-r1 [1.10.2-r2] USE="X aqua glib qt4 svg -debug (-directfb) -doc (-drm) (-gallium) -opengl (-openvg) -static-libs -xcb"
Comment 3 Fabian Groffen gentoo-dev 2011-08-06 08:33:50 UTC
I think this might be caused by the build using gcc, not g++.  Apple gcc doesn't like that.
Comment 4 Naohiro Aota gentoo-dev 2011-08-06 16:17:02 UTC
(In reply to comment #3)
> I think this might be caused by the build using gcc, not g++.  Apple gcc
> doesn't like that.

From generated src/Makefile:

> libcairo_cxx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
>        $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
>        $(AM_CXXFLAGS) $(CXXFLAGS) $(libcairo_cxx_la_LDFLAGS) \
>        $(LDFLAGS) -o $@
(snip)
> libcairo_cxx.la: $(libcairo_cxx_la_OBJECTS) $(libcairo_cxx_la_DEPENDENCIES)
>         $(AM_V_CXXLD)$(libcairo_cxx_la_LINK) $(am_libcairo_cxx_la_rpath) $(libcairo_cxx_la_OBJECTS) $(libcairo_cxx_la_LIBADD) $(LIBS)

seems it built with CXX (should be g++)?
Comment 5 Fabian Groffen gentoo-dev 2011-08-07 09:34:45 UTC
CXX should be g++, so the build stuff seems right.  Odd.  It probably barfs because everything is compiled using gcc, and just linked using g++.

Since the package is in gx86, you are free to commit this change yourself, if you're confident about it.  You could try building everything with g++ (CC=$CXX) and see if that works.
Comment 6 Fabian Groffen gentoo-dev 2011-08-27 11:23:12 UTC
Feel free to apply your patch.  I think it's related to qt4 USE-flag.  (Prefix uses gx86 version directly)
Comment 7 Naohiro Aota gentoo-dev 2011-08-30 07:26:13 UTC
(In reply to comment #6)
> Feel free to apply your patch.  I think it's related to qt4 USE-flag.  (Prefix
> uses gx86 version directly)

Apply to gx86 tree? then CC to cairo maintainers to ask their comments.
Comment 8 Chí-Thanh Christopher Nguyễn gentoo-dev 2011-08-30 07:30:11 UTC
What is the upstream status of this patch?
Comment 9 Greg Turner 2012-11-29 11:44:34 UTC
Created attachment 330914 [details, diff]
Patch some additional makefiles that I needed

With =x11-libs/cairo-1.12.8 on an amd64 prefix, I had to use the enclosed, which augments the original patch with several similar patches, to get it working... this approach kinda feels gross but I can't say I have any better ideas.