[oe] problem building uclibc + udev

Cliff Brake cliff.brake at gmail.com
Sat Aug 29 20:38:56 UTC 2009


On Tue, Aug 25, 2009 at 10:03 PM, Khem Raj<raj.khem at gmail.com> wrote:
> On (25/08/09 17:11), Cliff Brake wrote:
>> 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?
>
> it already does look into kernel headers to configure its system calls.
> All you need is to wireup this syscall in kernel and also in
> linux-libc-headers. IOW Port
> http://www.spinics.net/lists/arm-kernel/msg38114.html to both above
> places.

There are several solutions to this problem:

1) patch the kernel and linux-libc-headers with the attached patch
files (2.6.29 kernel, and 2.6.23 headers)
2) use the micro-base-image which uses mdev instead of udev.

Unfortunately, the linux-libc-headers patch is probably not distro
friendly as it modifies a non-machine specific package.  So there does
not seem to be a clear path forward.

Cliff
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-arm-ppoll-select.patch
Type: text/x-patch
Size: 2561 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20090829/ff10a2e8/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch
Type: text/x-patch
Size: 9043 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20090829/ff10a2e8/attachment-0005.bin>


More information about the Openembedded-devel mailing list