Не добавляйте "+" в версию ядра Linux
Я создаю linux-ядро, если мое ядро под git, а затем версия ядра каждый раз:
Image Name: Linux-2.6.39+
Если я не использую git, тогда все в порядке, без какого-либо плюса в конце.
Я знаю, что это сделано скриптом /setlocalversion:
if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
# full scm version string
res="$res$(scm_version)"
else
# append a plus sign if the repository is not in a clean
# annotated or signed tagged state (as git describe only
# looks at signed or annotated tags - git tag -a/-s) and
# LOCALVERSION= is not specified
if test "${LOCALVERSION+set}" != "set"; then
scm=$(scm_version --short)
res="$res${scm:++}"
fi
fi
Итак, можно ли без изменений кода сказать, что система сборки не нуждается в добавлении "+" в конце строки версии?
Ответы
Ответ 1
Знак плюса в конце строки версии есть как индикатор того, что ядро было построено из измененных источников (т.е. Были некорректные изменения). Это также указывается в комментариях в scripts/setlocalversion
.
Чтобы избежать добавления "+", несмотря на наличие грязной рабочей директории, просто установите LOCALVERSION при запуске make
:
make LOCALVERSION=
Возможно, вам также придется изменить конфигурационный параметр CONFIG_LOCALVERSION_AUTO
на n
в конфигурации вашего ядра (.config
) перед созданием:
sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" .config
Ответ 2
Чтобы сценарии scripts/setlocalversion
добавляли +
в конец локальной версии ядра, создайте пустой файл .scmversion
в корне источника ядра.
touch .scmversion
таким образом, вы сможете оставить LOCALVERSION как есть в файле конфигурации ядра, если вы хотите добавить локальную подпись к имени ядра.
Ответ 3
Манипулирование скриптами /setlocalversion кажется единственным способом для меня. Возврат силы в scm_version()
:
scm_version()
{
local short
short=false
**return**