From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 06/15 v5] package/eudev: split udev/libudev
Date: Mon, 1 Sep 2014 15:38:18 +0200 [thread overview]
Message-ID: <2e7ea12038b509e90ef023bf8e48732655d66f9d.1409578332.git.yann.morin.1998@free.fr> (raw)
In-Reply-To: <cover.1409578332.git.yann.morin.1998@free.fr>
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 <bernd.kuhls@t-online.de>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[ Compiled for x86 target with glibc 2.18 and Kernel headers 3.15.x ]
Tested-by: Cedric Chedaleux <cedric.chedaleux@orange.com>
---
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 <eric.le.bihan.dev@free.fr>
+[yann.morin.1998 at free.fr: adapt to 1.10]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
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
next prev parent reply other threads:[~2014-09-01 13:38 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-01 13:38 [Buildroot] [PATCH 0/15 v5] Introduce libudev (branch yem/libudev2) Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 01/15 v5] support/gen-manual-lists.py: rework generating the virtual package list Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 02/15 v5] package/libudev: new virtual package Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 03/15 v5] package/eudev: is a provider for libudev Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 04/15 v5] package/systemd: " Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 05/15 v5] package/eudev: bump to 1.10 Yann E. MORIN
2014-10-12 7:53 ` Peter Korsgaard
2014-09-01 13:38 ` Yann E. MORIN [this message]
2014-09-01 13:38 ` [Buildroot] [PATCH 07/15 v5] package/mesa3d: depends on libudev, not udev Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 08/15 v5] package/libcec: needs libudev, not a udev daemon Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 09/15 v5] package/libdrm: can also use only libudev Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 10/15 v5] package/xdriver_xf86-input-evdev: needs libudev, not a udev daemon Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 11/15 v5] [RFC] package/libatasmart: " Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 12/15 v5] [RFC] package/libinput: " Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 13/15 v5] [RFC] package/libusb: " Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 14/15 v5] [RFC] package/vlc: " Yann E. MORIN
2014-09-01 13:38 ` [Buildroot] [PATCH 15/15 v5] [RFC] package/weston: " Yann E. MORIN
2014-09-06 16:07 ` [Buildroot] [PATCH 0/15 v5] Introduce libudev (branch yem/libudev2) Bernd Kuhls
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2e7ea12038b509e90ef023bf8e48732655d66f9d.1409578332.git.yann.morin.1998@free.fr \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.