diff mbox

[5/5] system: use backtick instead of $(shell ...) make function

Message ID 1436711730-20599-5-git-send-email-arnout@mind.be
State Accepted
Headers show

Commit Message

Arnout Vandecappelle July 12, 2015, 2:35 p.m. UTC
Only the instance for setting the root password is changed. The
instance in SYSTEM_GETTY is harmless since it just uses echo and tail.

If TARGET_GENERIC_ROOT_PASSWD is passed as a hashed password by the
user, it contains $, so the '-quotes are needed. If it is not, we need
the backtick to be expanded so "-quotes are needed. Therefore, the
quoting is moved to the definition of SYSTEM_ROOT_PASSWORD.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
This one is a bit complicated so could perhaps also be dropped. It is
only useful for printvars, not for per-package staging.
---
 system/system.mk | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
diff mbox

Patch

diff --git a/system/system.mk b/system/system.mk
index 2794667..a85678f 100644
--- a/system/system.mk
+++ b/system/system.mk
@@ -69,19 +69,17 @@  ifeq ($(BR2_TARGET_ENABLE_ROOT_LOGIN),y)
 ifeq ($(TARGET_GENERIC_ROOT_PASSWD),)
 SYSTEM_ROOT_PASSWORD =
 else ifneq ($(filter $$1$$% $$5$$% $$6$$%,$(TARGET_GENERIC_ROOT_PASSWD)),)
-SYSTEM_ROOT_PASSWORD = $(TARGET_GENERIC_ROOT_PASSWD)
+SYSTEM_ROOT_PASSWORD = '$(TARGET_GENERIC_ROOT_PASSWD)'
 else
 PACKAGES += host-mkpasswd
-# This variable will only be evaluated in the finalize stage, so we can
-# be sure that host-mkpasswd will have already been built by that time.
-SYSTEM_ROOT_PASSWORD = $(shell $(MKPASSWD) -m "$(TARGET_GENERIC_PASSWD_METHOD)" "$(TARGET_GENERIC_ROOT_PASSWD)")
+SYSTEM_ROOT_PASSWORD = "`$(MKPASSWD) -m "$(TARGET_GENERIC_PASSWD_METHOD)" "$(TARGET_GENERIC_ROOT_PASSWD)"`"
 endif
 else # !BR2_TARGET_ENABLE_ROOT_LOGIN
-SYSTEM_ROOT_PASSWORD = *
+SYSTEM_ROOT_PASSWORD = "*"
 endif
 
 define SYSTEM_SET_ROOT_PASSWD
-	$(SED) 's,^root:[^:]*:,root:$(SYSTEM_ROOT_PASSWORD):,' $(TARGET_DIR)/etc/shadow
+	$(SED) s,^root:[^:]*:,root:$(SYSTEM_ROOT_PASSWORD):, $(TARGET_DIR)/etc/shadow
 endef
 TARGET_FINALIZE_HOOKS += SYSTEM_SET_ROOT_PASSWD