Arris
@Arris
Сапиенсы учатся, играя.

[SOLVED] Makefile + чтение значения переменной из консоли + dch — как это сделать?

В силу сложившихся традиций активно используем на работе make-файлы. И для нормальной сборки DEB-пакетов, и для упрощения часто используемых операций. И если с простыми рецептами все хорошо:

build:		##@build Build project to DEB Package
	@echo Building project to DEB-package
	export COMPOSER_HOME=/tmp/ && dpkg-buildpackage -rfakeroot --no-sign


То вот с этим рецептом - как рыба об лёд:
dchv:		##@development Append release
	export DEBEMAIL="arris@example.com" && \
	export DEBFULLNAME="Arris" && \
	export VERSION=$(shell read -p "Version: ";echo $$REPLY) && \
	dch -v $(VERSION)


Что хочется? Хочется запускать `make dchv`, вводить в консоли номер версии и получать запуск `dch -v 1.3.4`
Отмечу: номер версии может быть любым, вплоть до 15.5.11+fix35

Как это сделать?

P.S. Как вариант, подойдет `make dchv 1.3.4` , но научить makefile такое делать - лютый геморрой :(
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
dch -v $$VERSION
должно работать.
Потому что
export VERSION=$(shell read -p "Version: ";echo $$REPLY)
экспортирует переменную внутри shell, а $(VERSION) ссылается на переменную make а не на переменную shell.

Как вариант, подойдет `make dchv 1.3.4` , но научить makefile такое делать - лютый геморрой :(

не нужно этого делать, потому что это "против шерсти". Правильнее было бы сделать так: make dchv VERSION=1.3.4 и выкинуть код по вводу переменной VERSION из правила dchv, т.е. оставить только dch -v $(VERSION)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы