Я использую следующий Makefile, который должен проверить, находятся ли файлы в каком-то каталоге *.rpm
, если файлы не были найдены, я собираюсь выполнить некоторую команду (запустите скрипт или сделать оборотов в минуту)Makefile не выполняет команды как ожидалось
Вот отрывок из моего 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)"
И вот 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
Так пр oblem, когда он достигает выполнения exec_recipe.mk
, он дает мне некоторые ошибки:
/bin/bash: eval: line 0: syntax error near unexpected token
|| ' /bin/bash: eval: line 0:
|| '
Я уверен, что я делаю что-то неправильно .. мне нужен помощник сделать файл, потому что я использую его для других целей, а
Возможно, вы предлагаете лучшее решение, я хочу проверить, были ли созданы или загружены RPM, если они там не будут, я буду выполнять make rpm моего кода или любой инструмент сборки, который у меня есть, мне нужно execute_recipe.mk, потому что он используется в других местах, я мог бы даже использовать 'test -n $ (find path -name '* .rpm' -print -quit)' – user3502786
. Я не понимаю ваш комментарий здесь. Я объяснил, что было не так в вашем make-файле, в моем ответе. Если вы решите, что это может сработать (я сам не пробовал, поэтому не могу быть уверен). Я бы этого не сделал, но вы этого не спрашивали. Если вы сделаете исправление, как я предложил, и это не устраняет проблему, тогда вы должны отредактировать свой вопрос, чтобы описать новую проблему, или задать новый вопрос. – MadScientist