Цель Makefile не распознает действие зависимости - PullRequest
0 голосов
/ 15 января 2020

Я написал этот простой Makefile, чтобы проиллюстрировать мою проблему.

$make target
  • вызывает dep как зависимость и извлекает изображение
  • Но последующее проверка на docker image list -q $(IMG) не находит мое изображение.

Что здесь происходит и как мне это исправить?


IMG := hello-world

.PHONY: target
target: dep
ifeq ($(shell docker image list -q $(IMG)),)
        echo "docker image list did not recognize the pull"
endif

.PHONY: dep
dep:
        @docker pull $(IMG)

1 Ответ

1 голос
/ 15 января 2020

Этот тест не последующий . подставляется в Makefile при его чтении до выполнения каких-либо правил.

Возможно, вы захотите выполнить этот тест в командах правила target:

target: dep
        if test -z "$$(docker image list -q $(IMG))"; then \
            echo "docker image list did not recognize the pull" >&2; \
            false; \
        fi

Мы могли бы изменить команду, просто запустив docker image inspect - которая вернет истинное состояние, если изображение существует, и ложь в противном случае:

target: dep
        if ! docker image inspect "$(IMG))" >/dev/null 2>&1; then \
            echo "docker image list did not recognize the pull" >&2; \
            false; \
        fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...