Как взять переменные от другого Make-файла в сценарии оболочки

Никогда не синхронизируйте базу данных, не обновляя Ваши пакеты. Всегда используйте pacman -Syu, иначе можно испытать вид поломки, которую Вы видите.

По существу Вы сказали pacman обновляться, это - список локальных баз данных для определенного пакета и не обновило любой из других пакетов (который может совместно использовать библиотеки), одновременно. Поэтому частичные обновления не поддерживаются.

Можно считать притчу грустного пользователя, который попал в это прерывание для более конкретного примера.

2
29.03.2015, 21:47
3 ответа

Вы можете попытаться извлечь значения с GREP и SED. Например:

filename="$HOME/kernelbuild/linux-3.14.37/Makefile"
version=$(grep -m 1 VERSION $filename | sed 's/^.*= //g')

Это Greps для первого возникновения «версии» в Makefile

2
27.01.2020, 21:51

Если вам нужны просто простые вещи, такие как ваш пример, просто GREP их из визирования.

Для более сложных вещей GNU имеет вариант -P -P , который печатает базу данных после запуска, которая включает в себя все определения переменной (и намного больше). Вы можете использовать его вместе с -N , что вызывает действия, которые на самом деле не выполняется (поэтому ничего не создается). Вы можете GREP VREP Переменные из -P вывод.

4
27.01.2020, 21:51

Сделать может прочитать makefile из stdin, чтобы вы могли дать ему документ , который является Makefile. Ниже приведен makefile, который включает в себя Makefile Chernel и добавляет новую цель подстановки, %. Var , чья рецепт будет выводить значение данной переменной. (Это предполагает, что у вас нет файлов или других целей, которые заканчиваются .var , конечно).

showvar() {
make -f - ${1}.var <<'EOF'
include $(HOME)/kernelbuild/linux-3.14.37/Makefile

%.var:
    @echo $($*)
EOF
}

my_version=$(showvar VERSION)
patchlevel=$(showvar PATCHLEVEL)
the_sublevel=$(showvar SUBLEVEL)

Сделать заменить $ * с стеблем %. Var Цель.

Линия рецепта @echo начинается с фактической вкладки .

2
27.01.2020, 21:51

Теги

Похожие вопросы