diff options
author | Carlos Santos <casantos@datacom.ind.br> | 2018-05-07 11:44:30 -0300 |
---|---|---|
committer | Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> | 2019-02-06 17:11:02 +0100 |
commit | 0c96bda11eb26ada660dcd31843fbc9523be6062 (patch) | |
tree | f1d3c9f7d72c36ffea52475dd24996ff6b9a7ff4 | |
parent | dc7c6487cff0a418a6605060670571ea9111050a (diff) | |
download | buildroot-0c96bda11eb26ada660dcd31843fbc9523be6062.tar.gz buildroot-0c96bda11eb26ada660dcd31843fbc9523be6062.zip |
Makefile: allow rootfs overlays to override symbolic links
Since commit 0db34529f48 we use rsync with the --keep-dirlinks option to
prevent overlays from accidentally overwriding /{usr,bin,sbin,lib} links
when BR2_ROOTFS_MERGED_USR option is enabled. Unfortunately this also
prevents replacing a symlink by a directory on purpose (e.g. /var/log,
to persist system logs).
Steps to reproduce:
- enable BR2_ROOTFS_MERGED_USR and BR2_PACKAGE_SKELETON_INIT_SYSV
- mkdir some_path/rootfs-overlay/var/log
- enable BR2_ROOTFS_OVERLAY="some_path/rootfs-overlay"
- run 'make'
- 'target/var/log' is still a symlink to '../tmp', not a directory
The --keep-dirlinks option can be dropped, since we run sanity checks
on overlays. Now the rsync invocation is identical to the SYSTEM_RSYNC
logic we have in system/system.mk, so use that variable.
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
-rw-r--r-- | Makefile | 4 |
1 files changed, 1 insertions, 3 deletions
@@ -800,9 +800,7 @@ endif # merged /usr @$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \ $(call MESSAGE,"Copying overlay $(d)"); \ - rsync -a --ignore-times --keep-dirlinks $(RSYNC_VCS_EXCLUSIONS) \ - --chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \ - $(d)/ $(TARGET_DIR)$(sep)) + $(call SYSTEM_RSYNC,$(d),$(TARGET_DIR))$(sep)) @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ $(call MESSAGE,"Executing post-build script $(s)"); \ |