git 不要在linux内核版本中添加“+”

vojdkbi0  于 2022-12-02  发布在  Git
关注(0)|答案(5)|浏览(194)

我正在构建linux内核,如果我的内核在git下,那么每次内核版本是:

Image Name:   Linux-2.6.39+

如果我没有使用git,那么一切都是OK的,没有任何加号在结束。
我知道这是由scripts/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

因此,是否可以在不更改代码的情况下构建系统,而无需在版本行末尾添加“+”?

qco9c6ql

qco9c6ql1#

版本字符串末尾的加号表示内核是从修改过的源代码构建的(也就是说,存在未提交的更改)。scripts/setlocalversion中的注解也表明了这一点。
要避免在工作目录已修改的情况下附加'+',只需在运行make时显式设置LOCALVERSION:

make LOCALVERSION=

您可能还需要在构建以下内容之前,在内核配置(.config)中将配置选项CONFIG_LOCALVERSION_AUTO更改为n

sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" .config
vc6uscn9

vc6uscn92#

要防止脚本scripts/setlocalversion+附加到内核本地版本的末尾,请在内核源代码的根目录中创建一个空的.scmversion文件。

touch .scmversion

这样,您就可以在内核配置文件中保留LOCALVERSION,以防您想将本地签名附加到内核名称。

x8diyxa7

x8diyxa73#

操作脚本/setlocalversion似乎是我唯一的方法。在scm_version()中强制返回:

scm_version()
{
        local short
        short=false
        **return**
u5rb5r59

u5rb5r594#

如果您使用yocto和imxsoc,请将这一行添加到您的local.conf中

SCMVERSION_pn-linux-imx = ""

在imx-4.9.88-2.0.0_ga发布版本上进行测试

piok6c0g

piok6c0g5#

只需在scripts/setlocalversion中将该行注解为变通方法/quickfix。那么内核版本应该与“make kernelversion”相同。

# Check for git and a git repo.
        if test -z "$(git rev-parse --show-cdup 2>/dev/null)" &&
           head=$(git rev-parse --verify HEAD 2>/dev/null); then

                # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
                # it, because this version is defined in the top level Makefile.
                if [ -z "$(git describe --exact-match 2>/dev/null)" ]; then

                        # If only the short version is requested, don't bother
                        # running further git commands
                        if $short; then
                                #echo "+" #comment this line
                                return
                        fi

相关问题