summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2012-07-28 09:21:20 +0200
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2012-07-30 23:12:17 +0200
commitc92aacd330366da803b1cf37ecb3af816bedd7f2 (patch)
treef36838bbd0555344d625a17130d0b9b575348106
parent09a29b6a897158070e87493935aba817a58c33fd (diff)
downloadbuildroot-novena-c92aacd330366da803b1cf37ecb3af816bedd7f2.tar.gz
buildroot-novena-c92aacd330366da803b1cf37ecb3af816bedd7f2.zip
Rework of the init system
Since we have now two uncompatible init systems, and we want only one of them at the same time in use in the rootfs, we need to select a particular init system. This patch also adds $(PKG)_INSTALL_INIT_SYSTEMD and $(PKG)_INSTALL_INIT_SYSV hooks that are called when the matching init systems are selected to install properly the init scripts of the package. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r--package/busybox/busybox.mk7
-rw-r--r--package/pkg-generic.mk8
-rw-r--r--target/generic/Config.in29
3 files changed, 44 insertions, 0 deletions
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index 394a1aedd..17ee50a8f 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -134,6 +134,12 @@ define BUSYBOX_DISABLE_MMU_APPLETS
endef
endif
+ifeq ($(BR2_INIT_BUSYBOX),y)
+define BUSYBOX_SET_INIT
+ $(call KCONFIG_ENABLE_OPT,CONFIG_INIT,$(BUSYBOX_BUILD_CONFIG))
+endef
+endif
+
define BUSYBOX_INSTALL_LOGGING_SCRIPT
if grep -q CONFIG_SYSLOGD=y $(@D)/.config; then \
[ -f $(TARGET_DIR)/etc/init.d/S01logging ] || \
@@ -168,6 +174,7 @@ define BUSYBOX_CONFIGURE_CMDS
$(BUSYBOX_NETKITTELNET)
$(BUSYBOX_INTERNAL_SHADOW_PASSWORDS)
$(BUSYBOX_DISABLE_MMU_APPLETS)
+ $(BUSYBOX_SET_INIT)
$(BUSYBOX_SET_WATCHDOG)
@yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \
-C $(@D) oldconfig
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index d1f4f2a2c..68d23bae4 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -133,6 +133,10 @@ $(BUILD_DIR)/%/.stamp_images_installed:
# Install to target dir
$(BUILD_DIR)/%/.stamp_target_installed:
@$(call MESSAGE,"Installing to target")
+ $(if $(BR2_INIT_SYSTEMD),\
+ $($(PKG)_INSTALL_INIT_SYSTEMD))
+ $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\
+ $($(PKG)_INSTALL_INIT_SYSV))
$($(PKG)_INSTALL_TARGET_CMDS)
$(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))
$(Q)touch $@
@@ -151,6 +155,10 @@ $(BUILD_DIR)/%/.stamp_uninstalled:
rm -f $($(PKG)_TARGET_INSTALL_TARGET)
$($(PKG)_UNINSTALL_STAGING_CMDS)
$($(PKG)_UNINSTALL_TARGET_CMDS)
+ $(if $(BR2_INIT_SYSTEMD),\
+ $($(PKG)_UNINSTALL_INIT_SYSTEMD))
+ $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\
+ $($(PKG)_UNINSTALL_INIT_SYSV))
# Remove package sources
$(BUILD_DIR)/%/.stamp_dircleaned:
diff --git a/target/generic/Config.in b/target/generic/Config.in
index 88f0718e2..a83ba442c 100644
--- a/target/generic/Config.in
+++ b/target/generic/Config.in
@@ -37,6 +37,35 @@ comment "udev requires a toolchain with LARGEFILE + WCHAR support"
endchoice
+choice
+ prompt "Init system"
+ default BR2_INIT_BUSYBOX
+
+config BR2_INIT_BUSYBOX
+ bool "Busybox"
+ select BR2_PACKAGE_BUSYBOX
+
+config BR2_INIT_SYSV
+ bool "systemV"
+ select BR2_PACKAGE_SYSVINIT
+
+config BR2_INIT_SYSTEMD
+ bool "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
+ select BR2_PACKAGE_DBUS
+ select BR2_PACKAGE_SYSTEMD
+
+comment 'systemd requires largefile, wchar, IPv6, threads and udev support'
+ depends on !(BR2_LARGEFILE && BR2_USE_WCHAR && \
+ BR2_INET_IPV6 && BR2_TOOLCHAIN_HAS_THREADS && \
+ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV)
+
+endchoice
+
config BR2_ROOTFS_DEVICE_TABLE
string "Path to the permission tables"
default "target/generic/device_table.txt"