skeleton-custom: install /bin, /lib, and /sbin
authorCarlos Santos <casantos@datacom.ind.br>
Mon, 7 May 2018 14:44:28 +0000 (11:44 -0300)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Wed, 6 Feb 2019 16:03:43 +0000 (17:03 +0100)
skeleton-custom does not install the required /bin, /lib and /sbin
directories (or symlinks), which may result in an imcomplete tree, The
user could add the required directories/symlinks to the skeleton but
they may be invalid, depending on the state of BR2_ROOTFS_MERGED_USR.

Steps to reproduce:

- Enable BR2_ROOTFS_MERGED_USR and BR2_INIT_SYSTEMD
- Set BR2_ROOTFS_SKELETON_CUSTOM_PATH to "system/skeleton"
- Run "make skeleton"
- target/{bin.lib,sbin} will not exist

Add calls to SYSTEM_USR_SYMLINKS_OR_DIRS to INSTALL_TARGET_CMDS and
INSTALL_STAGING_CMDS, so the required directories or symlinks are
created.

Add a paragraph to the documentation clarifying that custom skeletons
don't need to contain /bin, /lib or /sbin and must not contain them when
BR2_ROOTFS_MERGED_USR is enabled.

Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
docs/manual/customize-rootfs.txt
package/skeleton-custom/skeleton-custom.mk

index 44fc4606703b633fbb4c13dc113792e6a7886643..9d3a62ddaf6fe60127feebef4763859fd1ce60f9 100644 (file)
@@ -100,6 +100,15 @@ To enable this feature, enable config option
   +System configuration+ menu. If you specify a relative path, it will
   be relative to the root of the Buildroot tree.
 +
+Custom skeletons don't need to contain the '/bin', '/lib' or '/sbin'
+  directories, since they are created automatically during the build.
+  When +BR2_ROOTFS_MERGED_USR+ is enabled, then the custom skeleton must
+  not contain the '/bin', '/lib' or '/sbin' directories, as Buildroot
+  will create them as symbolic links to the relevant folders in '/usr'.
+  In such a situation, should the skeleton have any programs or
+  libraries, they should be placed in '/usr/bin', '/usr/sbin' and
+  '/usr/lib'.
++
 This method is not recommended because it duplicates the entire
   skeleton, which prevents taking advantage of the fixes or improvements
   brought to the default skeleton in later Buildroot releases.
index 6301bc1b911ddbcd4caac44fac632d46b0e1cd04..b05c834b94fa5da7f5aa044554d85dee8af6c6e4 100644 (file)
@@ -42,6 +42,7 @@ endif
 # things we customise in the custom skeleton.
 define SKELETON_CUSTOM_INSTALL_TARGET_CMDS
        $(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(TARGET_DIR))
+       $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR))
        $(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR))
        $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
                $(TARGET_DIR_WARNING_FILE)
@@ -53,6 +54,7 @@ endef
 # skeleton to staging.
 define SKELETON_CUSTOM_INSTALL_STAGING_CMDS
        $(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(STAGING_DIR))
+       $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR))
        $(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR))
 endef