2016-05-25 8 views
0

ファイルが見つからない場合、ファイルがあるディレクトリにあるかどうかを確認する必要がある次のMakefileを使用しています。コマンドを実行しようとしていますまたは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 

PRます)回転数を作りますoblemは、それが私にいくつかのエラーを与えるexec_recipe.mkの実行に達しているときです:

/bin/bash: eval: line 0: syntax error near unexpected token || ' /bin/bash: eval: line 0: || 「私は私が何か間違ったことをやっていることを確信している

... 私はヘルパーを必要とするファイルを作成し、私は他の目的のためにそれを使用していますので、同様

答えて

2

あなたはすべてドルをエスケープする必要がありますあなたはmakeが解釈したくないという兆候を示します。あなたは$(call exec_recipe,...)に引数でドル記号をエスケープするために忘れてしまった:

 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,) 

私は、最終的なコンマがためのものですが、何かわからないんだけど。

+0

RPMがビルドされているか、ダウンロードされているかどうかを確認したいのですが、そこにいなければ自分のコードのrpmを実行します。 execute_recipe.mkは他の場所で使用されているため、 'test -n $(パス名の検索* -rpm '-print -quit)'を使用することもできます。 – user3502786

+0

私はここであなたのコメントを理解していません。あなたのメイクファイルに何が間違っているのか、私の答えで説明しました。あなたはそれが動作する可能性があることを修正した場合(私は自分でそれを試していないので、私は確信できません)。私のやり方ではありませんが、あなたはそれを求めませんでした。私が示唆したように修正プログラムを作成しても問題は解決しない場合は、新しい問題を説明するために質問を編集するか、新しい質問をする必要があります。 – MadScientist

関連する問題