is graphics/linux-cairo broken?

Rick C. Petty rick-freebsd at kiwi-computer.com
Tue Jan 1 23:23:55 PST 2008


Like many people, I upgrade my ports by building everything in a staging
area using chroot(1).  For the last few days I've had a terrible time
with this process because I've been bumping into a problem with the
graphics/linux-cairo port (there may be others??).

I'm running 6.3-PRERELEASE and I've csup'd my world/kernel and staging area
multiple times today.  Here's the output when I hit linux-cairo:

===>  Cleaning for linux-cairo-1.0.2
===>  Vulnerability check disabled, database not found
===>  Extracting for linux-cairo-1.0.2
=> MD5 Checksum OK for rpm/i386/fedora/4/cairo-1.0.2-2.gst.1.4.i386.rpm.
=> SHA256 Checksum OK for rpm/i386/fedora/4/cairo-1.0.2-2.gst.1.4.i386.rpm.
===>   linux-cairo-1.0.2 depends on file: /usr/local/bin/rpm2cpio - found
===>  Patching for linux-cairo-1.0.2
===>  Configuring for linux-cairo-1.0.2
===>  Installing for linux-cairo-1.0.2
===>   Generating temporary packing list
===>  Checking if graphics/linux-cairo already installed
cd /usr/ports/graphics/linux-cairo/work && /usr/bin/find * -type d -exec /bin/mkdir -p "/compat/linux/{}" \;
cd /usr/ports/graphics/linux-cairo/work && /usr/bin/find * ! -type d | /usr/bin/cpio -pm -R root:wheel /compat/linux
1523 blocks
===>   Running ldconfig
/sbin/ldconfig -m /compat/linux/lib
/libexec/ld-elf.so.1: Undefined symbol "__stdoutp" referenced from COPY relocation in /bin/sh
*** Error code 1

Stop in /usr/ports/graphics/linux-cairo.

===>>> Installation of new port failed
===>>> Aborting update
/libexec/ld-elf.so.1: Undefined symbol "__stdoutp" referenced from COPY relocation in ps

/libexec/ld-elf.so.1: Undefined symbol "__stdinp" referenced from COPY relocation in rm
/libexec/ld-elf.so.1: Undefined symbol "__stdinp" referenced from COPY relocation in rm


~~~~~~~~~~

Obviously any further commands break with similar undefined symbols.  The
problem is that FreeBSD's ldconfig is being run (instead of Linux's) to
merge /compat/linux/lib in with the FreeBSD bits.  Since I was thankfully
running in a chroot, I can just remove the /var/run/ld-elf.so.hints file
but I also have to remove /compat/linux/lib from my ldconfig directories.
The FreeBSD libs shouldn't be mixing with the Linux libs, right?

My guess is linux-cairo shouldn't be setting USE_LDCONFIG or it should
redefine LDCONFIG to use ${LINUXBASE}/sbin/ldconfig and perhaps run it via
chroot.  If I'm correct, this isn't the only port which is broken.  A
bunch of other linux ports do something similar and in different ways (see
"grep -i ldconfig /usr/ports/*/linux*/Makefile").

How come I'm the first to be hosed by this?  Or maybe I'm missing something
obvious?

-- Rick C. Petty


More information about the freebsd-emulation mailing list