@@ -296,7 +296,6 @@ endif
source "package/dvbsnoop/Config.in"
source "package/dtv-scan-tables/Config.in"
source "package/eeprog/Config.in"
- source "package/eudev/Config.in"
source "package/evemu/Config.in"
source "package/evtest/Config.in"
source "package/fan-ctrl/Config.in"
@@ -663,6 +662,7 @@ menu "Hardware handling"
source "package/librtlsdr/Config.in"
source "package/libserial/Config.in"
source "package/libsoc/Config.in"
+ source "package/eudev/Config.in" # prompt is 'libudev'
source "package/libudev/Config.in"
source "package/libusb/Config.in"
source "package/libusb-compat/Config.in"
@@ -4,8 +4,29 @@
# However, it seems more logical to have the dependencies listed here,
# so it is easier to uderstand why we have those, and duplicate them in
# the choice entry.
+#
+# Note, although named 'eudev', this package primarily provides libudev,
+# unless the /dev management is selected to be eudev, in which case this
+# package will provide a full udev. That's why the prompt is 'libudev'.
config BR2_PACKAGE_EUDEV
+ bool "libudev"
+ 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 if !BR2_PACKAGE_EUDEV_DAEMON
+ 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_EUDEV_DAEMON
bool
depends on !BR2_avr32 # no epoll_create1
depends on BR2_USE_MMU # uses fork()
@@ -18,7 +39,7 @@ config BR2_PACKAGE_EUDEV
select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
select BR2_PACKAGE_KMOD
-if BR2_PACKAGE_EUDEV
+if BR2_PACKAGE_EUDEV_DAEMON
config BR2_PACKAGE_PROVIDES_LIBUDEV
default "eudev"
@@ -31,4 +52,19 @@ config BR2_PACKAGE_EUDEV_RULES_GEN
help
Enable persistent rules generator
-endif
+endif # BR2_PACKAGE_EUDEV_DAEMON
+
+# If the daemon is selected, it means we have a full udev, which is
+# responsible for providing libudev. So only provide libudev if the
+# daemon is not selected.
+config BR2_PACKAGE_PROVIDES_LIBUDEV
+ default "eudev" if !BR2_PACKAGE_EUDEV_DAEMON
+
+endif # BR2_PACKAGE_EUDEV
+
+comment "libudev needs a toolchain w/ wchar, dynamic library"
+ depends on !BR2_USE_WCHAR || BR2_PREFER_STATIC_LIB
+ depends on !BR2_PACKAGE_SYSTEMD
+
+comment "libudev provided by systemd"
+ depends on BR2_PACKAGE_SYSTEMD
@@ -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,36 @@ 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/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.
+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))
@@ -160,12 +160,13 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV
config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
bool "Dynamic using eudev"
- depends on !BR2_avr32 # eudev (no epoll_create1)
+ depends on !BR2_avr32 # eudev
depends on BR2_USE_MMU # eudev (fork)
- depends on BR2_LARGEFILE # eudev (util-linux)
+ 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.
@@ -174,7 +175,7 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
and inotify.
You can further configure systemd in:
- Target packages --> Hardware handling
+ Target packages --> Libraries --> Hardware handling --> libudev
http://github.com/gentoo/eudev/