summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package/eudev/eudev.mk6
-rw-r--r--package/skeleton/skeleton.mk20
-rw-r--r--package/systemd/systemd.mk2
-rw-r--r--system/Config.in17
-rw-r--r--system/skeleton/bin/.empty0
-rw-r--r--system/skeleton/lib/.empty0
-rw-r--r--system/skeleton/sbin/.empty0
7 files changed, 38 insertions, 7 deletions
diff --git a/package/eudev/eudev.mk b/package/eudev/eudev.mk
index 1aa74b373..a005f45de 100644
--- a/package/eudev/eudev.mk
+++ b/package/eudev/eudev.mk
@@ -22,16 +22,18 @@ EUDEV_CONF_ENV += LIBS=-lrt
EUDEV_CONF_OPTS = \
--disable-manpages \
--sbindir=/sbin \
- --with-rootlibdir=/lib \
--libexecdir=/lib \
--with-firmware-path=/lib/firmware \
--disable-introspection \
- --enable-split-usr \
--enable-libkmod
EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod
EUDEV_PROVIDES = udev
+ifeq ($(BR2_ROOTFS_MERGED_USR),)
+EUDEV_CONF_OPTS += --with-rootlibdir=/lib --enable-split-usr
+endif
+
ifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y)
EUDEV_CONF_OPTS += --enable-rule_generator
endif
diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk
index 48e708515..920d3b42d 100644
--- a/package/skeleton/skeleton.mk
+++ b/package/skeleton/skeleton.mk
@@ -19,15 +19,29 @@ else
SKELETON_PATH = system/skeleton
endif
+ifeq ($(BR2_ROOTFS_MERGED_USR),y)
+define SKELETON_USR_SYMLINKS_OR_DIRS
+ ln -snf usr/bin $(TARGET_DIR)/bin
+ ln -snf usr/sbin $(TARGET_DIR)/sbin
+ ln -snf usr/lib $(TARGET_DIR)/lib
+endef
+else
+define SKELETON_USR_SYMLINKS_OR_DIRS
+ $(INSTALL) -d -m 0755 $(TARGET_DIR)/bin
+ $(INSTALL) -d -m 0755 $(TARGET_DIR)/sbin
+ $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib
+endef
+endif
+
define SKELETON_INSTALL_TARGET_CMDS
rsync -a --ignore-times $(SYNC_VCS_EXCLUSIONS) \
--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \
$(SKELETON_PATH)/ $(TARGET_DIR)/
- $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
- $(TARGET_DIR_WARNING_FILE)
+ $(SKELETON_USR_SYMLINKS_OR_DIRS)
ln -snf lib $(TARGET_DIR)/$(LIB_SYMLINK)
- mkdir -p $(TARGET_DIR)/usr
ln -snf lib $(TARGET_DIR)/usr/$(LIB_SYMLINK)
+ $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
+ $(TARGET_DIR_WARNING_FILE)
endef
SKELETON_TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
index 6b9ce3fe2..2e974fa3b 100644
--- a/package/systemd/systemd.mk
+++ b/package/systemd/systemd.mk
@@ -27,7 +27,6 @@ endif
SYSTEMD_CONF_OPTS += \
--with-rootprefix= \
- --with-rootlibdir=/lib \
--enable-static=no \
--disable-manpages \
--disable-selinux \
@@ -36,7 +35,6 @@ SYSTEMD_CONF_OPTS += \
--with-dbuspolicydir=/etc/dbus-1/system.d \
--with-dbussessionservicedir=/usr/share/dbus-1/services \
--with-dbussystemservicedir=/usr/share/dbus-1/system-services \
- --enable-split-usr \
--disable-efi \
--disable-gnuefi \
--disable-tests \
diff --git a/system/Config.in b/system/Config.in
index 6afe8962d..4d070103f 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -78,6 +78,10 @@ config BR2_INIT_SYSV
select BR2_PACKAGE_INITSCRIPTS
select BR2_PACKAGE_SYSVINIT
+# In Buildroot, we decided not to support a split-usr when systemd is
+# used as an init system. This is a design decision, not a systemd
+# issue. Thus the select is with BR2_INIT_SYSTEMD (below) rather than
+# with BR2_PACKAGE_SYSTEMD.
config BR2_INIT_SYSTEMD
bool "systemd"
depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
@@ -88,6 +92,7 @@ config BR2_INIT_SYSTEMD
depends on BR2_USE_MMU
depends on !BR2_STATIC_LIBS
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
+ select BR2_ROOTFS_MERGED_USR
select BR2_PACKAGE_SYSTEMD
comment "systemd needs (e)glibc toolchain, headers >= 3.10"
@@ -178,6 +183,18 @@ endif
if BR2_ROOTFS_SKELETON_DEFAULT
+config BR2_ROOTFS_MERGED_USR
+ bool "Use symlinks to /usr for /bin, /sbin and /lib"
+ help
+ If you say 'n' here, then /bin, /sbin and /lib and their
+ counterparts in /usr will be separate directories. This
+ is the historical UNIX way. In this case, /usr can be a
+ filesystem on a partition separate from / .
+
+ If you say 'y' here, then /bin, /sbin and /lib will be symlinks
+ to their counterparts in /usr. In this case, /usr can not be a
+ separate filesystem.
+
config BR2_TARGET_ENABLE_ROOT_LOGIN
bool "Enable root login with password"
default y
diff --git a/system/skeleton/bin/.empty b/system/skeleton/bin/.empty
deleted file mode 100644
index e69de29bb..000000000
--- a/system/skeleton/bin/.empty
+++ /dev/null
diff --git a/system/skeleton/lib/.empty b/system/skeleton/lib/.empty
deleted file mode 100644
index e69de29bb..000000000
--- a/system/skeleton/lib/.empty
+++ /dev/null
diff --git a/system/skeleton/sbin/.empty b/system/skeleton/sbin/.empty
deleted file mode 100644
index e69de29bb..000000000
--- a/system/skeleton/sbin/.empty
+++ /dev/null