pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: cairo build error (any2ppm.c:(.text+0x158): undefined reference to `cairo_image_surface_create')



Am Fri, 10 Oct 2014 14:14:43 +0200
schrieb Thomas Klausner <wiz%NetBSD.org@localhost>:

> Try adding 'MAKE_FLAGS+= V=1 VERBOSE=1' in
> pkgsrc/graphics/cairo/Makefile.

Well, that looks somewhat like this (line breaks added since over 2000
characters may be too much for some software ...):

--- any2ppm ---
/bin/sh ../libtool  --tag=CC    --mode=link gcc      -O2 -Wno-error -O2
-I/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/include
-I/usr/include
-I/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/include/libdrm
-I/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/include/freetype2
-Wl,--allow-shlib-undefined
-L/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/lib
-Wl,-R/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/lib -o any2ppm
any2ppm-any2ppm.o ../util/cairo-script/libcairo-script-interpreter.la  ../src/libcairo.la
-lrt  -lm libtool: link: gcc -O2 -Wno-error -O2
-I/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/include
-I/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/include/libdrm
-I/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/include/freetype2
-Wl,--allow-shlib-undefined
-Wl,-R/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/lib
-o .libs/any2ppm any2ppm-any2ppm.o
-L/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/cairo-1.12.16/src/.libs
-L/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib ../util/cairo-script/.libs/libcairo-script-interpreter.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/cairo-1.12.16/src/.libs/libcairo.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/liblzo2.so ../src/.libs/libcairo.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libpixman-1.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libfontconfig.so
-lexpat /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libfreetype.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libbz2.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libpng16.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb-shm.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb-render.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXrender.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXext.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libX11.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXau.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXdmcp.so
-ldl -lz -lrt -lm -pthread -Wl,-rpath
-Wl,/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/lib -Wl,-rpath
-Wl,/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib

any2ppm-any2ppm.o: In function `_create_image':
any2ppm.c:(.text+0x158): undefined reference to
`cairo_image_surface_create'

This really looks messy ... I see libcairo.so being linked in multiple times.

But, well, of course it is a badly built library:

sh$ nm -g /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/cairo-1.12.16/src/.libs/libcairo.so
0000000000201028 B __bss_start
                 w __cxa_finalize@@GLIBC_2.2.5
0000000000201028 D _edata
0000000000201038 B _end
0000000000000718 T _fini
                 w __gmon_start__
00000000000005c0 T _init
                 w _Jv_RegisterClasses

While in a self-built cairo (outside pkgsrc buildinks):

sh$ nm  -g src/.libs/libcairo.so | wc -l
642
sh$ nm  -g src/.libs/libcairo.so | grep cairo_image
0000000000034c90 T cairo_image_surface_create
0000000000034b30 T cairo_image_surface_create_for_data
000000000009d130 T cairo_image_surface_create_from_png
000000000009ce90 T cairo_image_surface_create_from_png_stream
00000000000340b0 T cairo_image_surface_get_data
0000000000034070 T cairo_image_surface_get_format
0000000000033ff0 T cairo_image_surface_get_height
0000000000033fb0 T cairo_image_surface_get_stride
0000000000034030 T cairo_image_surface_get_width

Well, I'm trying to trace where things go wrong, starting by dropping
the LTO-disabling patch that I needed to make things work with gcc-4.8
on another system. And I'll be damned, of course it works now.

That's the bad linking of libcairo.so:

libtool: link: gcc -shared  -fPIC -DPIC   -Wl,-rpath
-Wl,/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib
-Wl,-rpath
-Wl,/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib
-L/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libpixman-1.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libfontconfig.so
-lexpat /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libfreetype.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libbz2.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libpng16.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb-shm.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb-render.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXrender.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXext.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libX11.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXau.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXdmcp.so
-ldl -lz -lrt -lm  -O2
-Wl,-R/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/lib   -pthread
-Wl,-soname -Wl,libcairo.so.2 -o .libs/libcairo.so.2.11200.16

That's the good one:

libtool: link: gcc -shared  -fPIC
-DPIC  .libs/cairo-analysis-surface.o .libs/cairo-arc.o .libs/cairo-array.o .libs/cairo-atomic.o .libs/cairo-base64-stream.o .libs/cairo-base85-stream.o .libs/cairo-bentley-ottmann.o .libs/cairo-bentley-ottmann-rectangular.o .libs/cairo-bentley-ottmann-rectilinear.o .libs/cairo-botor-scan-converter.o .libs/cairo-boxes.o .libs/cairo-boxes-intersect.o .libs/cairo.o .libs/cairo-cache.o .libs/cairo-clip.o .libs/cairo-clip-boxes.o .libs/cairo-clip-polygon.o .libs/cairo-clip-region.o .libs/cairo-clip-surface.o .libs/cairo-color.o .libs/cairo-composite-rectangles.o .libs/cairo-compositor.o .libs/cairo-contour.o .libs/cairo-damage.o .libs/cairo-debug.o .libs/cairo-default-context.o .libs/cairo-device.o .libs/cairo-error.o .libs/cairo-fallback-compositor.o .libs/cairo-fixed.o .libs/cairo-font-face.o .libs/cairo-font-face-twin.o .libs/cairo-font-face-twin-data.o .libs/cairo-font-options.o .libs/cairo-freelist.o .libs/cairo-freed-pool.o .libs/cairo-gstate.o .libs/cairo-hash.o .libs/cairo-hull.o .libs/cairo-image-compositor.o .libs/cairo-image-info.o .libs/cairo-image-source.o .libs/cairo-image-surface.o .libs/cairo-lzw.o .libs/cairo-matrix.o .libs/cairo-mask-compositor.o .libs/cairo-mesh-pattern-rasterizer.o .libs/cairo-mempool.o .libs/cairo-misc.o .libs/cairo-mono-scan-converter.o .libs/cairo-mutex.o .libs/cairo-no-compositor.o .libs/cairo-observer.o .libs/cairo-output-stream.o .libs/cairo-paginated-surface.o .libs/cairo-path-bounds.o .libs/cairo-path.o .libs/cairo-path-fill.o .libs/cairo-path-fixed.o .libs/cairo-path-in-fill.o .libs/cairo-path-stroke.o .libs/cairo-path-stroke-boxes.o .libs/cairo-path-stroke-polygon.o .libs/cairo-path-stroke-traps.o .libs/cairo-path-stroke-tristrip.o .libs/cairo-pattern.o .libs/cairo-pen.o .libs/cairo-polygon.o .libs/cairo-polygon-intersect.o .libs/cairo-polygon-reduce.o .libs/cairo-raster-source-pattern.o .libs/cairo-recording-surface.o .libs/cairo-rectangle.o .libs/cairo-rectangular-scan-converter.o .libs/cairo-region.o .libs/cairo-rtree.o .libs/cairo-scaled-font.o .libs/cairo-shape-mask-compositor.o .libs/cairo-slope.o .libs/cairo-spans.o .libs/cairo-spans-compositor.o .libs/cairo-spline.o .libs/cairo-stroke-dash.o .libs/cairo-stroke-style.o .libs/cairo-surface.o .libs/cairo-surface-clipper.o .libs/cairo-surface-fallback.o .libs/cairo-surface-observer.o .libs/cairo-surface-offset.o .libs/cairo-surface-snapshot.o .libs/cairo-surface-subsurface.o .libs/cairo-surface-wrapper.o .libs/cairo-time.o .libs/cairo-tor-scan-converter.o .libs/cairo-tor22-scan-converter.o .libs/cairo-clip-tor-scan-converter.o .libs/cairo-toy-font-face.o .libs/cairo-traps.o .libs/cairo-tristrip.o .libs/cairo-traps-compositor.o .libs/cairo-unicode.o .libs/cairo-user-font.o .libs/cairo-version.o .libs/cairo-wideint.o .libs/cairo-cff-subset.o .libs/cairo-scaled-font-subsets.o .libs/cairo-truetype-subset.o .libs/cairo-type1-fallback.o .libs/cairo-type1-glyph-names.o .libs/cairo-type1-subset.o .libs/cairo-type3-glyph-surface.o .libs/cairo-pdf-operators.o .libs/cairo-pdf-shading.o .libs/cairo-deflate-stream.o .libs/cairo-xlib-display.o .libs/cairo-xlib-core-compositor.o .libs/cairo-xlib-fallback-compositor.o .libs/cairo-xlib-render-compositor.o .libs/cairo-xlib-screen.o .libs/cairo-xlib-source.o .libs/cairo-xlib-surface.o .libs/cairo-xlib-surface-shm.o .libs/cairo-xlib-visual.o .libs/cairo-xlib-xcb-surface.o .libs/cairo-xcb-connection.o .libs/cairo-xcb-connection-core.o .libs/cairo-xcb-connection-render.o .libs/cairo-xcb-connection-shm.o .libs/cairo-xcb-screen.o .libs/cairo-xcb-shm.o .libs/cairo-xcb-surface.o .libs/cairo-xcb-surface-core.o .libs/cairo-xcb-surface-render.o .libs/cairo-png.o .libs/cairo-script-surface.o .libs/cairo-ft-font.o .libs/cairo-ps-surface.o .libs/cairo-pdf-surface.o .libs/cairo-svg-surface.o .libs/cairo-tee-surface.o
-Wl,-rpath
-Wl,/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib
-Wl,-rpath
-Wl,/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib
-L/dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libpixman-1.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libfontconfig.so
-lexpat /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libfreetype.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libbz2.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libpng16.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb-shm.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb-render.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXrender.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXext.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libX11.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libxcb.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXau.so /dev/shm/sw-work/work-with-system-gcc-4.3.4/pkgsrc-2014Q3/graphics/cairo/work/.buildlink/lib/libXdmcp.so
-ldl -lz -lpthread -lrt -lm  -O2
-Wl,-R/dev/shm/sw-test/system-gcc-4.3.4/pkgsrc/2014Q3/_/lib -pthread
-pthread -Wl,-soname -Wl,libcairo.so.2 -o .libs/libcairo.so.2.11200.16


Obviously, the patch rips out quite a lot of it. I wonder, though, if
this is only a side-effect of re-creating the build cruft:

+# Regenerate configure because of patch for --disable-lto.
+
+USE_TOOLS+=          autoconf automake
+
+pre-configure:
+	cd ${WRKSRC} && ./autogen.sh

I'll try just with that piece ... Hah! That's it! Same issue. Seems
like I need to enforce autotools? I see that pkgsrc already does
something there because autogen.sh plainly fails on the bare system with

configure.ac:17: warning: macro `AM_SILENT_RULES' not found in library
autoreconf: running: /usr/bin/autoconf
configure.ac:17: error: possibly undefined macro: AM_SILENT_RULES
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1


Well, isn't software fun? OK, so this is my fault for fixing cairo on
another system. I guess installing proper autotools from pkgsrc, and
enforcing them, should be my first step anyhow ...

> > What I really would like is a command for "drop me into an interactive
> > shell with the pkgsrc wrappers setup for interactive debugging for
> > $RANDOM_ISSUE in the code" instead of poking with special bmake
> > invocations. Is there such a command? 
> 
> That sounds like a good idea, but I don't think we have that yet.

Well, you agreeing that it would be nice is a start;-) I guess some
standard target that just starts a shell should do it ...

> You seem to have dropped the mailing list cc, so I didn't re-add it.
> But there are more people there who can help...

That was not by intent. I am accustomed to just replying to mailing
list posts and have the reply going to the mailing list by default.
Actually, I'm not a fan of getting extra CC from mailing lists as I
tend to keep the discussion archived anyway. I need to be more careful
on pkgsrc-devel.


Alrighty then,

Thomas

-- 
Dr. Thomas Orgis
Universität Hamburg
RRZ / Zentrale Dienste / HPC
Schlüterstr. 70
20146 Hamburg
Tel.: 040/42838 8826
Fax: 040/428 38 6270

Attachment: smime.p7s
Description: S/MIME cryptographic signature



Home | Main Index | Thread Index | Old Index