From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Mon, 1 Sep 2014 15:38:18 +0200 Subject: [Buildroot] [PATCH 06/15 v5] package/eudev: split udev/libudev In-Reply-To: References: Message-ID: <2e7ea12038b509e90ef023bf8e48732655d66f9d.1409578332.git.yann.morin.1998@free.fr> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Quite a few packages are happy with just libudev, and not a full udev daemon running. Split the eudev package so that we can install just libudev if /dev management is not handled by eudev. When only the library is installed, behave as a provider for the libudev virtual package. If /dev management is handled by eudev, then also be a provider for the udev virtual package. Adjust comments of dependencies accordingly. Note: Most of the .mk splitting of the dependencies and the build/install rules are from Bernd. Thanks! :-) Signed-off-by: Bernd Kuhls Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni [ Compiled for x86 target with glibc 2.18 and Kernel headers 3.15.x ] Tested-by: Cedric Chedaleux --- Changes v4 -> v5: - building libudev requires two steps (Bernd) Changes RFCv2-> v3: - typo s/system/systemd/ Changes RFCv1 -> RFCv2: - be a provider for libudev always, since udev is not such a provider any more (Thomas) --- package/eudev/Config.in | 32 ++++++++++--- ...y-use-pragma-for-ignoring-diagnostics-if-.patch | 8 ++-- package/eudev/eudev.mk | 53 ++++++++++++++++++++-- system/Config.in | 20 ++++++-- 4 files changed, 94 insertions(+), 19 deletions(-) diff --git a/package/eudev/Config.in b/package/eudev/Config.in index 7aaa540..f6fa5ba 100644 --- a/package/eudev/Config.in +++ b/package/eudev/Config.in @@ -1,13 +1,33 @@ config BR2_PACKAGE_EUDEV bool "eudev" depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + depends on !BR2_avr32 # no __NR_name_to_handle_at + depends on BR2_USE_WCHAR + depends on !BR2_PREFER_STATIC_LIB + depends on !BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_HAS_LIBUDEV + help + eudev is a fork of systemd-udev with the goal of obtaining better + compatibility with existing software. + + This installs only the libudev library. + + http://www.gentoo.org/proj/en/eudev/ + +if BR2_PACKAGE_EUDEV + +config BR2_PACKAGE_PROVIDES_LIBUDEV + default "eudev" + +config BR2_PACKAGE_EUDEV_DAEMON + bool "udev daemon" + depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV depends on !BR2_avr32 # no epoll_create1 depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV depends on BR2_USE_MMU # uses fork() depends on BR2_LARGEFILE # util-linux depends on BR2_USE_WCHAR # util-linux depends on !BR2_PREFER_STATIC_LIB # kmod - select BR2_PACKAGE_HAS_LIBUDEV select BR2_PACKAGE_HAS_UDEV select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBBLKID @@ -21,10 +41,7 @@ config BR2_PACKAGE_EUDEV http://dev.gentoo.org/~blueness/eudev -if BR2_PACKAGE_EUDEV - -config BR2_PACKAGE_PROVIDES_LIBUDEV - default "eudev" +if BR2_PACKAGE_EUDEV_DAEMON config BR2_PACKAGE_PROVIDES_UDEV default "eudev" @@ -34,9 +51,9 @@ config BR2_PACKAGE_EUDEV_RULES_GEN help Enable persistent rules generator -endif +endif # BR2_PACKAGE_EUDEV_DAEMON -comment "eudev needs eudev /dev management" +comment "udev daemon needs eudev /dev management" depends on !BR2_avr32 depends on BR2_USE_MMU depends on !BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV @@ -48,3 +65,4 @@ comment "eudev needs a toolchain w/ largefile, wchar, dynamic library, headers > depends on BR2_USE_MMU depends on !BR2_LARGEFILE || !BR2_USE_WCHAR || BR2_PREFER_STATIC_LIB \ || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + depends on !BR2_PACKAGE_SYSTEMD diff --git a/package/eudev/eudev-0003-libudev-Only-use-pragma-for-ignoring-diagnostics-if-.patch b/package/eudev/eudev-0003-libudev-Only-use-pragma-for-ignoring-diagnostics-if-.patch index 8b70fbf..38dba9b 100644 --- a/package/eudev/eudev-0003-libudev-Only-use-pragma-for-ignoring-diagnostics-if-.patch +++ b/package/eudev/eudev-0003-libudev-Only-use-pragma-for-ignoring-diagnostics-if-.patch @@ -6,14 +6,16 @@ Subject: [PATCH] libudev: Only use #pragma for ignoring diagnostics if GCC Signed-off-by: Eric Le Bihan +[yann.morin.1998 at free.fr: adapt to 1.10] +Signed-off-by: "Yann E. MORIN" --- src/libudev/macro.h | 5 +++++ 1 file changed, 5 insertions(+) -diff --git a/src/libudev/macro.h b/src/libudev/macro.h +diff --git a/src/shared/macro.h b/src/shared/macro.h index ac2a23f..fb55983 100644 ---- a/src/libudev/macro.h -+++ b/src/libudev/macro.h +--- a/src/shared/macro.h ++++ b/src/shared/macro.h @@ -40,12 +40,17 @@ #define _cleanup_(x) __attribute__((cleanup(x))) diff --git a/package/eudev/eudev.mk b/package/eudev/eudev.mk index 811d72b..a593f99 100644 --- a/package/eudev/eudev.mk +++ b/package/eudev/eudev.mk @@ -16,19 +16,28 @@ EUDEV_CONF_ENV += LIBS=-lrt EUDEV_CONF_OPT = \ --disable-manpages \ - --sbindir=/sbin \ --with-rootlibdir=/lib \ --libexecdir=/lib \ --with-firmware-path=/lib/firmware \ --disable-introspection \ - --enable-split-usr \ - --enable-libkmod + --enable-split-usr + +EUDEV_DEPENDENCIES = host-pkgconf +EUDEV_PROVIDES = libudev + +ifeq ($(BR2_PACKAGE_EUDEV_DAEMON),y) + +EUDEV_DEPENDENCIES += host-gperf util-linux kmod +EUDEV_PROVIDES += udev -EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod -EUDEV_PROVIDES = libudev udev +EUDEV_CONF_OPT += \ + --sbindir=/sbin \ + --enable-libkmod ifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y) EUDEV_CONF_OPT += --enable-rule_generator +else +EUDEV_CONF_OPT += --disable-rule_generator endif ifeq ($(BR2_PACKAGE_LIBGLIB2),y) @@ -42,4 +51,38 @@ define EUDEV_INSTALL_INIT_SYSV $(INSTALL) -m 0755 package/eudev/S10udev $(TARGET_DIR)/etc/init.d/S10udev endef +else # ! daemon + +EUDEV_CONF_OPT += \ + --disable-keymap \ + --disable-libkmod \ + --disable-modules \ + --disable-selinux \ + --disable-rule-generator \ + --disable-gtk-doc \ + --disable-gudev + +# When not installing the daemon, we have to override the build and install +# commands, to just install the library. + +define EUDEV_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/shared + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/libudev +endef + +# Symlink udev.pc to libudev.pc for those packages that conflate the two +# and 'Requires: udev' when they should just 'Requires: libudev'. Do the +# symlink, to avoid patching each and all of those packages. +# Note: nothing to install from src/shared, only from src/libudev +define EUDEV_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/libudev DESTDIR=$(STAGING_DIR) install + ln -sf libudev.pc $(STAGING_DIR)/usr/lib/pkgconfig/udev.pc +endef + +define EUDEV_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/libudev DESTDIR=$(TARGET_DIR) install +endef + +endif # ! daemon + $(eval $(autotools-package)) diff --git a/system/Config.in b/system/Config.in index d5389d0..b5f5a65 100644 --- a/system/Config.in +++ b/system/Config.in @@ -126,11 +126,23 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV bool "Dynamic using eudev" depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 # eudev depends on !BR2_avr32 # eudev - depends on BR2_LARGEFILE - depends on BR2_USE_WCHAR - depends on !BR2_PREFER_STATIC_LIB - depends on BR2_USE_MMU # eudev + depends on BR2_USE_MMU # eudev (fork) + depends on BR2_LARGEFILE # eudev-daemon (util-linux) + depends on BR2_USE_WCHAR # eudev (util-linux) + depends on !BR2_PREFER_STATIC_LIB # eudev select BR2_PACKAGE_EUDEV + select BR2_PACKAGE_EUDEV_DAEMON + help + Userspace device daemon. This is a standalone version, + independent of systemd. It is a fork maintained by Gentoo. + + eudev requires a Linux kernel >= 2.6.34: it relies on devtmpfs + and inotify. + + You can further configure eudev in: + Target packages --> Libraries --> Hardware handling --> eudev + + http://dev.gentoo.org/~blueness/eudev comment "eudev needs a toolchain w/ largefile, wchar, dynamic library, headers >= 3.9" depends on !BR2_avr32 # eudev -- 1.9.1