[Buildroot] [PATCH v2 3/6] systemd: bump to v206.
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Sat Nov 2 18:31:39 UTC 2013
Dear Eric Le Bihan,
On Fri, 20 Sep 2013 14:24:04 +0200, Eric Le Bihan wrote:
> This patch bumps systemd to v206 but also converts udev to a virtual
> package.
I am a little bit concerned about bisectability throughout your patch
set. Have you thought about this? Is there a way of making sure things
will remain bisectable or it's really too complicated?
> The selection of the following packages will also add features:
>
> - libglib2 package will add support for gudev.
> - acl package will add support for multi-seat.
Maybe this text should be mentioned in the help text of the systemd
option.
> diff --git a/package/systemd/systemd-uclibc-fix.patch b/package/systemd/systemd-uclibc-fix.patch
> deleted file mode 100644
> index 9a20845..0000000
> --- a/package/systemd/systemd-uclibc-fix.patch
> +++ /dev/null
Without this patch (or similar patches), systemd does not build with
uClibc, so it should be marked to depend on (e)glibc.
> diff --git a/package/udev/Config.in b/package/udev/Config.in
> index d4d97c1..23c443e 100644
> --- a/package/udev/Config.in
> +++ b/package/udev/Config.in
> @@ -1,41 +1,2 @@
> config BR2_PACKAGE_UDEV
> - bool "udev"
> - depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
> - depends on BR2_LARGEFILE # util-linux
> - depends on BR2_USE_WCHAR # util-linux
> - depends on !BR2_PREFER_STATIC_LIB # kmod
> - select BR2_PACKAGE_UTIL_LINUX
> - select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> - select BR2_PACKAGE_KMOD
> - help
> - Userspace device daemon.
> -
> - udev requires a Linux kernel >= 2.6.34: it relies on devtmpfs.
> -
> - ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/
> -
> -if BR2_PACKAGE_UDEV
> -
> -config BR2_PACKAGE_UDEV_RULES_GEN
> - bool "enable rules generator"
> - help
> - Enable persistant rules generator
> -
> -config BR2_PACKAGE_UDEV_ALL_EXTRAS
> - bool "enable all extras"
> - select BR2_PACKAGE_ACL
> - select BR2_PACKAGE_HWDATA
> - select BR2_PACKAGE_LIBGLIB2
> - depends on BR2_USE_WCHAR # libglib2
> - depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
> - help
> - Enable all extras with external dependencies like
> - libacl, hwdata and libglib2
> -
> -comment "enabling all extras requires a toolchain with WCHAR and threading support"
> - depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
> -
> -endif
> -
> -comment "udev requires /dev mgmnt set to udev under System configuration"
> - depends on !BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
> + bool
> diff --git a/package/udev/udev.mk b/package/udev/udev.mk
> index db86850..c6fcdfc 100644
> --- a/package/udev/udev.mk
> +++ b/package/udev/udev.mk
> @@ -4,48 +4,6 @@
> #
> ################################################################################
>
> -UDEV_VERSION = 182
> -UDEV_SOURCE = udev-$(UDEV_VERSION).tar.xz
> -UDEV_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/hotplug/
> -UDEV_LICENSE = GPLv2+
> -UDEV_LICENSE_FILES = COPYING
> -UDEV_INSTALL_STAGING = YES
> +UDEV_SOURCE =
>
> -# mq_getattr is in librt
> -UDEV_CONF_ENV += LIBS=-lrt
> -
> -UDEV_CONF_OPT = \
> - --sbindir=/sbin \
> - --with-rootlibdir=/lib \
> - --libexecdir=/lib \
> - --with-usb-ids-path=/usr/share/hwdata/usb.ids \
> - --with-pci-ids-path=/usr/share/hwdata/pci.ids \
> - --with-firmware-path=/lib/firmware \
> - --disable-introspection
> -
> -UDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod
> -
> -ifeq ($(BR2_PACKAGE_UDEV_RULES_GEN),y)
> -UDEV_CONF_OPT += --enable-rule_generator
> -endif
> -
> -ifeq ($(BR2_PACKAGE_UDEV_ALL_EXTRAS),y)
> -UDEV_DEPENDENCIES += acl hwdata libglib2
> -UDEV_CONF_OPT += \
> - --enable-udev_acl
> -else
> -UDEV_CONF_OPT += \
> - --disable-gudev
> -endif
> -
> -ifeq ($(BR2_PACKAGE_SYSTEMD),y)
> - UDEV_CONF_OPT += --with-systemdsystemunitdir=/lib/systemd/system/
> -endif
> -
> -define UDEV_INSTALL_INITSCRIPT
> - $(INSTALL) -m 0755 package/udev/S10udev $(TARGET_DIR)/etc/init.d/S10udev
> -endef
> -
> -UDEV_POST_INSTALL_TARGET_HOOKS += UDEV_INSTALL_INITSCRIPT
> -
> -$(eval $(autotools-package))
> +$(eval $(generic-package))
So for the moment the udev virtual package is completely empty. It only
gets updated to depend on systemd in PATCH 5/6. Is this intentional?
> diff --git a/system/Config.in b/system/Config.in
> index 1fe4127..c16e8e7 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -83,16 +83,22 @@ config BR2_INIT_SYSTEMD
> depends on BR2_LARGEFILE
> depends on BR2_USE_WCHAR
> depends on BR2_INET_IPV6
> - depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
> depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on BR2_TOOLCHAIN_HAS_SSP
> depends on BR2_USE_MMU
> - select BR2_PACKAGE_DBUS
> + depends on !BR2_PREFER_STATIC_LIB
> + select BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
Why do we have this select? I must say I don't really follow what's
going on in system/Config.in in terms of init option vs. /dev
management options.
> select BR2_PACKAGE_SYSTEMD
>
> -comment 'systemd requires largefile, wchar, IPv6, threads and udev support'
> +comment 'systemd needs toolchain w/ largefile, wchar, IPv6, threads'
> depends on !(BR2_LARGEFILE && BR2_USE_WCHAR && \
> - BR2_INET_IPV6 && BR2_TOOLCHAIN_HAS_THREADS && \
> - BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV)
> + BR2_INET_IPV6 && BR2_TOOLCHAIN_HAS_THREADS)
> +
> +comment 'systemd needs toolchain w/ stack smashing protection'
> + depends on !BR2_TOOLCHAIN_HAS_SSP
Wow, that's probably the first package that has this requirement. What
happens when the toolchain doesn't have SSP support?
> +comment "systemd doesn't work with 'prefer static libraries'"
> + depends on BR2_PREFER_STATIC_LIB
>
> config BR2_INIT_NONE
> bool "None"
> @@ -100,7 +106,7 @@ config BR2_INIT_NONE
> endchoice
>
> choice
> - prompt "/dev management"
> + prompt "/dev management" if !BR2_INIT_SYSTEMD
Ok, so we show the /dev management only if another init system that
systemd is selected. Makes sense.
> default BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS
>
> config BR2_ROOTFS_DEVICE_CREATION_STATIC
> @@ -113,20 +119,14 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV
> bool "Dynamic using mdev"
> select BR2_PACKAGE_BUSYBOX
>
> +endchoice
> +
> config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
> - bool "Dynamic using udev"
> - depends on BR2_LARGEFILE # udev
> - depends on BR2_USE_WCHAR # udev
> - depends on !BR2_PREFER_STATIC_LIB # udev -> kmod
> + bool
> select BR2_PACKAGE_UDEV
>
> -comment "udev requires a toolchain with LARGEFILE + WCHAR support"
> - depends on !(BR2_LARGEFILE && BR2_USE_WCHAR)
> -
> -comment "udev doesn't work with 'prefer static libraries'"
> - depends on BR2_PREFER_STATIC_LIB
> -
> -endchoice
> +comment "/dev management using udev (from systemd)"
> + depends on BR2_INIT_SYSTEMD
I don't think this comment is really needed.
>
> config BR2_ROOTFS_DEVICE_TABLE
> string "Path to the permission tables"
In order to make the patch series bisectable, I think I would suggest
to have the following sequence:
* Introduce the eudev package
* Turn the udev package into a virtual package that uses the only
available udev implementation: eudev
* Bump the systemd package, and register it as a possible udev
implementation.
What do you think?
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
More information about the buildroot
mailing list