From 56afe21ee01c91cfc14dac230eeda13920f285b7 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Fri, 19 Oct 2018 19:23:43 +0000 Subject: [PATCH] install-files.mk: Fix installation of filenames with whitespace Signed-off-by: Jan Lindemann --- make/install-files.mk | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/make/install-files.mk b/make/install-files.mk index 44a1b923..3b7a1709 100644 --- a/make/install-files.mk +++ b/make/install-files.mk @@ -3,7 +3,7 @@ TARGET_DIR ?= $(PREFIX)/share SOURCE_BASE ?= . -RELPATHS = $(foreach f,$(SOURCE_FILES),$(shell realpath -s --relative-to $(SOURCE_BASE) $f)) +RELPATHS = $(foreach f,$(SOURCE_FILES),$(shell realpath -s --relative-to "$(SOURCE_BASE)" "$f")) INSTALLED_FILES = $(addprefix $(TARGET_DIR)/,$(RELPATHS)) include $(MODDIR)/make/defs.mk @@ -28,12 +28,12 @@ done.clean: $(RM) -f *.done $(TARGET_DIR)/%: $(SOURCE_BASE)/% - @if [ -d $< ]; then \ - echo $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $@ ;\ - $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $@ ;\ + @if [ -d "$<" ]; then \ + echo $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) "$@" ;\ + $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) "$@" ;\ else \ - echo $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $< $@ ;\ - $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $< $@ ;\ + echo $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\ + $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\ fi install.done: $(INSTALLED_FILES) @@ -42,11 +42,11 @@ install.done: $(INSTALLED_FILES) # this used to work fine until an enormous $(SOURCE_FILES) was encountered install-old.done: for f in $(SOURCE_FILES); do \ - relpath=`realpath -s --relative-to $(SOURCE_BASE) $$f` ;\ - if [ -d $$f ]; then \ - $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $(TARGET_DIR)/$$relpath ;\ + relpath=`realpath -s --relative-to "$(SOURCE_BASE)" "$$f"` ;\ + if [ -d "$$f" ]; then \ + $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) "$(TARGET_DIR)/$$relpath" ;\ else \ - $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $$f $(TARGET_DIR)/$$relpath ;\ + $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$$f" "$(TARGET_DIR)/$$relpath" ;\ fi ;\ done touch $@