Ich verwende das folgende Makefile, das überprüfen sollte, ob sich die Dateien in einem Verzeichnis befinden *.rpm
, wenn die Dateien nicht gefunden wurden, werde ich einen Befehl ausführen (ein Skript ausführen oder die Drehzahl machen)Makefile führt die Befehle nicht wie erwartet aus
hier ist ein Ausschnitt aus meinem Makefile
include /home/user/workspace/test/exec_recipe.mk
export BUILD_LOGS_DIR = $(CURDIR)/build_logs
.PHONY: my_rpm
libpdutil_rpm:
@echo "Making target 'libpdutil_rpm'. Time: $$(date +%T)"
cd /home/user/workspace/test/build/test && $(call exec_recipe,$(ls /home/user/workspace/test/build/test/rpmbuild/RPMS/x86_64d/*.rpm) || $(./test.sh),test.log,)
@echo "Finished making target 'my_rpm'. Time: $$(date +%T)"
und hier ist die exec_recipe.mk
SHELL:=/bin/bash
exec_recipe = \
echo "The logs dir is: $$BUILD_LOGS_DIR"; \
log_name="$(2)"; \
echo "The log name is $$log_name"; \
cmd="$(1)"; \
eval "$$cmd" 2>&1 | tee -a "$$BUILD_LOGS_DIR/$$log_name"; rc="$${PIPESTATUS[0]}"; \
if [ $$rc = 0 ]; then \
res="PASS"; \
else \
res="FAIL"; \
fi; \
flock $(SUMMARY) echo "Making target '[email protected]': $$res" >> $(SUMMARY); \
exit $$rc
So ist die pr Problem ist, wenn es die Ausführung der exec_recipe.mk
erreicht, die mir einige Fehler gibt:
/bin/bash: eval: line 0: syntax error near unexpected token
|| ' /bin/bash: eval: line 0:
|| '
Ich bin sicher, dass ich etwas falsch tue .. Ich brauche die Helfer-Datei machen, weil ich es für andere Zwecke verwendet werde auch
Vielleicht schlagen Sie eine bessere Lösung vor, ich möchte überprüfen, ob die RPMs gebaut oder heruntergeladen wurden, wenn sie nicht da sind, werde ich die make rpm meines Codes ausführen, oder jedes Build-Tool, das ich habe, brauche ich execute_recipe.mk, da es an anderen Stellen benutzt wird, könnte ich sogar einen 'test -n $ (find Pfad-Name' * .rpm '-print -quit) ' – user3502786
verwenden. Ich verstehe deinen Kommentar hier nicht. Ich habe in meiner Antwort erklärt, was in deinem Makefile falsch war. Wenn Sie das beheben, kann es funktionieren (ich habe es nicht selbst versucht, also kann ich nicht sicher sein). So hätte ich es nicht gemacht, aber das hast du nicht gefragt. Wenn Sie das Problem beheben, wie ich es vorgeschlagen habe, und das Problem nicht beheben kann, sollten Sie Ihre Frage bearbeiten, um das neue Problem zu beschreiben, oder eine neue Frage stellen. – MadScientist