From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Zeuthen Date: Mon, 08 Dec 2003 20:11:10 +0000 Subject: Re: D-BUS patch for udev-008 Message-Id: List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org On Mon, 2003-12-08 at 20:40, Greg KH wrote: > On Mon, Dec 08, 2003 at 12:01:01AM +0100, David Zeuthen wrote: > > Hi, > > > > Attached is a patch against udev-008 to send out a D-BUS message when a > > device node is added or removed. > > Very nice. I've applied your patch, and then made the following > changes: > - fixed the formatting to use tabs instead of spaces > - removed all of the #ifdef USE_DBUS statments out of the code > (I've been writing kernel code too long, #ifdef within .c > files looks ugly to me...) and created a new file udev_dbus.c > to hold these functions. > - changed the Makefile variable to DBUS instead of USE_DBUS > - turned the default option to not build the DBUS support as I > can't get it to link properly on a number of different OSs. > Many thanks for this. > > How did you test this? I get lots of errors at link time using a Fedora > 1 machine. And I can't even build DBUS on an old Red Hat 7.3 box due to > automake issues :( > I'm using Fedora 1 with D-BUS from CVS installed in /usr/local. I do get a few message from the linker because of static linking, see below, but it does link. What's the reason for linking statically? Btw, Fedora 1 ships with D-BUS 0.13 which is way different from D-BUS in CVS, so you might need to set PKG_CONFIG_PATH to point to the correct dbus-1.pc and install udev_sysbus_policy.conf into the proper location. Oh, and even though you have done this, you might still link with the old D-BUS because I made a mistake in the Makefile. You need to change LIB_OBJS += $(shell pkg-config --libs-only-l dbus-1) to something like LDFLAGS += $(shell pkg-config --libs dbus-1) yes? (I was tweaking the Makefile quite a lot myself; sorry about that) I've also found a problem with my patch: There's an issue where when two instances of udev is running at the same time (processing /block/sda and /block/sda/sda1 when plugging in usb-storage). One of the copies become a secondary owner of the org.kernel.udev service and this means that the emitted D-BUS signal doesn't appear to come from the owner of that service as I thought it would. I'm not sure if this is the intended behavior of D-BUS, it might be.. The only reason it works in python is that, uhm, the python bindings are a bit broken. It only works in C if you ignore filtering on service owner. Cheers, David [david@laptop udev-008]$ touch udev.c [david@laptop udev-008]$ make gcc -pipe -Wall -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Os -fomit-frame-pointer -D_GNU_SOURCE -I/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/include -DUSE_DBUS -I/usr/local/include/dbus-1.0 -I/usr/local/lib/dbus-1.0/include -c -o udev.o udev.c udev.c:75: warning: function declaration isn't a prototype udev.c:85: warning: function declaration isn't a prototype gcc --static -o udev udev.o udev_config.o udev-add.o udev-remove.o udevdb.o logging.o namedev.o namedev_parse.o libsysfs/sysfs_bus.o libsysfs/sysfs_class.o libsysfs/sysfs_device.o libsysfs/sysfs_dir.o libsysfs/sysfs_driver.o libsysfs/sysfs_utils.o libsysfs/dlist.o tdb/tdb.o tdb/spinlock.o -lc -ldbus-1 udev-add.o(.text+0x30d): 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+0x2cb): In function `create_node': : warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/local/lib/libdbus-1.a(dbus-sysdeps.o)(.text+0x14e0): In function `fill_user_info': /home/david/xdg-hacking/dbus/dbus/dbus-sysdeps.c:1504: warning: Using 'getgrouplist' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/local/lib/libdbus-1.a(dbus-sysdeps.o)(.text+0x1482):/home/david/xdg-hacking/dbus/dbus/dbus-sysdeps.c:1467: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/local/lib/libdbus-1.a(dbus-sysdeps.o)(.text+0x6e3): In function `_dbus_connect_tcp_socket': /home/david/xdg-hacking/dbus/dbus/dbus-sysdeps.c:617: warning: Using 'gethostbyname' 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 ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id78&alloc_id371&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel