All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.