Emerging udev after having installed sysfsutils-0.4.0 give a compilation error. Udev compiles well only with sysfsutils Reproducible: Always Steps to Reproduce: 1.emerge -u sysfsutils 2.emerge -u udev 3. Actual Results: gcc --static -o udev udev.o udev_config.o udev-add.o udev-remove.o udevdb.o logging.o namedev.o namedev_parse.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/sysfs_bus.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/sysfs_class.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/sysfs_device.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/sysfs_dir.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/sysfs_driver.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/sysfs_utils.o /var/tmp/portage/udev-009/work/udev-009/libsysfs/dlist.o tdb/tdb.o tdb/spinlock.o -lc udev-add.o(.text+0x4e0): In function `create_node': : warning: Using 'getgrnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking udev-add.o(.text+0x531): In function `create_node': : warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking strip -s --remove-section=.note --remove-section=.comment udev extras/scsi_id make[1]: Entering directory `/var/tmp/portage/udev-009/work/udev-009/extras/scsi_id' gcc -mcpu=athlon-xp -O3 -pipe -pipe -Wall -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fomit-frame-pointer -D_GNU_SOURCE -I/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/include -I/var/tmp/portage/udev-009/work/udev-009/libsysfs -DSCSI_ID_VERSION=\"0.2\" -Wall -c -o scsi_id.o scsi_id.c scsi_id.c: In function `get_major_minor': scsi_id.c:161: error: too few arguments to function `sysfs_open_class_device' scsi_id.c: In function `scsi_id': scsi_id.c:711: error: too few arguments to function `sysfs_open_class_device' make[1]: *** [scsi_id.o] Error 1 make[1]: Leaving directory `/var/tmp/portage/udev-009/work/udev-009/extras/scsi_id' make: *** [all] Error 2 Expected Results: Udev doesn't work with sysfsutils-0.4.0 because some functions have changed their declaration with this version. You have to use sysfsutils-0.3.0. I suggest to add this dipendencies in the ude-009 ebuild Bye!
I can confirm this bug, just downgraded sysfsutils and now udevs compiled fine. With sysfsutils 0.4.0 it showed the same errors as shown above
again confirmed, any reason why compiling udev again sysfsutils-0.3.0 and then compiling sysfsutils-0.4.0 shouldn't work?
I confirm alos this here... Strange thing...
from the sysfs homepage: All sysfs_open_xxx() calls that take the absolute path as argument are now prefixed with "_path". eg., the earlier sysfs_open_device() is now sysfs_open_device_path().
its probably better to sed this rather than a patch, a sed line would be able to do every instance in the source tree with one command, but a patch would need to specify each one seperately. Unfortunately I dont know anything about sed, but I'll try and mug up on it tomorrow if no one else does it...
Created attachment 22513 [details, diff] patch for sysfs_open_class_device_path change just did a quick search/replace with rpl: rpl -R 'sysfs_open_class_device' 'sysfs_open_class_device_path' * someone might ought to take a look at /usr/portage/sys-fs/udev/files/udev-009-scsi_id-new-sysfs.patch too. there's some bits at the beginning and end that are neither diff nor patch.
the patch works fine, as does compiling udev against 0.3.0 then compiling sysfsutils-0.4.0
those bits that are neither diff nor patch are ok patch allows for that kind of free form text ... in this case we can see the patch was taken from the linux kernel mailing list
udev 010 has been released and fixes this *** This bug has been marked as a duplicate of 36327 ***
The problem is actually that it do not set the include path correct for scsi_id to use the included libsysfs headers ... We do not compile against external libsysfs for now, as they are not in sync, and breaks too much - when the api stabilize in future, we will use the external libsysfs again.