Replace echo with printf, do not use heredoc with sftp since some shell don't understand it

This commit is contained in:
Samuel Aubertin 2022-01-29 13:28:10 +01:00
parent 334324466b
commit 9dc0135e68

View File

@ -16,7 +16,14 @@
.PHONY: clean build upload .PHONY: clean build upload
.SILENT: .SILENT:
EXECUTABLES= clang gcc uuid rsync lld taskset
ifeq ($(shell uname),OpenBSD)
GCC:= egcc
else
GCC:= gcc
endif
EXECUTABLES= clang $(GCC) uuid lld taskset
XXXX:= $(foreach exec,$(EXECUTABLES), $(if $(shell which $(exec) 2> /dev/null),X,$(error "No '$(exec)' in PATH, please install it and restart octopus !"))) XXXX:= $(foreach exec,$(EXECUTABLES), $(if $(shell which $(exec) 2> /dev/null),X,$(error "No '$(exec)' in PATH, please install it and restart octopus !")))
### Generic flags ### Generic flags
@ -30,7 +37,7 @@ CFLAGS+= -Wno-missing-field-initializers
LDFLAGS= -fuse-ld=lld LDFLAGS= -fuse-ld=lld
### Octopus flags ### Octopus flags
CCS= clang gcc CCS= clang $(GCC)
OPTIMIZATIONS= 0 1 2 3 fast s OPTIMIZATIONS= 0 1 2 3 fast s
RETPOLINE= mretpoline RETPOLINE= mretpoline
UUID:= $(shell uuid || uuidgen) UUID:= $(shell uuid || uuidgen)
@ -41,7 +48,7 @@ OCTOFLAGS= -j
### Octopus internals ### Octopus internals
CPU:= $(shell LC_ALL=en_US.UTF-8 lscpu | grep "Model name" | cut -d":" -f 2 | sort | uniq | awk '{$$1=$$1;print}') CPU:= $(shell LC_ALL=en_US.UTF-8 lscpu | grep "Model name" | cut -d":" -f 2 | sort | uniq | awk '{$$1=$$1;print}')
UCODE:= $(shell grep microcode /proc/cpuinfo | sort | uniq | awk '{print $$NF}') UCODE:= $(shell grep microcode /proc/cpuinfo | sort | uniq | awk '{print $$NF}' || printf none)
KERN:= $(shell uname -svm) KERN:= $(shell uname -svm)
CLANGV:= $(shell clang -v 2>&1 | head -n 1) CLANGV:= $(shell clang -v 2>&1 | head -n 1)
GCCV:= $(shell gcc -v 2>&1 | grep 'gcc version') GCCV:= $(shell gcc -v 2>&1 | grep 'gcc version')
@ -108,53 +115,54 @@ PROGS+= $(RGROGS)
PROGS+= $(RSGPROGS) PROGS+= $(RSGPROGS)
all: upload all: upload
echo -e "\033[1mThank you for helping science today !\033[0m" printf "\033[1mThank you for helping science today !\033[0m\n"
upload: $(RESULTS_FILE) upload: $(RESULTS_FILE)
echo -e "\033[4mUploading $^ to www.sk4.nz\033[0m" printf "\033[4mUploading $^ to www.sk4.nz\033[0m\n"
chmod 600 $(SSH_KEY) chmod 600 $(SSH_KEY)
sftp -b - -i $(SSH_KEY) -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ printf 'put $^\n' | sftp -b - -i $(SSH_KEY) \
octoupload@www.sk4.nz: <<< $$'put $^' -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
octoupload@www.sk4.nz:
build: $(PROGS) build: $(PROGS)
$(RESULTS_FILE): build $(RESULTS_FILE): build
echo -e "\033[1m\033[94m________ __"; printf "\033[1m\033[94m________ __\n";
echo "\_____ \ _____/ |_ ____ ______ __ __ ______"; printf "\_____ \ _____/ |_ ____ ______ __ __ ______\n";
echo " / | \_/ ___\ __\/ _ \\____ \| | \/ ___/"; printf " / | \_/ ___\ __\/ _ \\____ \| | \/ ___/\n";
echo "/ | \ \___| | ( <_> ) |_> > | /\___ \ "; printf "/ | \ \___| | ( <_> ) |_> > | /\___ \ \n";
echo "\_______ /\___ >__| \____/| __/|____//____ >"; printf "\_______ /\___ >__| \____/| __/|____//____ >\n";
echo -e " \/ \/ |__| \/\033[0m"; printf " \/ \/ |__| \/\033[0m\n";
echo -e " Samuel AUBERTIN - EURECOM\n" printf " Samuel AUBERTIN - EURECOM\n"
echo -e "\033[4mUUID\033[0m\t\t$(UUID)" printf "\033[4mUUID\033[0m\t\t$(UUID)\n"
echo -e "\033[4mCPU\033[0m\t\t$(CPU)" printf "\033[4mCPU\033[0m\t\t$(CPU)\n"
echo -e "\033[4mMicrocode\033[0m\t$(UCODE)" printf "\033[4mMicrocode\033[0m\t$(UCODE)\n"
echo -e "\033[4mKernel\033[0m\t\t$(KERN)" printf "\033[4mKernel\033[0m\t\t$(KERN)\n"
echo -e "\033[4mClang\033[0m\t\t$(CLANGV)" printf "\033[4mClang\033[0m\t\t$(CLANGV)\n"
echo -e "\033[4mGCC\033[0m\t\t$(GCCV)" printf "\033[4mGCC\033[0m\t\t$(GCCV)\n"
echo -e "\033[4mSpectre v1\033[0m\t$(VULN1)" printf "\033[4mSpectre v1\033[0m\t$(VULN1)\n"
echo -e "\033[4mSpectre v2\033[0m\t$(VULN2)" printf "\033[4mSpectre v2\033[0m\t$(VULN2)\n"
echo -e "{ \"$(UUID)\": {" >> $@ printf "{ \"$(UUID)\": {\n" >> $@
echo -e "\"cpu\": \"$(CPU)\"," >> $@ printf "\"cpu\": \"$(CPU)\",\n" >> $@
echo -e "\"microcode\": \"$(UCODE)\"," >> $@ printf "\"microcode\": \"$(UCODE)\",\n" >> $@
echo -e "\"kernel\": \"$(KERN)\"," >> $@ printf "\"kernel\": \"$(KERN)\",\n" >> $@
echo -e "\"clang\": \"$(CLANGV)\"," >> $@ printf "\"clang\": \"$(CLANGV)\",\n" >> $@
echo -e "\"gcc\": \"$(GCCV)\"," >> $@ printf "\"gcc\": \"$(GCCV)\",\n" >> $@
echo -e "\"spectre_v1\": \"$(VULN1)\"," >> $@ printf "\"spectre_v1\": \"$(VULN1)\",\n" >> $@
echo -e "\"spectre_v2\": \"$(VULN2)\"," >> $@ printf "\"spectre_v2\": \"$(VULN2)\",\n" >> $@
echo -e "\"results\": [" >> $@ printf "\"results\": [\n" >> $@
for p in $(PROGS); do \ for p in $(PROGS); do \
for t in $$(seq $(TIMES)); do \ for t in $$(seq $(TIMES)); do \
sleep 0.1; \ sleep 0.1; \
(taskset 01 ./$$p $(OCTOFLAGS) || printf "{ \"$$p\": false }")>> $@; \ (taskset 01 ./$$p $(OCTOFLAGS) || printf "{ \"$$p\": false }")>> $@; \
if ! [ "$$p" = "$(lastword $(PROGS))" ]; \ if ! [ "$$p" = "$(lastword $(PROGS))" ]; \
then echo ',' >> $@; \ then printf ',\n' >> $@; \
else if ! [ $$t -eq $(TIMES) ]; \ else if ! [ $$t -eq $(TIMES) ]; \
then echo ',' >> $@; fi; \ then printf ',\n' >> $@; fi; \
fi; \ fi; \
done \ done \
done done
echo -e "\n]}}" >> $@ printf "\n]}}\n" >> $@
$(OPROGS): $(OPROGS):
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c @$(PROGRESS) $(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c