[oe] problem building uclibc + udev

Cliff Brake cliff.brake at gmail.com
Tue Aug 25 21:11:45 UTC 2009


I'm running into the following issue building udev:

NOTE: Running task 606 of 631 (ID: 8,
/build/oe/oe-testing/openembedded/recipes/udev/udev_141.bb,
do_compile)
ERROR: function do_compile failed
ERROR: log data follows
(/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/temp/log.do_compile.14745)
| NOTE: make -j 5
| make  all-recursive
| make[1]: Entering directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141'
| Making all in udev
| make[2]: Entering directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
| Making all in lib
| make[3]: Entering directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev/lib'
| make[3]: Nothing to be done for `all'.
| make[3]: Leaving directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev/lib'
| make[3]: Entering directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
| /bin/sh ../arm-angstrom-linux-uclibcgnueabi-libtool --tag=CC
--mode=link arm-angstrom-linux-uclibcgnueabi-gcc -march=armv7-a
-mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
-isystem/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/include
-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2
-ggdb3 -Wl,--as-needed
-L/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
-Wl,-rpath-link,/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
-Wl,-O1 -Wl,--hash-style=gnu -o udevd udev-event.o udev-watch.o
udev-node.o udev-rules.o udev-util.o libudev.o libudev-list.o
libudev-util.o libudev-device.o libudev-device-db-write.o
libudev-monitor.o libudev-enumerate.o libudev-queue.o libudev-ctrl.o
udevd.o
| arm-angstrom-linux-uclibcgnueabi-libtool: link:
arm-angstrom-linux-uclibcgnueabi-gcc -march=armv7-a -mtune=cortex-a8
-mfpu=neon -mfloat-abi=softfp
-isystem/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/include
-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2
-ggdb3 -Wl,--as-needed -Wl,-rpath-link
-Wl,/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
-Wl,-O1 -Wl,--hash-style=gnu -o udevd udev-event.o udev-watch.o
udev-node.o udev-rules.o udev-util.o libudev.o libudev-list.o
libudev-util.o libudev-device.o libudev-device-db-write.o
libudev-monitor.o libudev-enumerate.o libudev-queue.o libudev-ctrl.o
udevd.o  -L/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
| udevd.o: In function `main':
| /build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev/udevd.c:978:
undefined reference to `ppoll'
| collect2: ld returned 1 exit status
| make[3]: *** [udevd] Error 1
| make[3]: Leaving directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
| make[2]: *** [all-recursive] Error 1
| make[2]: Leaving directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
| make[1]: *** [all-recursive] Error 1
| make[1]: Leaving directory
`/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141'
| make: *** [all] Error 2
| FATAL: oe_runmake failed

It appears that uclibc is being built without ppoll as the headers
don't have it.  The beagleboard kernel is patched
(http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=1f0d91e152f16fbd40bb2fb3c44a30d774d4dede)
to include ppoll, and the headers are modified as such:

cbrake at happy:/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging$
searchc ppoll
./armv7a-angstrom-linux-uclibcgnueabi/usr/include/asm/unistd.h:
                         /* 336 for ppoll */
./beagleboard-angstrom-linux-gnueabi/kernel/arch/arm/include/asm/unistd.h:#define
__NR_ppoll                    (__NR_SYSCALL_BASE+336)
./beagleboard-angstrom-linux-gnueabi/kernel/include/linux/syscalls.h:asmlinkage
long sys_ppoll(struct pollfd __user *, unsigned int,
./beagleboard-angstrom-linux-gnueabi/kernel/include/asm-arm/unistd.h:#define
__NR_ppoll                 (__NR_SYSCALL_BASE+336)
./armv7a-angstrom-linux-gnueabi/usr/include/asm/unistd.h:
                         /* 336 for ppoll */
./armv7a-angstrom-linux-gnueabi/usr/include/sys/poll.h:extern int
ppoll (struct pollfd *__fds, nfds_t __nfds,

However, the headers are only modified in the kernel include
directory.  I suspect uclibc is getting unistd.h from the usr/include
directory which does not have __NR_ppoll defined.  What is the best
way to fix this.  I suspect we need to tell uclibc to look at the
kernel headers?

Thanks,
Cliff




More information about the Openembedded-devel mailing list