ACCUMULO-4399 Handle files w/ spaces in Makefile Add quotes and escaping, as needed, to ensure paths with spaces and parentheses are handled properly.
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/fc9bd071 Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/fc9bd071 Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/fc9bd071 Branch: refs/heads/1.8 Commit: fc9bd0719518e7822f84472e495e1ef96f58d836 Parents: d79776d Author: Christopher Tubbs <ctubb...@apache.org> Authored: Wed Aug 10 15:54:32 2016 -0400 Committer: Christopher Tubbs <ctubb...@apache.org> Committed: Wed Aug 10 16:07:24 2016 -0400 ---------------------------------------------------------------------- server/native/src/main/resources/Makefile | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/fc9bd071/server/native/src/main/resources/Makefile ---------------------------------------------------------------------- diff --git a/server/native/src/main/resources/Makefile b/server/native/src/main/resources/Makefile index 9ffeefe..1e26303 100644 --- a/server/native/src/main/resources/Makefile +++ b/server/native/src/main/resources/Makefile @@ -23,10 +23,10 @@ USERFLAGS=$(shell env | grep "^USERFLAGS=" | cut -d= -f2) ifeq ($(shell uname),Linux) JAVA_HOME=$(shell env | grep "^JAVA_HOME=" | cut -d= -f2) ifeq ($(strip $(JAVA_HOME)),) - JAVA_HOME=$(shell dirname $$(dirname $$(readlink -ef $$(which javah)))) + JAVA_HOME=$(shell dirname "$$(dirname "$$(readlink -e "$$(which javah)")")") endif NATIVE_LIB := libaccumulo.so - CXXFLAGS=-g -fPIC -shared -O3 -Wall -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -Ijavah $(USERFLAGS) + CXXFLAGS=-g -fPIC -shared -O3 -Wall -I'$(JAVA_HOME)'/include -I'$(JAVA_HOME)'/include/linux -Ijavah $(USERFLAGS) endif ifeq ($(shell uname),Darwin) @@ -38,10 +38,12 @@ ifeq ($(shell uname),Darwin) ifneq (,$(findstring 10.9,$(shell sw_vers -productVersion))) MAVERICKFLAGS=-stdlib=libstdc++ endif - CXXFLAGS=-dynamiclib -undefined dynamic_lookup -O3 -I/System/Library/Frameworks/JavaVM.framework/Headers -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -Ijavah $(USERFLAGS) $(MAVERICK_FLAGS) + CXXFLAGS=-dynamiclib -undefined dynamic_lookup -O3 -I/System/Library/Frameworks/JavaVM.framework/Headers -I'$(JAVA_HOME)'/include -I'$(JAVA_HOME)'/include/darwin -Ijavah $(USERFLAGS) $(MAVERICK_FLAGS) endif -ifeq (,$(wildcard $(JAVA_HOME)/bin/javah)) +# escape space and parens in path for wildcard +JAVA_HOME_ESCAPED=$(shell echo '$(JAVA_HOME)' | sed 's/ /\\ /g' | sed 's/\([()]\)/\\\1/g') +ifeq (,$(wildcard $(JAVA_HOME_ESCAPED)/bin/javah)) $(error "JAVA_HOME does not point to a JDK. Exiting...") endif @@ -53,11 +55,12 @@ $(NATIVE_LIB) : $(SRCS) $(HDRS) test : $(NATIVE_LIB) testJavaHome runTests testJavaHome : - @echo JAVA_HOME is $(JAVA_HOME) + @echo 'JAVA_HOME is $(JAVA_HOME)' -runTests : $(NATIVE_LIB) $(TESTSRCS) - $(CXX) -g -Wall -I/System/Library/Frameworks/JavaVM.framework/Headers -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -I$(JAVA_HOME)/include/darwin -InativeMap -o $@ $(TESTSRCS) $(NATIVE_LIB) $(MAVERICK_FLAGS) +runTests : $(NATIVE_LIB) $(TESTSRCS) $(OUTPUT_DIR) + $(CXX) -g -Wall -I/System/Library/Frameworks/JavaVM.framework/Headers -I'$(JAVA_HOME)'/include -I'$(JAVA_HOME)'/include/linux -I'$(JAVA_HOME)'/include/darwin -InativeMap -o $@ $(TESTSRCS) $(NATIVE_LIB) $(MAVERICK_FLAGS) LD_LIBRARY_PATH=./ ./$@ 20 20 20 20 20 20 20 20 true + if [ ! -z "$(OUTPUT_DIR)" ]; then cp '$(NATIVE_LIB)' "$(OUTPUT_DIR)"; fi clean : - rm -f $(NATIVE_LIB) runTests + rm -f '$(NATIVE_LIB)' runTests